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

【STM32WB55评测】评测五 电表蓝牙配置(小项目)

[复制链接]
MingXJ 发布时间:2023-7-23 18:10
评测五 电表蓝牙配置(小项目)
      之前申请评测就讲过电力物联网的事,现在电表配的蓝牙功能要符合国网电科院的规定,具体为MAC地址、profile、类型等等诸多要求,效果如下:
8 t: H8 J; _" x7 ~* n0 o
, Z/ f. V( A2 `: Z
一、设备名; z8 [% m% Q$ U
      设备名这个没要求,可选,规GAP管,在app_ble.c的广播函数Adv_Request把a_LocalName=“Meter”,同时连接后GAP名字也要改,具体Ble_Hci_Gap_Gatt_Init的aci_gap_init的name=“Meter”,同时实际长度APPBLE_GAP_DEVICE_NAME_LENGTH=5,
5 Z( x8 j4 E$ G9 N
微信图片_20230723163217.jpg
图1 电表广播
二、MAC地址3 \8 {2 B6 ~2 a$ f) c5 m4 \
       MAC有要求,类型为静态随机地址,在app_conf.h修改CFG_IDENTITY_ADDRESS、CFG_BLE_ADDRESS_TYPE均为GAP_STATIC_RANDOM_ADDR,同时要把表地址设进MAC地址,把随机数a_srd_bd_addr设成表地址如上图。
' r9 D! n6 A3 J# B. h# d/ |4 k, b2 [
MAC.png
图2 MAC要求

2 ]: {7 K' v$ _( N$ a) \三、service0 c2 {( H( Y% |7 ~' C: f6 C9 O
      很明显,新建profile是最直接的路子,通过aci_gatt_add_service、aci_gatt_add_char、aci_gatt_add_char_desc接口来添加服务、特征、描述符等,详见《AN5289 - Building a Wireless application》6.1 Initialization phase章节描述,比如p2pserver源码在p2p_stm.c里P2PS_STM_Init强函数中。电表蓝牙profile如下:+ H. J( @- ]1 v+ u
通信UUID.png
图3 电表通信profile配置
但在短时间内不熟悉情况下很难完成,于是改造原来已存的服务为电表抄表服务,于是在p2p_stm.c的事件回调里PeerToPeer_Event_Handler往UUID=7941dc24-0ee5-a9e0-93f3-a3b50200406e写入DL/T645请求报文,回复报文在UUID=7941dc24-0ee5-a9e0-93f3-a3b50300406e以通知方式发送:
( h) S  x/ a" B* e3 x
  1. //645报文:起始符68+地址域(6B)+起始符+控制域+数据长度+数据域+CS(1B)+结束符16
    ) E9 m& c4 O( d; a$ l
  2.               uint8_t dlt645FrameReq[50];- J- e3 f  |0 q8 d+ J% M# p9 s# ?, B
  3.               uint8_t dlt645FrameRsp[50];$ d3 u  h' p$ z- ]7 m8 X
  4.               uint8_t i=0;6 {; f$ a$ b! X: k% R8 i
  5.               uint16_t len=Notification.DataTransfered.Length;: ~/ c7 c7 b9 A7 R4 u) Z
  6.               memcpy(dlt645FrameReq,Notification.DataTransfered.pPayload,len);+ }- S3 k3 F: Y5 q' N, h
  7.               if(dlt645FrameReq[0]!=0x68||sum(dlt645FrameReq,len-2)!=dlt645FrameReq[len-2]||dlt645FrameReq[len-1]!=0x16)1 H7 `8 ~4 w( z1 u& B& ]
  8.                   return 0;
    8 e2 t- ~7 m0 `; E0 i: ^: D) h) s
  9.               switch(dlt645FrameReq[8])  }4 Y2 {0 _+ g. l
  10.               {6 d1 i6 I! _: A5 u7 c
  11.               case CMD_READ_ADDR:
    ; _5 c, `/ w7 o8 a6 ^
  12.                   //P2PS_STM_App_Notification(&Notification);
    , t: v) z" h/ |7 ]6 y, X
  13.                   dlt645FrameRsp[0]=0x68;- j* u# c( c( o% w( D2 D8 a7 y
  14.                   memcpy(dlt645FrameRsp+1,meterAddr,6);
    & Z3 {8 q# I7 J( g* {7 j2 G
  15.                   dlt645FrameRsp[7]=0x68;5 }# m  j' f1 ?6 m$ C/ q
  16.                   dlt645FrameRsp[8]=CMD_READ_ADDR|0x80;, F3 [9 o1 g) |
  17.                   dlt645FrameRsp[9]=0x06;' U9 @( O/ F' g- P4 A8 K: f
  18.                   for(i=0;i<6;i++)
    ; f1 a0 w# Y5 c4 }  d9 q
  19.                       dlt645FrameRsp[10+i]=meterAddr[i]+0x33;
    2 H7 {- l8 h) T/ G$ j) p. q
  20.                   dlt645FrameRsp[16]=sum(dlt645FrameRsp,15);
    8 U0 \; D" w1 Q6 E4 A( o
  21.                   dlt645FrameRsp[17]=0x16;
    9 n1 Q. X- w$ R, W* O6 j  m; d; ]: T/ A
  22.                   tBleStatus result = BLE_STATUS_INVALID_PARAMS;0 \" S" @/ f0 ~$ j( I" c0 ]) f
  23.                   result = aci_gatt_update_char_value(aPeerToPeerContext.PeerToPeerSvcHdle,
    # L. x9 ?9 T: \
  24.                              aPeerToPeerContext.P2PNotifyServerToClientCharHdle,- }* U" }" w0 ~! @  l8 c
  25.                               0, /* charValOffset */
    , x2 r" q9 L3 N( `$ i) v
  26.                              18, /* charValueLen */" v! K- s& u; n" j. w
  27.                              (uint8_t *)  dlt645FrameRsp);$ ~, [7 E' k& a" n
  28.                   //P2PS_STM_App_Update_Char(P2P_NOTIFY_CHAR_UUID, (uint8_t *)&P2P_Server_App_Context.ButtonControl);                     
    ! C: H/ P% ^$ M3 r. _- I
  29.                   break;
    0 d* q! [8 l7 `# f% [# o. Y7 ~$ t& y; D
  30.               default:
    ; f9 e8 H0 m$ W9 E; m$ y. @) l. @
  31.                   break;
    " e+ S4 Q6 n2 t8 E* e
  32.               }
复制代码
这里以抄读表地址为例,请求报文、回复报文依次为:
3 `* g, I- b7 y% b5 x主站请求:68 AA AA AA AA AA AA 68 13 00 DF 16" ^9 }5 {( y: ]3 y; x8 A
电表回复:68 11 11 11 11 11 11 68 93 06 44 44 44 44 44 44 67 167 r9 i' X. G1 z9 I% h
成功读到表地址为11 11 11 11 11 11:
微信图片_20230723163156.jpg
图4 成功读到表地址

% r) p- u# P" ^  a9 }0 V5 W/ L* e
/ [' B+ r6 n8 s' g4 O+ s# `/ A
( [% K  A5 ^, D" I! n

" X7 s7 L; _  ~, N! R
0 m% }- i/ R6 [& l2 M$ `# @( F4 G- L" e8 m- _& Z/ i* k3 D# t' l
收藏 评论0 发布时间:2023-7-23 18:10

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版