Respuestas de la Radio Nórdica “E”

3

Tengo un módulo de radio nórdico enlace para el cual intento crear un controlador de CA # (el El dispositivo es un Fez Rhino ). He podido iniciar el dispositivo y he podido enviar datos. Sin embargo, no estoy seguro de si el dispositivo está recibiendo la información en el bus SPI. Cada vez que envío un comando por el bus, obtengo una "E" hexadecimal. He estado leyendo la especificación del chip ( NRF24L01 ) tratando de determinar si la respuesta E hexadecimal es normal , un error o es una respuesta no válida para este dispositivo. Todo el código de ejemplo que he encontrado no parece preocuparse por la respuesta del dispositivo, por lo que ni siquiera sé si esperar una respuesta.

Mi pregunta es: ¿Responde el dispositivo cuando se le envían comandos, y si es así, puede indicarme la dirección de esa literatura?

    
pregunta

2 respuestas

2

Un puerto SPI bidireccional siempre envía y recibe datos simultáneamente; los bytes generalmente se envían primero a MSB ( * ), y el maestro no enviará un bit hasta que haya recibido el bit anterior. Por consiguiente, si bien es posible que un esclavo SPI utilice los bits superiores de un byte recibido del maestro para decidir qué enviar en los bits inferiores (#), la mayoría de los escenarios de direccionamiento requieren que el esclavo envíe datos después de que el maestro haya enviado un completa tu direccion. El patrón más común para esto es que el maestro envíe la dirección mientras ignora cualquier dato enviado por el esclavo, y luego que el maestro envíe un byte de datos ficticios por cada byte de datos que desea recibir. Normalmente, el esclavo ignorará los valores de bytes reales enviados por el maestro mientras está enviando datos.

Los chips nórdicos mejoran ligeramente este protocolo; Como el maestro a menudo querrá leer un valor de estado, los chips nórdicos siempre enviarán su estado como el primer byte de una transacción, antes de que descubran lo que realmente quiere el maestro. Si resulta que el maestro estaba interesado en el estado, excelente: obtuvo la información con una transacción en lugar de dos. De lo contrario, el maestro puede ignorar el primer byte devuelto por el nórdico y mirar el segundo.

Por cierto, la documentación nórdica no dice, que yo sepa, lo que contendrá cualquier byte después del segundo byte. Si tuviera mis dominantes, el byte enviado por el maestro después de un comando de lectura especificará una dirección que se usará en caso de que el maestro envíe otro byte, permitiendo que se lean los registros N intercambiando N + 1 bytes; Sin embargo, no tengo idea de lo que realmente hace el chip nórdico.

(*) Algunos microcontroladores permiten que los datos se envíen y reciban LSB primero. Esto puede ser útil para comunicarse con algunos dispositivos serie síncronos existentes que procesan datos de esa manera. Además, en algunos casos puede ser más fácil diseñar dispositivos de E / S como unidades de multiplicación de precisión extendida que envían / reciben datos LSB primero.

(#) No puedo pensar en ningún dispositivo de hardware que implemente tal habilidad, fuera de mis propios diseños de CPLD, pero se puede diseñar un dispositivo para permitir múltiples tipos de lectura de estado con una sola transacción, basada en los bits superiores de Los primeros datos del maestro. Si uno diseñara un chip de estilo nórdico desde cero, por ejemplo, podría tener diecisiete registros de estado de 4 bits diferentes; los cuatro bits superiores del primer byte recibido del esclavo serían el registro de estado primario; los otros cuatro bits serían de un registro de estado seleccionado por los cuatro MSB suministrados por el maestro.

    
respondido por el supercat
0

Toda la información que necesita está en documentación de nRF24L01 . Debería obtener respuestas del chip a través del enlace SPI, ya que la mayoría de los registros son de lectura / escritura. Hay algo incorrecto si obtiene 0x0E para cada registro. Si lee el registro 06, RF_SETUP, directamente después de un restablecimiento, debe obtener 0x0E, pero los otros registros deben devolver valores diferentes. Por ejemplo, el registro 03 debería devolver 0x03, después de un restablecimiento.

He usado el nRF24L01 + con los controladores PIC, sin ningún problema.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas