Editing NRF24L01
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 44: | Line 44: | ||
==Comunicación con el chip== | ==Comunicación con el chip== | ||
− | La comunicación entre MCU y chip nrf24l01 funciona sobre | + | La comunicación entre MCU y chip nrf24l01 funciona sobre SPI. |
− | + | • 0-8Mbps 4-wire SPI serial interface | |
− | + | • 8 bit command set | |
− | + | • Easily configurable register map | |
− | + | • Full three level FIFO for both TX and RX direction | |
Line 65: | Line 65: | ||
* las colas FIFO de transmisión y recepción | * las colas FIFO de transmisión y recepción | ||
− | Los mensajes a enviar son de este tipo: | + | Los mensajes a enviar son de este tipo: |
− | + | <Command word: MSBit to LSBit (one byte)> | |
− | <Data bytes: LSByte to MSByte, MSBit in each byte first | + | <Data bytes: LSByte to MSByte, MSBit in each byte first> |
Para detalles sobre los comandos ver [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 la documentación original]. | Para detalles sobre los comandos ver [http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01 la documentación original]. | ||
+ | |||
==Estados del chip== | ==Estados del chip== | ||
− | * Power on reset state | + | * Power on reset state, el por defecto cuando está alimentado |
− | * Power Down mode | + | * Power Down mode, el chip queda controlable por SPI y Chip Enable (CE) pin |
* Standby-I: el chip consume poca corriente y puede pasar a estar activo rapidamente, el oscilador queda activo | * Standby-I: el chip consume poca corriente y puede pasar a estar activo rapidamente, el oscilador queda activo | ||
* Standby-II: consume mas corriente, es cuando no hay nada que transmitir pero está todo listo para ello | * Standby-II: consume mas corriente, es cuando no hay nada que transmitir pero está todo listo para ello | ||
Line 93: | Line 94: | ||
Estructura del paquete: | Estructura del paquete: | ||
− | + | Preamble: 1byte - Address: 35 byte - Packet Control Field: 9bits - Payload: 0-32 byte - CRC: 1-2 byte | |
El Packet Control Field contiene: | El Packet Control Field contiene: | ||
− | + | Payload length: 6bit - PID: 2bit - NO_ACK 1bit | |
El payload length dice cuantos bytes hay en el payload, entre 0 y 32. También puede haber payload automatico, en el cual caso el chip adivina el solo cuantos bytes hay. | El payload length dice cuantos bytes hay en el payload, entre 0 y 32. También puede haber payload automatico, en el cual caso el chip adivina el solo cuantos bytes hay. | ||
Line 103: | Line 104: | ||
− | En modo ShockBurst un nodo es transmisor (PTX), la hoja, y otro es receptor ( | + | En modo ShockBurst un nodo es transmisor (PTX), la hoja, y otro es receptor (PTRX), el centro de la estrella. |
SOLO el PTX puede empezar la comunicación. El PRX, al recibir un paquete envía un ACK y puede añadir un mensaje de vuelta (así hay comunicación bi-direccional). | SOLO el PTX puede empezar la comunicación. El PRX, al recibir un paquete envía un ACK y puede añadir un mensaje de vuelta (así hay comunicación bi-direccional). | ||
Si el ACK no es recibido, el PTX re-envia el paquete hasta un numero maximo de tentativos. | Si el ACK no es recibido, el PTX re-envia el paquete hasta un numero maximo de tentativos. | ||
Se puede saber cuantas retransmisiones han ocurrido accediendo a los registros ARC_CNT (retransmisiones de la singula transación) y PLOS_CNT (retransmisiones desde el ultimo cambio de canal). Si hay problemas es posible hacer que el tiempo de espera del ACK (normalmente 250 micros) sea mayo (500 es mas que suficiente). | Se puede saber cuantas retransmisiones han ocurrido accediendo a los registros ARC_CNT (retransmisiones de la singula transación) y PLOS_CNT (retransmisiones desde el ultimo cambio de canal). Si hay problemas es posible hacer que el tiempo de espera del ACK (normalmente 250 micros) sea mayo (500 es mas que suficiente). | ||
− | Para enviar datos en los ACKs hay que usar el modo de payload automatico, y meter datos en la cola de transmisión del nodo PRX. Se pueden meter hasta tres respuestas, pero cuidado! esas respuestas serán comunes a todos los nodos que hayan enviado el paquete! | + | Para enviar datos en los ACKs hay que usar el modo de payload automatico, y meter datos en la cola de transmisión del nodo PRX. Se pueden meter hasta tres respuestas, pero cuidado! esas respuestas serán comunes a todos los nodos que hayan enviado el paquete !. |
El chip se encarga de empaquetar y desempaquetar los payloads. Cada vez que se recibe o se envía un paquete los IRQs avisarán a la MCU para que interaccione. | El chip se encarga de empaquetar y desempaquetar los payloads. Cada vez que se recibe o se envía un paquete los IRQs avisarán a la MCU para que interaccione. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
===Multiceiver=== | ===Multiceiver=== | ||
− | |||
El nodo receptor PRX puede ver los nodos conectados (hasta 6) como si fueran unos canales cada uno con su dirección. | El nodo receptor PRX puede ver los nodos conectados (hasta 6) como si fueran unos canales cada uno con su dirección. | ||
Las direciones pueden ser de hasta 5 bytes, la dirección 0 puede ser distinta, pero las direcciones de 1 a 5 tienen que tener los primero 4 bytes en común. | Las direciones pueden ser de hasta 5 bytes, la dirección 0 puede ser distinta, pero las direcciones de 1 a 5 tienen que tener los primero 4 bytes en común. | ||
En esta modalidad es posible mandare respuestas distintas a nodos distintos, a través de la dirección de canal, en cuanto el chip se encargará de comprobar las direcciones. | En esta modalidad es posible mandare respuestas distintas a nodos distintos, a través de la dirección de canal, en cuanto el chip se encargará de comprobar las direcciones. | ||
− | === | + | ===Shickburst (no Enhanced)=== |
El Enhanced puede ser apagado para usar el Shockburst mas antiguo. Cito: | El Enhanced puede ser apagado para usar el Shockburst mas antiguo. Cito: | ||
− | + | The differences between the ShockBurst™ packet and the Enhanced ShockBurst™ packet are: | |
* The 9 bit Packet Control Field is not present in the ShockBurst™ packet format. | * The 9 bit Packet Control Field is not present in the ShockBurst™ packet format. | ||
− | * The CRC is optional in the ShockBurst™ packet format and is controled by the EN_CRC bit in the CONFIG register. | + | * The CRC is optional in the ShockBurst™ packet format and is controled by the EN_CRC bit in the CONFIG register. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |