你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32和PC串口的NRF24L01通信测试

[复制链接]
STMCU小助手 发布时间:2022-5-10 22:35
1. 前言
0 n5 ~. v; [0 Y: t小弟最近看了一些中近距离(200m以内)的无线通信方法,像Zigbee/蓝牙/wifi等,实现起来比较复杂,需要一定程度的钻研。恰巧看到一款NRF24L01使用起来非常方便,并且本身有较佳的功耗和通信距离,网上有相当数量的学习资料和例程,因此上手把玩了一番。在调试过程中由于设备有限,遇到了些许bug,在此记录一下并分享给大家。1 o" u  g7 |$ L- t

! f7 G# ]. i6 t! E( Q5 w$ {/ y2. 硬件实现
. U2 P. U- L7 g. {! m7 b; v学习阶段我们主要使用原子的STM32精英版作为主要调试平台,后期可以行使用一些最小开发版进行硬件和程序移植。
2 h- C2 \" t9 J; f$ T  ^8 ~1 C5 o需求
3 A& S2 U; J7 ]① 原子 STM32F103ZET6精英板 x1
. l: W, t* x9 M7 t+ ~② NRF24L01模块 x2
. W% }2 u) D2 E4 A; C③ NRF24L01-串口转USB转换模块 x2
5 ?) D1 R- f8 E/ h+ d$ ?连接/ M4 e8 z- Z* O' Z+ |
①与电脑相连: NRF24L01模块通过NRF24L01-串口转USB转换模块与PC的USB口相连。(需要注意需提前安装CH340驱动以保证PC能识别到端口)8 Z2 g1 m* N( \9 |
②与单片机相连:STM32F103预留了wireless引脚块(使用SPI2),可以直接插入NRF24L01模块。另外可手动进行引脚匹配。
6 X; x) J/ k: f2 }6 d! F! F( S; a# ?+ _6 H7 U6 k, J7 K
DBV_]28LS@J)`VV[(4G`14H.png 8 d5 z2 D  J2 e. t' ]

4 W2 v; l0 {& Z! b$ ? B`RAX8GYDX2H08UAJ~%X3AP.png + a) P; B+ e$ J. s* A
; s& M9 y4 b7 Q# I3 K! h& x" f

- O4 u" @6 L2 Z$ |$ e5 r+ n3. 软件实现
: w, E2 o4 e, W! C$ ~' u代码是有现成的,可以参考原子的源码及讲解课程第66讲 2.4G无线通信实验。/ J" ^( u) D. W3 K) B2 h
需要注意的是要收发端的NRF24L01参数设置一致才可实现相互通信,主要涉及
& m( O2 }  Q0 o+ |2 V/ b①波特率9600(仅需确保PC串口波特率与NRF24L01-串口转USB转换模块一致,模块默认是9600)
8 C* ^# q* V  v6 O, m: M6 M②传输速率:2Mpbs6 ?7 l$ P" D6 @
③收发地址:0xFF, 0xFF, 0xFF, 0xFF, 0xFF(串口转USB转换模块默认地址,若PC与STM32通信,修改修改两者一致)  L3 x2 }' `- A7 M8 r
④通信频率:2.4Ghz(串口转USB转换模块默认,若PC与STM32通信,修改修改两者一致)
% U! g+ d  F, |0 A9 W⑤CRC校验位:16位
: t* e. T2 ?' k  p注:PC端以上参数是封装在NRF24L01-串口转USB转换模块中的,需要使用串口发送AT命令来修改。; N. j4 q$ J0 V, m( \2 ^# b
6 J* ?7 A, [. ]) T
D1@D2AO~{7{HITS~M7M@[AN.png
) v# K$ U8 R; m$ O5 t- W3 s) b2 ]2 I$ O+ x& f) y: M
4. 测试结果# C' t1 R6 `) l- a% H
4.1PC与PC通信

& E/ R" e0 M3 _/ H7 z  U插入两个NRF24L01模块,调用两个串口助手,使用其中一个串口发送消息’ABCDEFG’,另一个串口助手中可接收到’ABCDEFG’
4 T7 d2 d& i$ L, X3 r, G; d# H& t8 X6 G$ Z& N3 a3 H" W* x" n4 F
{5~L~LCX0CN3W]E@]QE[[13.png 3 G. j7 p7 m) ?/ c6 J( v

$ G1 W. V2 S) |* Q& u EL8%D{ZXBTY0V6@RHJVV%DX.png
& l. n' |: s" l8 F1 {: B* D5 n5 ~" F$ T7 I4 e
1 j; G+ N+ q4 {
4.2 STM32与STM32通信
) Q1 q4 d4 |7 A" d; q7 ^$ [# m1 w! W; X/ z& D4 c. j- ?# E# P

& J4 o; z" K6 R: X* e) p4.3 PC与STM32通信
3 V/ K- d2 `( h3 S/ z8 U& B0 s0 U写在前面:NRF24L01-串口转USB转换模块在对发送和接收数据时进行了处理,因此如果直接使用单片机发送’ABCDEF’的数据,则会出现PC接收不到的情况。原因在于转换模块第0个字节是系统保留的,用于每次传输的包长度统计,实际用户可用的字节为1-31个。例如PC串口发送‘ABC’,实际通过NRF24L01传输的是’3ABC’,接收端实际处理是应根据第0字节中的数来判断收到的数据包长度。0 b# J7 r3 I1 y9 I! W  C

( b& _% i0 _( R' s; m5 k  `测试:使用stm32连续发送’3BCDEF’的字符串,则可在PC端的串口助手中收到’BCD’的字符串8 k9 _! Z# c- @2 ^1 t

1 V  v3 ^- `+ C# R& r; z( T  K abc1b2776f614a3e96debce2ba97a027.png
9 V/ x3 V- O( }# ?6 A6 N/ Y$ b% N7 p. F! |- d/ d$ G% X
5. 结论
4 i8 L7 z. U$ l. W2 G9 z" z1.通信测试时需要确保通信两端的NRF24L01参数设置是一致的,包括地址、通信频率等。
0 q2 a( _9 J* d" f2.NRF24L01-串口转USB转换模块在对发送和接收数据时进行了特殊处理,在调试PC与STM32的通信时需要注意这一机制。4 v0 ?5 B" c! `0 w! q1 S% b' q

3 a+ u9 Q; r* ?6 @' P5 R) \3 C
! a# r  j! L4 ]- e* ~; ~* _6 R6 ]7 L6 `% g  G* t" H
; a2 J" _7 I( Y# d
收藏 评论0 发布时间:2022-5-10 22:35

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版