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

【NUCLEO-WBA65RI评测】3.P2PServer学习双向数据交互

[复制链接]
jundao721 发布时间:2025-9-7 20:42
      读学习向导,官方给出的例程中Peer to Peer ,即P2PServer 例程,用来学习使用两条特征值完成 手机和板卡的双向交互。方便学习者继续熟悉BLE设备的使用。+ ]4 q  Y2 e) @! ]2 I
继续使用keil 5来完成项目的Debug。打开手机app 中ST BLE ToolBox ,如图1所示:
. x! C( d0 {' o% Y& J% |& v" i) H 3-1.jpg - X" V, r  H  A* W# K$ |
图1- Q" u1 `* p( @0 Z5 h/ X

0 n( G2 P( q( K% Q; F  s上次app不好使,更新系统后,卸载并重新安装该款app, 能够正常连接使用。
, h0 t# h* G( w# |4 a$ T: a& g7 ]打开app,搜索板卡,会显示p2pS_AD的连接,点击connect,如图2所示:
; z' ^8 G0 H2 a; L0 @ 3-2.jpg ( G- m0 A2 P' k& V' R8 m
图2
6 ^7 J) t9 v- l/ `# {" `
7 [6 @9 g0 i- r6 N6 s0 L' v; R点进去,会出现如图3所示的界面2 U& s' n+ a3 J
3-3.jpg
, L* w- M/ Q' Z1 S图38 r7 A+ M+ }5 O% }

0 P/ U$ a7 n' X5 Z展开profile, 通过滑块开启或关闭板卡的LED1 蓝灯,效果如图4所示:/ n# U- Z3 A' V" M( u3 W
3-4.jpg 5 T2 X0 G7 c3 S3 i
图42 X/ m) e: N; {$ t

4 W" k& z- ?' ~8 y2 B' U/ e点击B1 button, app 界面会收到数据反馈,如图5所示:
+ c9 V! L# l. R7 d! w; l 3-5.jpg $ @3 B% Z- z) _5 ^6 v9 C
图5
/ d# o! M+ o* O1 u. J0 I& X1 P. [- s: m- {/ p5 F
测试完功能,就得需要修改为自己能理解的代码了。首先搞清楚板卡和手机究竟发了哪些数据。
3 A7 Q* X: b. z' O找到板卡LED相应函数,在p2p_server_app.c 的文件里,就是void P2P_SERVER_Notification(P2P_SERVER_NotificationEvt_t *p_Notification)这个函数。8 u/ D/ `  K0 z; Z7 Y
定义了一个全局变量的数组,并在函数内完成赋值,如下所示:
1 D8 Q5 I' j# H. T0 R
  1.      Rdata[0] = p_Notification->DataTransfered.p_Payload[0];
    ( T7 j5 C  z2 S" Q$ A
  2.                    Rdata[1] = p_Notification->DataTransfered.p_Payload[1];
复制代码

3 t( b7 I+ Z' S' L& V3 E0 u通过app下发指令,接收到的数据如图6和图7所示:
% H* F* g/ @+ r* g+ \7 ~$ @ 3-6.png
6 h' a5 w0 b' l图6
# e* ^( C& {4 R; Y. e+ F
# Q7 Q4 \% z6 @9 C5 F4 o 3-7.png
8 B5 i5 P* ]; d2 ]$ H8 @图7
8 k0 M7 }3 J: Y- y# L1 \5 ]. Y; t' U: ?; O
是的,是两个字节,0x0001 代表开灯,0x0000代表关灯。  i2 P( w3 r  n* X: f% d. D/ i
这个后面要修改为反转LED3.# i, Z4 w: `0 W5 i, r

: T/ q- \# }& t% Z

/ \. S+ i( q( A那按键返回的是什么数值呢,手机app上Details已显示,如图8和图9所示:
, d, F6 a9 E0 t' a" }% l 3-8.jpg
6 U/ v0 Q8 @5 ]+ z图8
! S! M% K, S2 B5 W1 C. s% t 3-9.jpg ) ^6 p+ a/ _, O( [, T
图9
+ Z0 J# q% A4 P# n/ _' k( S$ V/ L7 q9 c$ g( j7 W* ^
对,就是0x0100和0x0101。! \  X1 M" ]! E2 i0 f: J
. I% T. h/ c( Y) S* w

/ O+ Z! q8 W$ ?) T4 g3 O完成了双向通信,修改板卡代码,发送0x0002, Toggle LED3 红灯
, R- V' K0 @8 h$ c" N  J2 g5 y
* L" ~+ Y7 m0 o# d( h& a! A
% U8 R. L2 Z! b# ?$ z
添加程序,如下所示:
( P: b& V: c, ]; m" V* B
  1.     if(p_Notification->DataTransfered.p_Payload[1] == 0x02)
    " O3 D9 Y, _. K& c2 ~
  2.       {4 {7 x& g& d. L" J0 R2 f
  3.         #if (CFG_LED_SUPPORTED == 1)
    7 V5 n" ~- S9 o( o% y8 d
  4.         BSP_LED_Toggle(LED_RED);  // add code for testing
    ! K9 K$ o3 Z& y/ S5 E
  5. //                                HAL_Delay (1000);
    ! @1 {1 A- E4 f; Q+ Y! o; w
  6.         #endif
    . K/ n) {( G" I1 E# t
  7.         LOG_INFO_APP("-- P2P APPLICATION SERVER : LED1 OFF\n");
    ) R3 e9 @3 Z$ a  B3 L1 p
  8.         P2P_SERVER_APP_Context.LedControl.Led1 = 0x02; /* LED1 OFF */% F2 r$ W/ O* [. C0 f( A/ J8 e1 N
  9.       }
复制代码
/ Z/ v$ w9 S2 O. |
在app中发送这两个字节,如图10所示:
/ W& A, Y$ E, g9 e( u 3-10.jpg
6 G7 w9 f; u) m8 o. b图10
7 [+ M( W" K1 ^. p. a( i6 F1 m* T  X3 g/ }6 O3 P" }+ O5 K
效果如图11所示:
; d6 d. l6 m) N& P 3-11.jpg
6 I2 D8 Q  y- W图11
: D/ f  v( l# g/ P% t- T3 U基本完成和理解了数据的双向交互的过程,但官方提供的程序代码还需要好好深入理解,方便拿来使用到项目中。
" u& E8 `5 @. @+ {; H6 H1 }. F( J1 j* y: n4 X% [4 d6 X  d
赞 收藏 评论0 发布时间:2025-9-7 20:42

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版