您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > nrf24l01的C程序
内部使用-严禁用于商业用途byaaa19821NRF24L01使用文档基于c8051f330单片机内部使用-严禁用于商业用途byaaa19822目录芯片简介........................................................................................................................31NRF24L01功能框图.................................................................................................42NRF24L01状态机.....................................................................................................53Tx与Rx的配置过程................................................................................................73.1Tx模式初始化过程........................................................................................73.2Rx模式初始化过程.........................................................................................84控制程序详解.............................................................................................................94.1函数介绍..........................................................................................................94.1.1ucharSPI_RW(ucharbyte).....................................................................94.1.2ucharSPI_RW_Reg(ucharreg,ucharvalue).......................................104.1.3ucharSPI_Read(ucharreg);.................................................................104.1.4ucharSPI_Read_Buf(ucharreg,uchar*pBuf,ucharbytes);...............114.1.5ucharSPI_Write_Buf(ucharreg,uchar*pBuf,ucharbytes);..............114.1.6voidRX_Mode(void)............................................................................124.1.7voidTX_Mode(void)............................................................................134.2NRF24L01相关命令的宏定义.....................................................................134.3NRF24L01相关寄存器地址的宏定义.........................................................145实际通信过程示波器图..........................................................................................161)发射节点CE与IRQ信号.............................................................................172)SCK与IRQ信号(发送成功)...................................................................183)SCK与IRQ信号(发送不成功)...............................................................19内部使用-严禁用于商业用途byaaa19823芯片简介NRF24L01是NORDIC公司最近生产的一款无线通信通信芯片,采用FSK调制,内部集成NORDIC自己的EnhancedShortBurst协议。可以实现点对点或是1对6的无线通信。无线通信速度可以达到2M(bps)。NORDIC公司提供通信模块的GERBER文件,可以直接加工生产。嵌入式工程师或是单片机爱好者只需要为单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU系统构建无线通信功能。内部使用-严禁用于商业用途byaaa198241NRF24L01功能框图Fig.1NRF24L01BLOCKDIAGRAMNRF24L01的框图如Fig.1所示,从单片机控制的角度来看,我们只需要关注Fig.1右面的六个控制和数据信号,分别为CSN、SCK、MISO、MOSI、IRQ、CE。CSN:芯片的片选线,CSN为低电平芯片工作。SCK:芯片控制的时钟线(SPI时钟)MISO:芯片控制数据线(Masterinputslaveoutput)MOSI:芯片控制数据线(Masteroutputslaveinput)IRQ:中断信号。无线通信过程中MCU主要是通过IRQ与NRF24L01进行通信。CE:芯片的模式控制线。在CSN为低的情况下,CE协同NRF24L01的CONFIG寄存器共同决定NRF24L01的状态(参照NRF24L01的状态机)。内部使用-严禁用于商业用途byaaa198252NRF24L01状态机NRF24L01的状态机见Fig.2所示,对于NRF24L01的固件编程工作主要是参照NRF24L01的状态机。主要有以下几个状态PowerDownMode:掉电模式TxMode:发射模式RxMode:接收模式Standby-1Mode:待机1模式Standby-2Mode:待机2模式上面五种模式之间的相互切换方法以及切换所需要的时间参照Fig.2。Fig.2NRF24L01StateMachine内部使用-严禁用于商业用途byaaa19826对24L01的固件编程的基本思路如下:1)置CSN为低,使能芯片,配置芯片各个参数。(过程见3.Tx与Rx的配置过程)配置参数在PowerDown状态中完成。2)如果是Tx模式,填充TxFIFO。3)配置完成以后,通过CE与CONFIG中的PWR_UP与PRIM_RX参数确定24L01要切换到的状态。TxMode:PWR_UP=1;PRIM_RX=0;CE=1(保持超过10us就可以);RxMode:PWR_UP=1;PRIM_RX=1;CE=1;4)IRQ引脚会在以下三种情况变低:TxFIFO发完并且收到ACK(使能ACK情况下)RxFIFO收到数据达到最大重发次数将IRQ接到外部中断输入引脚,通过中断程序进行处理。内部使用-严禁用于商业用途byaaa198273Tx与Rx的配置过程本节只是叙述了采用ENHANCEDSHORTBURST通信方式的Tx与Rx的配置及通信过程,熟悉了24L01以后可以采用别的通信方式。3.1Tx模式初始化过程初始化步骤24L01相关寄存器1)写Tx节点的地址TX_ADDR2)写Rx节点的地址(主要是为了使能AutoAck)RX_ADDR_P03)使能AUTOACKEN_AA4)使能PIPE0EN_RXADDR5)配置自动重发次数SETUP_RETR6)选择通信频率RF_CH7)配置发射参数(低噪放大器增益、发射功率、无线速率)RF_SETUP8)选择通道0有效数据宽度Rx_Pw_P09)配置24L01的基本参数以及切换工作模式CONFIGTx模式初始化过程1)写Tx节点的地址TX_ADDR2)写Rx节点的地址(主要是为了使能AutoAck)RX_ADDR_P03)使能AUTOACKEN_AA4)使能PIPE0EN_RXADDR5)配置自动重发次数SETUP_RETR6)选择通信频率RF_CH7)配置发射参数(低噪放大器增益、发射功率、无线速率)RF_SETUP8)选择通道0有效数据宽度Rx_Pw_P09)配置24L01的基本参数以及切换工作模式CONFIG。内部使用-严禁用于商业用途byaaa198283.2Rx模式初始化过程初始化步骤24L01相关寄存器1)写Rx节点的地址RX_ADDR_P02)使能AUTOACKEN_AA3)使能PIPE0EN_RXADDR4)选择通信频率RF_CH5)选择通道0有效数据宽度Rx_Pw_P06)配置发射参数(低噪放大器增益、发射功率、无线速率)RF_SETUP7)配置24L01的基本参数以及切换工作模式CONFIGRx模式初始化过程:初始化步骤24L01相关寄存器1)写Rx节点的地址RX_ADDR_P02)使能AUTOACKEN_AA3)使能PIPE0EN_RXADDR4)选择通信频率RF_CH5)选择通道0有效数据宽度Rx_Pw_P06)配置发射参数(低噪放大器增益、发射功率、无线速率)RF_SETUP7)配置24L01的基本参数以及切换工作模式CONFIG。内部使用-严禁用于商业用途byaaa198294控制程序详解4.1函数介绍NRF24L01的控制程序主要包括以下几个函数ucharSPI_RW(ucharbyte);ucharSPI_RW_Reg(ucharreg,ucharvalue);ucharSPI_Read(ucharreg);ucharSPI_Read_Buf(ucharreg,uchar*pBuf,ucharbytes);ucharSPI_Write_Buf(ucharreg,uchar*pBuf,ucharbytes);voidRX_Mode(void);voidTX_Mode(void);4.1.1ucharSPI_RW(ucharbyte)ucharSPI_RW(ucharbyte){ucharbit_ctr;for(bit_ctr=0;bit_ctr8;bit_ctr++)//output8-bit{MOSI=(byte&0x80);//output'byte',MSBtoMOSIbyte=(byte1);//shiftnextbitintoMSB..SCK=1;//SetSCKhigh..byte|=MISO;//capturecurrentMISObitSCK=0;//..thensetSCKlowagain}return(byte);//returnreadbyte}内部使用-严禁用于商业用途byaaa198210最基本的函数,完成GPIO模拟SPI的功能。将输出字节(MOSI)从MSB循环输出,同时将输入字节(MISO)从LSB循环移入。上升沿读入,下降沿输出。(从SCK被初始化为低电平可以判断出)。4.1.2ucharSPI_RW_Reg(ucharreg,ucharvalue)ucharSPI_RW
本文标题:nrf24l01的C程序
链接地址:https://www.777doc.com/doc-5137751 .html