打印
[其他ST产品]

STM32和PC串口的NRF24L01通信测试

[复制链接]
754|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
硬件实现
学习阶段我们主要使用原子的STM32精英版作为主要调试平台,后期可以行使用一些最小开发版进行硬件和程序移植。
需求
① 原子 STM32F103ZET6精英板 x1
② NRF24L01模块 x2(淘宝链接,下同:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.11f12e8dTyZQGP&id=564248570460&_u=dddmocq4005)
③ NRF24L01-串口转USB转换模块 x2
连接
①与电脑相连: NRF24L01模块通过NRF24L01-串口转USB转换模块与PC的USB口相连。(需要注意需提前安装CH340驱动以保证PC能识别到端口)
②与单片机相连:STM32F103预留了wireless引脚块(使用SPI2),可以直接插入NRF24L01模块。另外可手动进行引脚匹配。




使用特权

评论回复
沙发
慢动作|  楼主 | 2024-3-27 17:46 | 只看该作者
软件实现
代码是有现成的,可以参考原子的源码及讲解课程第66讲 2.4G无线通信实验。
需要注意的是要收发端的NRF24L01参数设置一致才可实现相互通信,主要涉及
①波特率9600(仅需确保PC串口波特率与NRF24L01-串口转USB转换模块一致,模块默认是9600)
②传输速率:2Mpbs
③收发地址:0xFF, 0xFF, 0xFF, 0xFF, 0xFF(串口转USB转换模块默认地址,若PC与STM32通信,修改修改两者一致)
④通信频率:2.4Ghz(串口转USB转换模块默认,若PC与STM32通信,修改修改两者一致)
⑤CRC校验位:16位
注:PC端以上参数是封装在NRF24L01-串口转USB转换模块中的,需要使用串口发送AT命令来修改。

使用特权

评论回复
板凳
慢动作|  楼主 | 2024-3-27 17:47 | 只看该作者
测试结果
4.1PC与PC通信
插入两个NRF24L01模块,调用两个串口助手,使用其中一个串口发送消息’ABCDEFG’,另一个串口助手中可接收到’ABCDEFG’

使用特权

评论回复
地板
慢动作|  楼主 | 2024-3-27 17:47 | 只看该作者
4.2 STM32与STM32通信
参考原子的教程

4.3 PC与STM32通信
写在前面:NRF24L01-串口转USB转换模块在对发送和接收数据时进行了处理,因此如果直接使用单片机发送’ABCDEF’的数据,则会出现PC接收不到的情况。原因在于转换模块第0个字节是系统保留的,用于每次传输的包长度统计,实际用户可用的字节为1-31个。例如PC串口发送‘ABC’,实际通过NRF24L01传输的是’3ABC’,接收端实际处理是应根据第0字节中的数来判断收到的数据包长度。

测试:使用stm32连续发送’3BCDEF’的字符串,则可在PC端的串口助手中收到’BCD’的字符串

使用特权

评论回复
5
慢动作|  楼主 | 2024-3-27 17:47 | 只看该作者
结论
通信测试时需要确保通信两端的NRF24L01参数设置是一致的,包括地址、通信频率等。
NRF24L01-串口转USB转换模块在对发送和接收数据时进行了特殊处理,在调试PC与STM32的通信时需要注意这一机制。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

699

帖子

0

粉丝