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

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

[复制链接]
jundao721 发布时间:2025-9-7 20:42
      读学习向导,官方给出的例程中Peer to Peer ,即P2PServer 例程,用来学习使用两条特征值完成 手机和板卡的双向交互。方便学习者继续熟悉BLE设备的使用。. N; \4 V+ j0 K- N
继续使用keil 5来完成项目的Debug。打开手机app 中ST BLE ToolBox ,如图1所示:! l3 h. k' D( N( R- N# T/ Q
3-1.jpg / K: n; ?+ G! w) s; m
图1. f" Y3 z' \6 n
- s3 W7 e+ }; q
上次app不好使,更新系统后,卸载并重新安装该款app, 能够正常连接使用。" G+ x6 n: S/ {. P7 S9 a: a7 A) Z1 t
打开app,搜索板卡,会显示p2pS_AD的连接,点击connect,如图2所示:" \0 ^+ Q  [4 C% T
3-2.jpg
2 X* Y) S' r8 A' N! O7 q$ x图2& M& \5 u/ ~. K8 @6 A
: e+ A7 P6 s1 E0 I
点进去,会出现如图3所示的界面
* N0 I, p5 p& O% ~& `# ]" } 3-3.jpg
, ]7 p, b. s+ q4 O# b7 ]6 m: q/ m图3
- e5 Q$ c; v: E2 S2 k% V! T
: H  z( g$ j) V( w8 v展开profile, 通过滑块开启或关闭板卡的LED1 蓝灯,效果如图4所示:
1 A2 L1 [& z# T- x7 O' G( k 3-4.jpg
8 K3 C7 n6 R. b! s4 z. U图4/ R6 U& ]+ R7 H, S4 c2 @3 F

4 r; |; E' s+ L  h9 Q& |" q点击B1 button, app 界面会收到数据反馈,如图5所示:
3 `3 [+ K9 {+ a( l$ I  ~ 3-5.jpg ( d7 n- V/ R! U! X9 ^3 s6 k
图51 q6 E" Y4 v( q7 e8 W! T1 V9 k5 q

3 ?6 h  U, Y; B, j5 s3 L3 `% m: H测试完功能,就得需要修改为自己能理解的代码了。首先搞清楚板卡和手机究竟发了哪些数据。
3 ^" g) n1 D8 n7 y% j! n. t/ _! o找到板卡LED相应函数,在p2p_server_app.c 的文件里,就是void P2P_SERVER_Notification(P2P_SERVER_NotificationEvt_t *p_Notification)这个函数。. h5 M" |5 j$ M8 [
定义了一个全局变量的数组,并在函数内完成赋值,如下所示:2 |; e" l8 v, ]  u7 W
  1.      Rdata[0] = p_Notification->DataTransfered.p_Payload[0];4 V( k4 ~8 Y5 B$ p% i
  2.                    Rdata[1] = p_Notification->DataTransfered.p_Payload[1];
复制代码

1 j. ~2 A; U* Y9 {$ [通过app下发指令,接收到的数据如图6和图7所示:
* ~" F- @! i+ [ 3-6.png
; u) f7 K7 u/ J. k5 c" G图6
5 m  B% n% R3 G* P! T; i$ \2 T( f2 C, J  ~/ R
3-7.png & n/ P; |0 {' U4 i; i
图7+ i: o: u' N5 [3 \$ a( \  ]

* d# {/ U4 e8 N* X  s: e是的,是两个字节,0x0001 代表开灯,0x0000代表关灯。
: b0 l0 T: B0 H* r, B  d0 L, ]这个后面要修改为反转LED3.' l3 Y& _# S( v1 G: R! W

! B" g+ C6 `- M$ T' V
0 Y& W# d7 L1 }# |5 Q
那按键返回的是什么数值呢,手机app上Details已显示,如图8和图9所示:
1 n: s" Q! S' D  S9 X 3-8.jpg
( L6 o# O" f8 y5 j8 @图8
6 b- G# Y4 D& e$ y 3-9.jpg 0 `3 E( ~" j* T2 u
图9
0 t8 g2 j! z5 m$ b" P# K( k& b0 N9 l
对,就是0x0100和0x0101。! I- U% p6 T9 m- o) X) N, q; J1 ~5 F
* R0 {" e% M9 h+ h( S8 H; W

1 p$ s# S4 ^9 e5 n完成了双向通信,修改板卡代码,发送0x0002, Toggle LED3 红灯: ?6 ?. T' X. x

* b; x+ c4 u  C( u7 k0 o

  Y8 b4 [! G3 y% I' x/ Z添加程序,如下所示:
; P1 O2 ~( W" `* F* m- v0 \
  1.     if(p_Notification->DataTransfered.p_Payload[1] == 0x02)7 C3 X* R; F1 P
  2.       {9 ]* u! z- v7 c& }) ?/ ?4 V, K
  3.         #if (CFG_LED_SUPPORTED == 1)
    - a8 N1 ]5 l3 t7 E' t; n$ L+ W; h5 n
  4.         BSP_LED_Toggle(LED_RED);  // add code for testing
    $ |4 ~( W( C5 m- _$ ~' V
  5. //                                HAL_Delay (1000);
    2 ~# D' I9 s" S% R
  6.         #endif
    8 W2 ?. r7 u- G) D3 P
  7.         LOG_INFO_APP("-- P2P APPLICATION SERVER : LED1 OFF\n");  N1 r' b, z* b
  8.         P2P_SERVER_APP_Context.LedControl.Led1 = 0x02; /* LED1 OFF */6 `/ Z, E6 e7 ?7 Z2 L
  9.       }
复制代码
: Q" U/ B" y, U8 t
在app中发送这两个字节,如图10所示:$ K/ p  W. z3 C. M- [
3-10.jpg . j$ [9 B3 |6 H3 u4 U0 ~' Z. ]( Q0 \
图108 H& ]7 `+ v- ^% K+ r# i+ p

% R# p* q4 N% g$ l) ]0 W9 G2 s8 A( B效果如图11所示:# y: ~: a5 g" B5 D
3-11.jpg ' C/ I5 z- p6 a' D
图11
+ v0 V+ w, ^: c, G9 D基本完成和理解了数据的双向交互的过程,但官方提供的程序代码还需要好好深入理解,方便拿来使用到项目中。5 q3 X  n1 o. e9 l& o
- h: a" O% e3 U" g- \* k
赞 收藏 评论0 发布时间:2025-9-7 20:42

举报

0个回答

所属标签

相似技术帖

官网相关资源

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