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

基于STM32WB55开发之修改蓝牙地址(2)

[复制链接]
攻城狮Melo 发布时间:2023-11-16 14:20
套件概述
  w5 v" ~) Z0 o8 L& V9 D
7 q& i( x( c& O& H
在嵌入式蓝牙开发中,特别是针对STM32WB系列,修改或配置蓝牙设备地址是常见的需求。不论是为了实现特定的测试、满足隐私要求,还是为了区分开发和生产设备,对蓝牙地址的定制化处理都是至关重要的。本文将重点介绍如何利用aci_hal_write_config_data函数来成功地修改STM32WB的蓝牙地址。我们会详细探讨该函数的工作原理、所需的参数以及实际操作步骤,确保读者能够快速、高效地完成相关任务。
4 U1 p/ w' q! D) G8 R# k2 C9 Y; o& b8 k5 l2 L5 F" G- A- @
微信图片_20231116142035.png
8 j8 g* z: k  }/ I* Y* u

# X- X1 y4 a+ a选择芯片型号
% |' a$ `1 u$ N1 c3 \0 E, }% U
) O' L6 s( F1 l  Q8 Q2 h 微信图片_20231116142031.png
1 O: X( P  i1 b) L0 A. B3 D
8 E5 y+ n" f0 o
配置时钟源 + ~+ U! g0 r$ D2 v+ T) v5 w
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:
- y( Z" f0 q% s# j' T/ S% L. Z8 q1 o2 z0 b% C# u9 }
微信图片_20231116142027.png . G5 V) h. n: P
5 v6 ~$ t3 N" J3 d* d- u# q( H1 a; M* [
5 f# x. C! N2 p' e4 j
配置时钟树
: }4 s3 B9 J( b! q# g5 p* @+ H" t  A/ j- |" q  q2 N
微信图片_20231116142024.png
; \! t) T2 c& F& ~( S, a: S/ E' h! I% h& _
RTC时钟配置 ! @/ H% j' z  X8 @
% L2 M1 ^' N3 {' \
微信图片_20231116142020.png / \+ V# Y! c" m  h8 `( w
RFWKP时钟配置
6 Z# D# f. H, R+ X0 w. u2 v$ \% u$ t+ H* r; g8 q! d* w. j6 l
微信图片_20231116142017.png 4 U6 |- z( u9 V) |! E5 ~

( I; o5 G: S5 J; c, @5 P查看开启STM32_WPAN条件 7 A6 ~7 N! ~7 K/ @( l
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
' c) z$ K3 j& w0 F- l  F3 A: v; D1 @
- `5 \& N' {9 [ 微信图片_20231116142014.png 9 q$ ?5 D; V- ^* Y0 e' r! G5 w

, g8 `( W0 p( ^+ F% j

% g) O/ @% ?# }配置HSEM 1 R- _, B/ Q9 M% K- g
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。& g, E$ {5 z  @2 x
开启HSEM如下。, Q+ K1 ^, n) u! i9 w; N% p
9 o0 h' F* }# q% I6 v
微信图片_20231116142010.png
2 c* u, M: V% P2 M" c  n# C2 `, `/ ~
: Q7 ^( o7 l# H- E2 i6 U# q' z/ W; {7 j配置IPCC9 S) |& O# L  ?% r2 s( i
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
& h) ^; F7 r6 c+ F开启如下所示。- l5 Q/ F1 l+ P4 b
7 B/ @, c1 q8 G$ n: _0 a+ ~
微信图片_20231116142007.png 7 ~! T  z, o# f4 T% J, e
5 j: f/ A0 i% A3 e$ N  {
配置RTC & g' ?- T/ I/ G5 ?$ W
4 a- h* W4 l2 X
微信图片_20231116141956.png + T" e* B- }6 D" z% K0 P

" z/ |" Q; T" B启动RF 3 X* `2 j0 u% }- ^

, v: f+ {$ F1 p5 `0 c  f 微信图片_20231116141953.png 5 ~( i  r" |/ r# x" E# W5 ~4 E% }

! ~$ b" e1 d) w开启蓝牙 ; U& p. Y, b4 [
7 E% v$ n( n$ b) {
微信图片_20231116141948.png
% y6 B4 h' d9 S8 B' |9 `8 }* w

$ X" d1 L4 L7 `2 X6 S" A5 W  B$ W配置为自定义模板。
- a7 t) p+ D2 ~4 F% o5 c  t4 k% q! t4 L4 e3 p; m
微信图片_20231116141944.png
  o2 V; V* |; T0 G
1 S2 V+ \" K: g, O; q  @. O7 N7 e

+ U: v2 V1 r7 u* Q6 G命名设备名
2 J" D; Z$ O0 s: `$ O
3 A" {. ~$ q- `( O- W
微信图片_20231116141939.png
1 n2 Z- }1 h0 c6 L
% i* b5 L9 Y7 {* {* `# W0 q1 C
配置BLE GATT, x( z- _' r, z: y" B/ V; ^# N

9 j  b3 }. i& @/ k* B
微信图片_20231116141935.png
. Y" V' F  W4 E# h$ d9 Q! q5 r; V# G3 @% [5 [
配置SVC7 J; i# {7 A8 J! l2 [% f- L3 M4 n

1 [% p2 i- p' a4 a: r
微信图片_20231116141929.png
4 s8 `2 Z4 I+ [4 Y2 E

7 g1 I# I0 l/ R6 `设置工程信息 8 y" Q7 z; `) y5 |3 V

8 z* L* k5 c3 U$ w. L3 F" O9 }
微信图片_20231116141927.png   |5 i7 @( i( `* [" }: J7 W

( X5 u! k9 R* P2 m工程文件设置 - L6 j: ]+ |* Y$ U6 T( h

( ]0 s2 y7 Y6 c! C8 L! e: [' N
* g' P9 z/ e! u7 D# r

" P: Y1 s$ f) Z/ r/ a工程文件设置
$ x8 T8 w, |, `1 R
设置公共地址的ACI命令为:
. ?$ v, t9 p" b, z$ M! StBleStatus aci_hal_write_config_data(uint8_t offset, uint8_t len, const uint8_t *val).' u# q+ ]" q3 ]

9 b! E3 \: [5 I5 o- Q 微信图片_20231116141917.png
! d; y. U8 m0 B& T9 k) @

3 G2 l: C. H% L- d3 R修改方式如下所示。
3 v1 I0 h& @: `- d5 g- P9 b7 b, D, W* t* \9 F
微信图片_20231116141912.png
* c4 k. M" }  b5 d1 |/ w' q. q4 f$ P9 O8 k
Ble_Hci_Gap_Gatt_Init $ |7 @& I. n+ w9 F( `% L/ |
这段代码主要用于初始化STM32WB系列的蓝牙(BLE)相关功能。3 h4 a; p) c7 m" h

: W9 X- J( C& {1 Z4 L
微信图片_20231116141902.png ( T* o& z. I$ @% p) Z  a8 d
1 ?* ~6 g( f: k
下面选中的函数可以修改BLE设备公共地址。  U# l% ~& y& G3 Z

2 [( {5 U' K5 o. w设置BLE公共地址:首先,获取BLE默认地址BleGetBdAddress,然后通过aci_hal_write_config_data函数使用预定义的地址(0xFF, 0xEE, 0**, 0xCC, 0xBB, 0xAA)覆盖它。
% q' d' W& }" F  d% E$ \4 V' x+ P  @( G9 b( w- ^& U
生成/设置静态随机地址:根据条件编译标志来确定是使用预定义的静态随机地址还是使用随机数生成器产生的地址。设置了正确的格式后,通过aci_hal_write_config_data将随机地址写入BLE控制器。
& O4 B0 y) N- n$ `9 i% d7 T$ S* P9 i9 ?: |& w2 j9 k  |
微信图片_20231116141850.png 4 P" m, @2 k6 }* J$ e( ?
7 Y9 r  j$ m- {" r' ]$ h
  uint8_t bdaddr[] = {0xFF, 0xEE, 0**, 0xCC, 0xBB, 0xAA};4 D- J, H  C$ u: t7 _# b0 ]9 I' J
  ret = aci_hal_write_config_data(CONFIG_DATA_PUBADDR_OFFSET, CONFIG_DATA_PUBADDR_LEN, bdaddr);
, Z* U$ b/ W2 D9 f5 m. z7 t0 p
8 E1 K  H% h) |8 ^% e1 c结果演示 3 a3 }" _5 G/ t# h! q: Z% e, S
通过手机和STM32WB建立连接和断开连接可以查看到BLE地址如下。
" o( G( e3 h' Q* V1 v3 g" }" [+ M" Q

! I% z5 M, v4 M9 p: @ 微信图片_20231116141846.png , C0 y; [* ?2 e9 `2 {
* \6 b2 T. o7 E  u
转载自: 记帖[color=rgba(0, 0, 0, 0.9)] 8 g/ \+ D1 h- Q: F. j0 W
如有侵权请联系删除5 k, M$ e' x2 ?! j4 j

* W' k- ^  u0 M/ A& l5 F& K  [1 p2 z
微信图片_20231116141924.png
收藏 评论0 发布时间:2023-11-16 14:20

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版