nrf52832与nrf24L01+通信

血红的双手。 提交于 2019-11-30 02:50:28

    使用2.4G无线芯片nrf24L01+与蓝牙芯片nrf52832通信,nrf52832工作在2.4G模式。

    nrf24L01+使用以前调试通过程序,两个nrf24L01+通信良好。

    nrf52832模块使用sdk13.0中esb历程\nRF5_SDK_13.0.0_04a0bfd\examples\proprietary_rf\esb_ptx,两个nrf52832可以实现互相通信

    完成以上两个基础步骤后,开始nrf24L01+与nrf52832通信。

    两个设备之间的通信要匹配一下参数:

    1、通讯速率  bitrate

    2、数据传输宽度  payload length

    3、通讯频率  frequency

    4、通道号  pipe

    5、CRC校验

    6、ACK应答

    7、白化

    8、通讯地址 

    其中,在nrf52832中,4~7可以不用更改,是默认值,通道0,16位CRC校验,禁止自动应答(这个可以打开),白化是disable的。这些与nrf24L01+一致,也可以更改成一致的。

    nrf52832的接收例程中prx更改地方为

main中


nrf_esb.h中


nrf24L01+中的初始化如下:


    注意:最后红色框里面这两句很重要,有些nrf24L01+的历程里面没有,如果没有这两句是不能喝nrf52832通讯的,所以这一点要强调一下。

    手册中定义为


 ps:中文的nrf2401手册中没有翻译这两个寄存器,也找不到相应的使用说明

接下来是地址,地址有一个比较麻烦的变换,其实也还好,理解了也不难,开始为了躲开这种变换可以使用0xE7,0xE7,0xE7,0xE7,0xE7,如下:

nrf24L01+地址


nrf52832地址


要想改变为自己想要的地址需要遵循以下原则,地址中每个字节中的bit首位交换,地址中字节首位交换,来看一个表会比较清晰。


注意这里,这里的变换指的是写到寄存器BASE0中的数据,nrf52832的历程里面已经写好了转换函数,如下

在nrf_esb.c


感兴趣的可以按照这个方法算一算,我计算了一遍,挺有意思的,很巧妙。

那么,我们的地址究竟要怎么对应呢,看两个实际应用的图就知道了

nrf24L01


nrf52832


要知道的就是prefix[0]+addr_0是通道0的地址,其他的地址是prefix[1]~[7]+addr_1



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!