NRF24L01

From Wiki Makespace Madrid
Revision as of 15:19, 16 October 2013 by Dario Salvi (Talk | contribs) (añadido simulador para Mixim)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Es un chip low cost y low power para comunicaciones digitales. Lo produce Nordic y la pagina web con toda la información está aquí.

Caracteristicas[edit]

  • Worldwide 2.4GHz ISM band operation
  • Up to 2Mbps on air data rate
  • Ultra low power operation
  • 11.3mA TX at 0dBm output power
  • 12.3mA RX at 2Mbps air data rate
  • 900nA in power down
  • 22µA in standby-I
  • On chip voltage regulator
  • 1.9 to 3.6V supply range (NO sobrepasar: Minimum -0.3V Maximum 3.6V)
  • Enhanced ShockBurst™
  • Automatic packet handling
  • Auto packet transaction handling
  • 6 data pipe MultiCeiver™
  • Air compatible with nRF2401A, 02, E1 and E2
  • Low cost BOM
  • ±60ppm 16MHz crystal
  • 5V tolerant inputs
  • Compact 20-pin 4x4mm QFN package
  • Temperature: -40 +85 °C

Aplicaciones tipicas[edit]

  • Wireless PC Peripherals
  • Mouse, keyboards and remotes
  • 3-in-one desktop bundles
  • Advanced Media center remote controls
  • VoIP headsets
  • Game controllers
  • Sports watches and sensors
  • RF remote controls for consumer electronics
  • Home and commercial automation
  • Ultra low power sensor networks
  • Active RFID
  • Asset tracing systems
  • Toys

These products are not designed for use in life support appliances

Comunicación con el chip[edit]

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


Los pines de acceso al SPI son 6, y van con 5V:

  • IRQ (this signal is active low and is controlled by three maskable interrupt sources)
  • CE (this signal is active high and is used to activate the chip in RX or TX mode)
  • CSN (SPI signal)
  • SCK (SPI signal)
  • MOSI (SPI signal)
  • MISO (SPI signal)

a través de SPI se puede acceder a los registros y modificar todos los parametros.

  • data rate
  • canal
  • comunicación con el protocolo Enhanced ShockBurst
  • las colas FIFO de transmisión y recepción

Los mensajes a enviar son de este tipo:
<Command word: MSBit to LSBit (one byte)>
</code>

Para detalles sobre los comandos ver la documentación original.

Estados del chip[edit]

  • Power on reset state: el por defecto cuando está alimentado
  • 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-II: consume mas corriente, es cuando no hay nada que transmitir pero está todo listo para ello
  • RX mode: el chip está recibiendo, si el paquete es valido (pasa el CRC) se pasa a la cola FIFO. Si la cola está llena, el paquete se pierde. Cuando una señal en la frecuencia y con modulación compatible se presenta el Carrier Detect (CD) es peusto alto.
  • TX mode: el chip envía los paquetes que hay en la cola para luego volver a Standby-II.

Funciones Radio[edit]

  • Data rate: 1Mbs, por defecto y que tiene mejor rendimiento, o 2Mbs, si lo necesitas, pues puedes activarlo, pero en ambos transmisor y receptor
  • Canal: se setea en un registro, cada valor es 1 MHz F0= 2400 + RF_CH [MHz], transmisor y receptor tiene que tener el mismo!
  • power amplifier: es la amplificación en el envío: 0dBm, -6dBm, -12dBm, -18dBm
  • LNA gain: es la ganancia en recepción, se puede bajar de 1.5dB para consumir menos

Enhanced ShockBurst[edit]

Es un protocolo de nivel data link. Incluye direcciones, ACKs, re-envío automatico y topologías a estrella con nodos conectados a uno central. El payload es de 1 a 32 bytes.

Estructura del paquete:

<code>Preamble: 1byte - Address: 3-5 byte - Packet Control Field: 9bits - Payload: 0-32 byte - CRC: 1-2 byte</code>

El Packet Control Field contiene:

<code>Payload length: 6bit - PID: 2bit - NO_ACK 1bit</code>

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 PID es usado, junto con el CRC para ver si el paquete es una re-transmisión, el NO_ACK se usa para no utilizar el ACK automatico.


En modo ShockBurst un nodo es transmisor (PTX), la hoja, y otro es receptor (PRX), 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). 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).

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.


La direccion es siempre la del receptor (PRX). El nodo receptor mira si la direccion es valida, y si no descarta el paquete. Si la direccion es valida comprueba tambien el CRC. La direccion puede ser de 3,4, o 5 bytes (configurable en el registro AW).


Multiceiver[edit]

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. 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.

Shockburst (no Enhanced)[edit]

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 CRC is optional in the ShockBurst™ packet format and is controled by the EN_CRC bit in the CONFIG register.

Librerías para Arduino[edit]

Hay unas cuantas librerías hechas para Arduino para controlar un NRF24L01:


También hay librerías de nivel red para redes de NRF24L01:

Posibilidades de simulación[edit]

Hay una implementacion de un simulador de nrf24l01 para Mixim