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

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

[复制链接]
jundao721 发布时间:2025-9-7 20:42
      读学习向导,官方给出的例程中Peer to Peer ,即P2PServer 例程,用来学习使用两条特征值完成 手机和板卡的双向交互。方便学习者继续熟悉BLE设备的使用。
) O, v: Y3 N% K$ `, ^% g' `继续使用keil 5来完成项目的Debug。打开手机app 中ST BLE ToolBox ,如图1所示:) l" S8 p2 o: g7 ]. O
3-1.jpg , K, W6 z: F% E! c4 }' m4 P
图1, t: p; i" x: U$ \( t) v
6 a; x: l5 g" y- ?
上次app不好使,更新系统后,卸载并重新安装该款app, 能够正常连接使用。
8 v6 {& {; U, u+ v# G打开app,搜索板卡,会显示p2pS_AD的连接,点击connect,如图2所示:
1 Q8 `/ F6 V7 a5 ~+ F: i8 ~) J1 } 3-2.jpg
$ P# ]2 ]! l: W& e/ _( q0 L6 R0 W图2
. I" G4 Z) m: b( @, x) Z" n
/ j, b7 Y; I5 M点进去,会出现如图3所示的界面0 ^" y: _9 ^: E7 D9 T
3-3.jpg ! E5 I* M1 w; X5 D, @( i
图3
- g" Z0 t0 [- W# M/ s5 z" E& b- E5 ?8 I+ v2 e$ m
展开profile, 通过滑块开启或关闭板卡的LED1 蓝灯,效果如图4所示:
, O2 q% C( z  c6 M0 m% j 3-4.jpg
& ~& f& e4 l- f. l8 O/ E图4
* o. V0 ~1 r0 Y& U! m4 I  G8 G- [' \3 f6 v9 Q
点击B1 button, app 界面会收到数据反馈,如图5所示:
! p8 w* C& D) y! u! w: q( | 3-5.jpg
' `  f" o5 Z$ y. r& z, q图5
  ]7 o: e: R: ^& U! h6 Y+ W# p) r
测试完功能,就得需要修改为自己能理解的代码了。首先搞清楚板卡和手机究竟发了哪些数据。
% _5 E7 s( |* r1 `# E3 I找到板卡LED相应函数,在p2p_server_app.c 的文件里,就是void P2P_SERVER_Notification(P2P_SERVER_NotificationEvt_t *p_Notification)这个函数。" _; V+ `$ Z3 ~# H- ~
定义了一个全局变量的数组,并在函数内完成赋值,如下所示:
" S# I0 P* T$ c) O% u
  1.      Rdata[0] = p_Notification->DataTransfered.p_Payload[0];, d, p# S, M( M' F4 q
  2.                    Rdata[1] = p_Notification->DataTransfered.p_Payload[1];
复制代码
5 a/ \$ e6 |& [7 x+ W2 T* m  }
通过app下发指令,接收到的数据如图6和图7所示:/ @1 b4 v! n; a! T  N
3-6.png 1 u3 F8 C' t" F
图6
4 ^& J  a6 ^& S4 r5 @7 ?1 r- t6 }! y' O1 y  ]& l
3-7.png $ E" L  E4 y8 L, S; A4 Y; j
图7
4 i& c. |, h4 J  }7 p9 K
0 w4 ^7 Y: }0 Z' Z. s& X% T  u是的,是两个字节,0x0001 代表开灯,0x0000代表关灯。
" W9 e: S! O. B9 t这个后面要修改为反转LED3.+ X4 E8 N! G/ B$ m) }

. Y( U+ ?4 O- J

% N5 _+ ?% G9 O. c* p3 D* Q那按键返回的是什么数值呢,手机app上Details已显示,如图8和图9所示:* j$ a' h: I  E9 C" }# e$ u
3-8.jpg
9 H; _5 e% k+ K& a4 }  Q( \  e图81 c: o- u3 w7 m$ F; K2 ?8 n6 ~
3-9.jpg , k' F2 D$ i( J/ k
图9
( w; u  m* V2 @/ L
3 F+ w- M6 }- K对,就是0x0100和0x0101。# @# \" D% N" l# I* e3 K
% U# ~0 Y0 v9 G8 T! _" y9 m6 H
+ z4 J3 k/ |; ]  z' u9 J2 \
完成了双向通信,修改板卡代码,发送0x0002, Toggle LED3 红灯* F, w, I- n' K
4 g7 Z2 n% f* e+ r7 N2 A0 Q) x

6 C- W  K  }( t4 Q8 E% v添加程序,如下所示:
6 O! \9 h6 h; M# ^1 `  N8 U
  1.     if(p_Notification->DataTransfered.p_Payload[1] == 0x02): F8 r8 b  c3 e7 ?
  2.       {
    & h2 Y2 d1 L% k. }* X
  3.         #if (CFG_LED_SUPPORTED == 1)  c& N" T+ c( o5 {" d8 s$ I' {$ j
  4.         BSP_LED_Toggle(LED_RED);  // add code for testing/ X# q3 K' Z3 f% e
  5. //                                HAL_Delay (1000);
    2 L1 c3 M  |- t2 H' \: a( Y" S
  6.         #endif4 U+ q1 ], ^, R3 D( H/ C$ H3 |
  7.         LOG_INFO_APP("-- P2P APPLICATION SERVER : LED1 OFF\n");
    * Y4 v3 n; R- W9 {
  8.         P2P_SERVER_APP_Context.LedControl.Led1 = 0x02; /* LED1 OFF */* A: F- [. x# t1 s; j1 G
  9.       }
复制代码

' x$ k9 N! |5 F1 }6 ?在app中发送这两个字节,如图10所示:- Q) K+ K! R: p/ o) u. v
3-10.jpg
# w( y/ c9 O6 {6 w图10
  l# K5 @! i4 @; t( p4 n" f6 F( v; x) h, f4 a
效果如图11所示:; \: h7 A4 `- \. x
3-11.jpg * d, \$ N' }6 [. v
图11
. n( q- o- m* w0 I& T& P6 k* Z基本完成和理解了数据的双向交互的过程,但官方提供的程序代码还需要好好深入理解,方便拿来使用到项目中。3 `% Y/ E$ n1 H. I% H$ }4 b- E6 @
0 W$ `$ D# z: o
赞 收藏 评论0 发布时间:2025-9-7 20:42

举报

0个回答

所属标签

相似技术帖

官网相关资源

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