nrf24l01模块使用教程

嵌入式操作系统

57人已加入

描述

  nRF24L01是由NORDIC生产的工作在2.4GHz~2.5GHz的ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。

  输出功率频道选择和协议的设置可以通过SPI 接口进行设置。几乎可以连接到各种单片机芯片,并完成无线数据传送工作。

  极低的电流消耗:当工作在发射模式下发射功率为0dBm 时电流消耗为11.3mA ,接收模式时为12.3mA,掉电模式和待机模式下电流消耗更低。

  nrf24l01模块使用教程

  NRF24L01与控制器的通信采用的SPI通信协议,这个协议具体细节大家可能都懂,不懂的可以之间百度;他们的通信模型是这样的:

  单片机

  NRF*之间基本上可以互相通信,只要你地址设置的没有问题!他有六个通道,每一个通道都有自己的缓冲区,这六个通道可以同时跟不同的NRF进行通信,但是通信的两个之间的TX_ADDR和RX_ADDR一定要相同;

  单片机

  这幅图能够充分的说明这个问题;Point1 to Point2,Point1和Point2的通道地址一定要一样;具体的设置在下面这个寄存器里面配置:

  单片机

  NRF24L01有RX模式,TX模式,Standby-I模式,Standby-II模式,掉电模式;他们之间的模式转换如下图:

  单片机

  这张图看着可能没有一点感觉,比较乱,下面这张可能会比较清晰一点:

  单片机

  只要我们想切换到什么模式就可以根据这个对寄存器进行配置;不过在配置的过程中,一点要注意适当的延时,我这次也被这个延时纠结了半天;

  单片机

  从Standy Mode转化到Tx/Rx mode 我这次就是可能延时的比较长,导致初始化一直没有成功,我刚开始一直的想法是,只要我等待的时间越长,他就越容易实现我的配置;看来这种观念需要改正下;

  为了让整个传输稳定和快速,我可以可以设置自动应答模式;但是他只适合单通道模式:

  单片机

  当发送方把数据发送给接收方,接收方会有一个短暂的延时大致130us,然后会高速发送方我接收了;然后接收方会产生一个中断信号,当发送方没有接收到这个ACk,他就会一直卡在这里;

  说到他的中断,他有三种中断模式,一种是接收中断,二是发送完成中断,三发送超时中断;具体我们可以看STATU寄存器:

  单片机

  我们一般判断的主要是[6:4],RX_DR是接收到中断标志位,TX_DS发送完成中断标志位,MAX_RT超过最大发送次数标志位;这三位是可读可写的;写1的时候是清除中断标志位;这里还有一个预留位,我们一般不用,但是有时候我可以用他来测试看看是否写寄存器成功;当然,其他寄存器的预留位也可以来测试是否控制器与NRF模块通信是否正常。

  另外还有FIFO_STATUS寄存器,他主要是检测FIFO寄存器的状态:

  单片机

  说这么久了,忘记说这个FIFO寄存器,也就是数据寄存器,他有32个Byte,所以我们在设置装载数据的大小时,只能最大设置为32byte;当然可以小于32byte;在接收模式下,如果接收完毕,我们最好把FIFO寄存器清空了,可以看FLUSH_RX寄存器,不过理论上,只要把数据读走,他都会自动清空;但是为了以防万一,还是清空了好;

  单片机

  这几个是比较重要的寄存器,要写寄存器的话,必须以W_REGISTER为基地址+命令地址进行写操作;读的话同样的方法;但是一般不写R_REGISTER,因为AAAAA=5bit Register Map Address,正好R_Register的高三位为0,所有Register Map Address的高三位都为0,所以我们可以不用写了;但是对于写操作,高三为为001,故我们一般定义W_REGISTER为0x20,然后与Command与操作;即可;

  R_RX_PAYLOAD与W_TX_PAYLOAD作为发送和接收的缓冲区。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分