2个NRF24L01模块互发(基于stm32f103平台;有链接源码自提,放在了网盘)
也是因为项目需要这2天调试了一下这个模块,遇到的坑记录一下。
关于源码:网盘里有2个源码,一个是NRF24L01发送源码,另外一个是NRF24L01接收源码。工程里面每一个函数每一条语句都有说明,很详细,大家一看便知。
关于NRF24L01是使用spi协议收发等一些基础这里就不做过多的说明,相信大家都能在网上或者其他博主的文章里找到。
遇到的坑1:NRF24L01_check( );这个函数大家尤其注意,如果stm32没有连接NRF24L01模块的话,在该处程序会卡死的,具体为何卡住,大家自己点进去看一下NRF24L01_check( )内容便知。
遇到的坑2:哪一块NRF24L01是发,哪一块NRF24L01是收,要对应改成:
RF24L01_Set_Mode( MODE_RX ); /* 接收模式 /
RF24L01_Set_Mode(MODE_TX); / 发送模式 */
遇到的坑3:发送端的尽量是有一定延时的,不要一直发,不然接收端还没接收完整的一帧数据,下一帧数据就来了,要么出现接收端数据异常,要么数据是已经丢了。具体看代码,我都有写注释在里面。
遇到的坑4:如果你也要用到OLED12864来显示接收到的数据,一定要注意,发送端是数组,而OLED12864的OLED_ShowNum()函数不是数组类型,所以只能取发送端数组中的1位来显示数据,一个是数组,一个是u8,明显类型不一样;工程里面是取RF24L01RxBuffer[0]来显示,因为发送端也是数组的第一个元素。
最后直接上源码的链接:链接: https://pan.baidu.com/s/1LptUrtKMhLC77PXyLHToHw?pwd=v9nb 提取码: v9nb 复制这段内容后打开百度网盘手机App,操作更方便哦
最后的最后:如果你用的是我的工程模块,发现有什么不足之处,请大家指出批评。