nrf24l01参考程序(包含多个实例)

nrf24l01参考程序(包含多个实例)

ID:14416665

大小:257.50 KB

页数:13页

时间:2018-07-28

nrf24l01参考程序(包含多个实例)_第1页
nrf24l01参考程序(包含多个实例)_第2页
nrf24l01参考程序(包含多个实例)_第3页
nrf24l01参考程序(包含多个实例)_第4页
nrf24l01参考程序(包含多个实例)_第5页
资源描述:

《nrf24l01参考程序(包含多个实例)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、(相关人员如觉得本人水平低下,还请见谅)Nrf24L01的使用程序和使用方法和简单操作:功能:无线对发程序。两个模块a,b,实现按下一个按键,会在对方的数码管上显示3或4,在本机上显示1,2。当一个模块,比如a模块。当两个按键按下其中一个,则会在另一个模块b上显示数字3,4(具体根据按下哪个按键)。以上功能描述,B模块按键按下,如同a模块一样的功能,不做系统性描述了。下面给出程序中几个地方的解释:#defineREAD_REG0x00//读寄存器指令#defineWRITE_REG0x20//写寄存器指令#defineRD_RX_PLOAD0x61//读取接收数

2、据指令#defineWR_TX_PLOAD0xA0//写待发数据指令#defineFLUSH_TX0xE1//冲洗发送FIFO指令#defineFLUSH_RX0xE2//冲洗接收FIFO指令#defineREUSE_TX_PL0xE3//定义重复装载数据指令#defineNOP0xFF//保留类似这种的描述,可以等同于READ_REG=0x00;这个是经过实际程序测试出来的,比如以下程序:#include#definek0xfevoidmain(){P1=k;}则会出现此类结果:MOSI=(uchar&0x80);//output'uchar

3、',MSBtoMOSIuchar=(uchar<<1);//shiftnextbitintoMSB..SCK=1;//SetSCKhigh..uchar

4、=MISO;//capturecurrentMISObitSCK=0;此处为spi的核心,是spi协议的编程,其中uchar

5、=MISO;表示uchar

6、=MISO

7、uchar;MOSI=(uchar&0x80);其中0x80是10000000,与上uchar,这种&,是按位与,故可以从uchar提取出一个电平给mosi。MOSI=(uchar&0x80);//output'uchar',MSBtoMOSIuc

8、har=(uchar<<1);这两句组合起来用,就实现了把uchar编程8位2进制数后的每一位都可以发送给mosi;Uchar的只待对象,就是上面的诸如#defineFLUSH_TX0xE1这样的数,或者是相关的发送数据。*pBuf这个并不是一个主要的问题,实际这个是涉及指针问题的,带*的跟地址有关系,但是我们其实不需要很关心编译的时候数据被具体存入哪个地址,即使是很重要的数据。voidinit_NRF24L01(void){inerDelay_us(100);CE=0;//chipenableCSN=1;//SpidisableSCK=0;//SPI_Writ

9、e_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);//写本地地址SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);//写接收端地址SPI_RW_Reg(WRITE_REG+EN_AA,0x01);//频道0自动ACK应答允许SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);//允许接收地址只有频道0,如果需要多频道可以参考Page21SPI_RW_Reg(WRITE_REG+RF_CH,0);//设置信道工作为2.4GHZ

10、,收发必须一致SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//设置接收数据长度,本次设置为32字节SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);//设置发射速率为1MHZ,发射功率为最大值0dB}在整个初始化中我们看到:CE=0;//chipenableCSN=1;//Spidisable这是设置整个的状态。如过状态设置成待机,则引脚可能变为高阻。(以上并非全部引脚)SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);//写本地

11、地址SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);//写接收端地址类似以上两句,这是应用spi的子程序,将寄存器指令放入nrf24l01。如果需深究,请参考说明书,手册等。或者可以通过#defineREAD_REG0x00//读寄存器指令等了解大概流程。在整个无线通信过程中,初始化只需设置一次。TxBuf[]存放的是发送的数据。并且此数据被发送时,是将这个数组的数全部发送的。对方也全部接收。RxBuf[]接收数组,用于存放对方发来的数据。SetRX_Mode();nRF24L01_RxPa

12、cket(RxBuf);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。