No conozco todas tus limitaciones, es decir, cuántos bytes te atreves a enviar si te preocupan algunos otros El dispositivo SPI está presente en su lugar o lo que sea, pero asumiendo que estás dispuesto a hacer algo de comunicación [SPI, no necesariamente RF] y que eres usuario exclusivo de ese dispositivo SPI seleccionado, parece que hay un montón de maneras de abordar esto:
- si sabes que la radio se ha apagado por defecto, comprueba que RX_ADDR_P0 es 0xE7E7E7E7. No descarta completamente el ruido, y son unos cuantos bytes más que comprobar, por ejemplo, el byte RF_SETUP, pero parece una apuesta decente.
- si te va bien escribiendo en el dispositivo, pon RX_ADDR_P0 a algún valor de señal improbable o aleatorio codificado, y mira si te devuelve la lectura correctamente. Lo mismo con cualquier otra configuración (SETUP_RETR parece un buen candidato para un valor de un solo byte).
Ninguno de estos confirmará que otros pines han sido conectados para eso probablemente necesitarás intentar un envío ACK'ed donde probablemente fallará (y por lo tanto tu pin CE si está conectado debería causar que el bit de estado MAX_RT se ponga y el pin IRQ sea señalado). Tampoco podrían distinguir de un dispositivo potencialmente similar o lo que sea. Pero sólo para la comprobación del cableado SPI básico, los elementos mencionados anteriormente deberían ser suficientes.
0 votos
¿Se refiere al nRF24L01+? Nadie utiliza ya el nRF24L01, según parece.
2 votos
Entonces supongo que no me llamo nadie. Yo uso unos módulos de dx.com, quizás el chip de esos sea en realidad un 24L01+ o 24L01B, lo comprobaré. ¡Si alguien quiere responder a la pregunta para uno de esos módulos relacionados siéntase libre!
0 votos
@WoutervanOoijen Uno de los módulos nRF24 que compré en eBay era un L01 y no un L01+, pero el vendedor fue lo suficientemente amable como para sustituirlo gratuitamente cuando se lo indiqué. ¿Quieres probarlo? Cuando lo he comprobado ahora mismo, los módulos más baratos son L01, mientras que los más caros son todos L01+ aparentemente.
0 votos
No hace falta que lo intentes, tengo ambos en stock. Pero mi pregunta sigue siendo: ¿hay una manera conveniente para la aplicación para comprobar si el chip está presente? (Para puntos extra: cómo distinguir un L01 de un L01+)
2 votos
Puede utilizar el byte de estado para comprobar la presencia. Cada primer byte que envíes al chip, éste responde con el byte de Estado. Así que puedes enviar un dummy y leer el Status.
0 votos
Efectivamente puedo leer el byte de estado, pero aparte de que los bits más altos son 000 no veo cómo puedo comprobar el valor devuelto para verificar que el chip nRF está presente. El RFM73 utiliza un bit del byte de estado para indicar el banco actual, así que para ese chip puedo comprobar que el comando de cambio de banco conmuta ese bit de estado.
0 votos
Si no utilizas el modo multirreceptor, no necesitas utilizar los Data Pipes. Hay 3 bits en el registro de Estado (RX_P_NO) que puedes usar para detectar si el chip está presente. Esos 3-bits son siempre '1' cuando el FIFO está vacío.
0 votos
Mi código es una librería, por lo que no puedo asumir que no se utilice el Multireceptor. Y la lectura de 3 bits '1' no es mucho de una comprobación (no detectaría un pin miso atascado en 1).