Sie sind auf Seite 1von 9

3 E L TRANSCEPTOR

NRF24L01+

El NRF24L01+, de la empresa Nordic Semiconductor, es un transceptor de radio"frecuencia que trabaja a un


máximo de 2Mbps. Su diseño altamente integrado, de muy bajo consumo y bajo coste, ha sido decisivo para
su elección en este proyecto. Además, este pequeño dispositivo trabaja en la banda ISM (Industrial, Scientific
and Medical) de 2,4GHz, haciendo que no sea necesaria ninguna licencia para su uso.

Figura 3.1 – Fotografía de la placa del NRF24L01+.

Con una corriente máxima, en los picos de Transmisión/Recepción, inferior a 14mA, modo “Stand"By”,
administración avanzada de potencia y rango de alimentación entre 1,9 y 3,6V, el NRF24L01+ es capaz de
funcionar durante meses o incluso años alimentado con pilas de botón o de tipo AA/AAA, algo que nos
viene muy bien teniendo en cuenta el uso que vamos a darle en este proyecto.

Además, el NRF incluye un protocolo hardware que se encarga del manejo de las tramas que se envían y se
reciben por radio frecuencia, haciéndonos la vida más fácil a la hora de tener que retrasmitir tramas por culpa
de errores o interferencias, así como del uso de códigos de redundancia cíclicos (CRC), resultando una
comunicación por enlace de radio muy robusta, a prueba de fallos.

3.1 Características del NRF24L01+

 Transceptor de radio-frecuencia de un solo chip, de bajo coste y que funciona a 2,4GHz con
modulación GFSK y 126 canales disponibles.

 Al operar en la banda ISM de 2,4GHz, no necesita licencia de uso.

 Tasa de datos de 1Mbps y 2Mbps.

 Acelerador por protocolo hardware de capa de enlace “Enhanced ShockBurst”.

 Consumo de energía ultra-bajo, proporcionando meses de vida con batería.

 Compatible con toda la serie NRF24L en los modos de 1Mbps y 2Mbps.


23
24 El transceptor NRF24L01+

El protocolo de capa de enlace “Enhanced ShockBurst” nos proporciona las siguientes automatizaciones y
recursos:
 Ensamblaje automático de paquetes (preámbulo, dirección y CRC).

 Detección y validación automáticas del paquete recibido.

 Longitud de paquete dinámica (entre 1 y 32 bytes).

 ACK (confirmación de llegada) automático.

 Retransmisión automática.

 6 “tuberías” o pipes para la recepción de datos.

3.2 Pinout del NRF24L01+

En la siguiente imagen se observa un dibujo esquemático de los pines de los que dispone la placa del NRF
para comunicarse por SPI con el DSP o con el MSP:

Figura 3.2 – Pinout de la placa del NRF24L01+.

1 y 2. Pines de alimentación: GND y VCC.


3. Pin de Chip Enable (CE) sirve para activar y desactivar la comunicación SPI con el dispositivo.
4. Pin CSN se utiliza durante la comunicación SPI, indicando cuándo se transmiten/reciben datos.
5. Pin SCK es el del reloj, haciendo que en cada conmutación de nivel bajo a nivel alto se transmita un
bit de datos.
6 y 7. Pines MOSI y MISO son a los que se conectan los cables por donde viajan los datos de entrada y
salida del NRF, respectivamente.
8. Pin IRQ se puede configurar para que nos avise cada vez que se recibe un dato por radio"frecuencia,
aunque también podemos saber si ha llegado un dato leyendo el registro STATUS.
3.3 Comunicación SPI

La comunicación entre el DSP o el MSP430 y el NRF24L01+ se realiza mediante el protocolo SPI (Serial
Peripheral Interface). Este protocolo funciona en modo “Maestro"Esclavo” (Master"Slave), como se observa en
la siguiente figura:

Figura 3.3 – Esquema del funcionamiento


“Maestro"Esclavo”.

El protocolo SPI es un estándar de comunicaciones usado principalmente para la transferencia de


información entre equipos electrónicos. Con él es posible controlar casi cualquier dispositivo electrónico
digital que acepte un flujo de bits serie regulado por un reloj.

El SPI es un protocolo síncrono. La sincronización y la transmisión de datos se realiza por medio de 4 señales:

• SCLK (Clock): Es el pulso que marca la sincronización. Con cada pulso de este reloj, se lee o se envía
un bit.
• MOSI (Master Output Slave Input): Salida de datos del dispositivo maestro (Master) y entrada de datos
al equipo esclavo (Slave).
• MISO (Master Input Slave Output): Salida de datos del dispositivo esclavo (Slave) y entrada al equipo
maestro (Master).
• SS/CS (Slave Select/Chip Select): Línea para que el equipo maestro le comunique al esclavo que
comienza la comunicación.

La ventaja de un bus serie como el SPI es que se minimiza el número de pines, pistas y, por consiguiente, el
tamaño del circuito integrado. Esto reduce el coste de su fabricación y montaje.

Los buses series dan mucha flexibilidad a la hora de conectar diferentes periféricos, ya que casi todos los
dispositivos digitales pueden ser controlados por esta combinación de señales (CLK, MISO, MOSI, CS).
A continuación se muestra el funcionamiento de la lectura y escritura de datos en el NRF24L01+:

Figura 3.4 – Diagrama de la lectura de datos.


Figura 3.5 – Diagrama de la escritura de datos.

Siendo Cn bits de comandos de SPI, Sn bits del registro STATUS y Dn bits de datos. Se observa que el NRF
devuelve el valor del registro STATUS al comenzar cualquier comunicación con él.

3.4 Registros de configuración

Los registros más utilizados en la configuración del NRF son el registro de configuración (CONFIG) y el de
estado (STATUS). A continuación se muestran sus bits con sus correspondientes funciones:

Figura 3.6 – Tabla con los bits del registro CONFIG.


Figura 3.7 – Tabla con los bits del registro STATUS.

3.5 Modos de funcionamiento

El transceptor NRF24L01+ tiene dos modos de funcionamiento, cuando no está apagado o en Stand"By:
transmisor y receptor. Para seleccionar cada uno de ellos, se requiere de una escritura en el registro CONFIG,
concretamente en el bit 0. Se escribirá un 1 si se quiere activar el modo de RX ó un 0 si se desea el modo TX.

Para escribir en un registro determinado, el NRF nos proporciona un comando y una dirección de escritura.
El comando de escritura en un registro cualquiera es el valor 0x20 en hexadecimal, llamado
NRF_CMD_WREG en el código, y el comando de lectura es el valor 0x00 o NRF_CMD_RREG. Para “activar”
dicho comando, lo que se hace es usar la función de envío de bytes a través de SPI, enviando el byte
resultante de hacer un “OR” lógico entre el comando de “escritura en un registro” (o de lectura, si lo que se
quiere es leer dicho registro), y el número correspondiente a la dirección del registro deseado.

En el caso de querer activar el modo TX o RX del NRF, lo que se hace es lo siguiente:


1. Se activa el pin de CS a nivel bajo.

2. Se envía por SPI el byte resultante de hacer un “OR” lógico entre el comando NRF_CMD_WREG y
la
dirección del registro CONFIG que es la 0x00.

3. Se envía por SPI el byte correspondiente a la configuración que deseamos: 0x0A si queremos activar el
NRF en modo transmisor, ó 0x0B si lo que queremos es que éste funcione como receptor.

4. Volvemos a poner a nivel alto el pin de CS.

Antes de configurar el NRF en modo receptor o transmisor, es común apagar el mismo para después
encenderlo en el modo deseado. Para ello, utilizando la misma función de escribir en un registro, lo que se
hace es mandar el byte 0x80 al registro CONFIG.
Figura 3.8 (Izq.) – Diagrama de flujo del procedimiento de configuración del modo
RX.
Figura 3.9 (Der.) – Diagrama de flujo del procedimiento de configuración del modo
TX.

En el caso de que queramos usar el NRF en modo receptor, también hay que configurar el tamaño de la
trama que se va a recibir. Para ello volvemos a hacer uso de la función de escritura en un registro,
esta vez, escribiendo el byte TAM_PAYLOAD, o tamaño del dato en bytes, en el registro RX_PW_P0, cuya
dirección es la 0x11.

Estos registros (RX_PW_P0, RX_PW_P1, RX_PW_P2, RX_PW_P3, RX_PW_P4 y RX_PW_P5), definen el uso
que se hace de los 6 pipes, o “tuberías”, de recepción de bytes de los que dispone el NRF24L01+. Se puede
elegir el número de bytes de recepción, entre 1 y 32 bytes. En nuestro caso, para la recepción del dato del
botón pulsado, o para el número de efecto seleccionado en el DSP, sólo nos hace falta transmitir un byte. Es
por ello que aquí escribimos un 1 en el registro RX_PW_P0. Además, como no se utilizan más pipes, los
demás se dejan sin configurar, ya que por defecto el valor que tienen es 0x00 (pipe no utilizado).

3.6 Envío de un dato

Cuando se desea transmitir un dato por radio"frecuencia, lo que se hace es parecido a la escritura de un byte
en un registro, tal como hemos visto hace un momento. En esta ocasión, y tras haber configurado el NRF en
modo transmisor, en lugar de indicar un registro donde escribir, el byte que se le manda al NRF por SPI es el
comando W_TX_PAYLOAD, cuyo valor es 0xA0. A continuación, se le manda el byte con el dato que se
quiere transmitir por radio.

A continuación se muestra un diagrama de flujo del funcionamiento del procedimiento de envío de un dato
por radio"frecuencia:
Figura 3.10 – Diagrama de flujo de la operación de envío de un dato por radio.

3.7 Recepción de un dato

Para la recepción de un dato por radio"frecuencia, el procedimiento es similar, salvo por el hecho de que hay
que estar comprobando periódicamente el registro STATUS. Para ello, y gracias a que el NRF siempre nos
devuelve el estado de dicho registro al escribir cualquier byte en él, se le manda el comando de “no
operación” NRF_CMD_NOP, ó 0xFF. Tras recibir por SPI el valor del registro STATUS, comprobamos su bit
número 6. Si está a 1 significa que se ha recibido algo por radio, así que procederemos a leer qué es lo que
nos ha llegado.

Para leer el dato recibido se opera de la siguiente manera:

1. Poner el pin de CS a nivel bajo.

2. Enviar por SPI el byte del comando de lectura del dato recibido: NRF_RX ó 0x61.

3. Copiar, en una variable libre, el byte que se recibe del NRF cuando se le escribe el comando de “no
operación”, citado anteriormente: NRF_CMD_NOP, ó 0xFF.

4. Iterar el paso 3 tantas veces como bytes se esperen recibir.

5. Cuando no queden más bytes por recibir, volver a poner el pin de CS a nivel alto.

Para terminar con la operación de lectura, se debe bajar la bandera que nos informó de que se había recibido
un dato por radio"frecuencia. Para hacerlo, simplemente escribimos un 1 en el bit 6 del registro STATUS. De
otra forma, si no bajáramos dicha bandera, estaríamos siempre entrando en la función de lectura.
A continuación se muestra un diagrama de flujo del funcionamiento del procedimiento de lectura de un dato
que se ha recibido por radio"frecuencia:

Figura 3.11 – Diagrama de flujo de la operación de lectura de un dato recibido por


radio.

Das könnte Ihnen auch gefallen