3 el transceptor nrf24l01+ - universidad de...

Post on 31-Mar-2020

8 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

!

!

23!

!

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

!

!

!! ! ! !

El!transceptor!NRF24L01+!

!

24!

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.

!!

!

!

25!Diseño!y!Realización!de!un!Sistema!de!Procesamiento!de!Audio!con!Control!Inalámbrico!!

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

!

!! ! ! !

El!transceptor!NRF24L01+!

!

26!

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

!

!!

!

!

27!Diseño!y!Realización!de!un!Sistema!de!Procesamiento!de!Audio!con!Control!Inalámbrico!!

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

!! ! ! !

El!transceptor!NRF24L01+!

!

28!

!

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:!

!!

!

!

29!Diseño!y!Realización!de!un!Sistema!de!Procesamiento!de!Audio!con!Control!Inalámbrico!!

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

!

!! ! ! !

El!transceptor!NRF24L01+!

!

30!

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

!

top related