没有合适的资源?快使用搜索试试~ 我知道了~
首页STM32WB系列微控制器:构建无线蓝牙与802.15.4应用详指南
本应用笔记AN5289详细介绍了如何利用STM32WB系列微控制器构建针对蓝牙低功耗(BLE)和802.15.4标准(如OpenThread和Zigbee)的无线应用。设计者需具备扎实的STM32微控制器知识,包括其架构、蓝牙低功耗技术、802.15.4协议(特别是MAC层)、以及系统服务如低功耗管理和任务调度的理解。 首先,文档强调了对射频协议栈的支持,包括BLE(通过高级通信接口,如Host Controller Interface,HCI)的应用开发,以及Thread协议的实现。同时,它还讨论了如何在不同应用之间切换,如BLE和Thread的并发操作,确保资源的有效利用。 STM32WB的软件架构部分深入探讨了微控制器的关键组件,如内存映射、共享外设(如GPIO和定时器)、低功耗管理器(包括电源管理和唤醒机制)、以及Flash存储器管理,其中还涉及了CPU时序保护和调试信息的处理。此外,FreeRTOS(实时操作系统)在此环境下的低功耗特性和设备信息表的管理也得到了详述。 系统初始化是实施无线应用的基础,文档提供了关于CPU2启动流程和一般概念的指导,确保硬件正确配置和启动流程顺利进行。而具体的BLE应用设计则按照步骤展开,从基础设置到详细的操作流程都有涉及。 AN5289为STM32WB系列微控制器的无线应用开发者提供了一个全面的指南,涵盖了技术选型、软件架构、协议栈集成、系统初始化以及实际应用开发的各个方面,旨在帮助设计人员高效地构建出符合低功耗要求的无线解决方案。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/88971438/bg10.jpg)
软件概述 AN5289
16/165 AN5289 Rev 1 [English Rev 8]
BLE_TransparentMode 项目可用作使用邮箱(mailbox)在 BLE HCI 层协处理器之上构建应用
(如
第
11.2
节:
Thread_Coap_DataTransfer)所述的例子。
3.4 Thread 应用
OpenThread 协议栈运行在 CPU2 内核上,并在 CPU1 侧导出一组 API,以便构建完整的 Thread
应用。三个 CPU2 固件支持 Thread 协议:
sm32wb5x_Thread_FTD_fw:在这种情况下,设备支持除边界路由器外的所有 Thread 角色
(例如:主导设备(Leader)、路由器、终端设备和休眠终端设备)。
stm32wb5x_Thread_MTD_fw:在这种情况下,设备只能充当终端设备或休眠终端设备)。
相比于 FTD 配置,这种配置更节省存储空间。
stm32wb5x_BLE_Thread_fw:在这种情况下,设备在静态并发模式下同时支持 Thread
(FTD)和 BLE(请参考
第
3.6
节
获取更多信息)。
3.5 MAC 802_15_4 应用
在下载 STM32wb5x_Mac_802_15_4_fw CPU2 固件时,CPU1 可以直接访问 802_15_4 MAC 层
并在这一层之上构建自己的应用。
3.6 BLE 和 Thread 应用并发模式
STM32WB 系列微控制器支持“静态并发模式”(也称“开关模式”)。
内嵌两种射频协议栈(BLE 和 Thread)的 stm32wb5x_BLE_Thread_fw CPU2 固件可从 ST 网站
www.st.com 上获取。通过系统应用命令完成从一种协议到另一种协议的切换。在该模式下,系统
在激活另一种协议前禁用正在使用的协议。STM32WB 器件在完全停止 BLE 射频协议栈后从 BLE
切换至 Thread,反之亦然。可能需要几秒钟的时间完成此类过渡,因为每次都需要重新连接网络。
![](https://csdnimg.cn/release/download_crawler_static/88971438/bg11.jpg)
AN5289 STM32WB 软件架构
AN5289 Rev 1 [English Rev 8] 17/165
4 STM32WB 软件架构
4.1 主要原理
在 CPU2 上运行的所有代码均以加密二进制数据的形式交付
在客户的视角 CPU2 是个黑盒
在 CPU1 上运行的所有代码均以源代码的形式交付
CPU 之间通过“邮箱(mailbox)”进行通信
标准 STM32Cube 交付包包含诸如以下 STM32WB 资源:
用于访问硬件寄存器的 HAL/LL
BSP
中间件(例如:FreeRTOS、USB 设备)。
此外,下列应用提供高效的系统集成:
调度器,用于在后台执行任务并在没有活动时进入低功耗模式
定时器服务器,为应用提供在 RTC 上运行的虚拟定时器(在停止和待机模式下)。
![](https://csdnimg.cn/release/download_crawler_static/88971438/bg12.jpg)
STM32WB 软件架构 AN5289
18/165 AN5289 Rev 1 [English Rev 8]
4.2 存储器映射
图 4. 存储器映射
Flash、SRAM2a 和 SRAM2b 存储器包含不能通过 CPU1 读取或写入的安全存储区。可从选项字
节读取每个存储器的安全起始地址,在
图
4 中用蓝色表示:
Flash 存储器的 SFSA
SRAM2a 的 SBRSA(在待机时保留)
SRAM2b 的 SNBRSA。
这些选项字节只能通过运行在 CPU2 上的 FUS 写入。这是 FUS 在每次安装 CPU2 更新时完成的。
用户应用必须考虑到不同 RF 射频协议栈版本的可用内存可能不一样。用户应用的可用空间可从
STM32WB 协处理器射频协议二进制文件的版本说明中获取。RF 射频协议栈的安装地址也是用户
Flash 存储器区域的边界地址。
![](https://csdnimg.cn/release/download_crawler_static/88971438/bg13.jpg)
AN5289 STM32WB 软件架构
AN5289 Rev 1 [English Rev 8] 19/165
确保 CPU2 域中包含一些余量,以支持产品生命周期中的更新。
Flash 存储器的边界粒度为 4 KB,SRAM2a 和 SRAM2b 的为 1 KB。
交付的所有 BLE/Thread 应用(BLE_Thread_Static、BLE_HeartRate_ota 和 BLE_p2pServer_ota
除外)的链接器文件是相同的。选择的可用内存适合提供的所有应用。对于像 BLE 这样 CPU2 内
存需求较少的应用,可以更新链接器文件,以便为应用分配更多内存。
为了优化专用应用的可用内存,必须按照下列指导方针更新链接器文件:
Flash 存储器:可用内存的结束地址可以到 SFSA 地址。当需要更新 CPU2 时,必须有刚好低
于安全内存的足够空闲内存用于上传新的加密 CPU2 固件更新。所需内存大小取决于要更新
的 CPU2 固件(BLE、Thread 或并发 BLE/Thread),参见[1]。
SRAM1:只有 BLE_OTA 应用要求链接器文件中的前 32 位不可用。对于所有其他应用,起始
地址可从 SRAM1_BASE + 4 到 SRAM1_BASE。
SRAM2a:可用内存的结束地址可以到 SBRSA 地址。当需要 CPU2 更新支持时,必须有刚好
低于安全内存的一些空闲扇区用于支持新的 CPU2 固件更新(需要更多扇区才稳妥)。
SRAM2b:SRAM2b 不是链接器文件的一部分,因为它对支持 Thread 协议的任何固件 CPU2
都是完全安全的。对于只使用 BLE 的应用,可通过新存储区更新链接器文件,以便将 RW 数
据映射到 SRAM2B(从 SRAM2B_BASE 到 SNBRSA 地址)。当需要 CPU2 更新支持时,必
须有刚好低于安全内存的一些空闲扇区用于支持新的 CPU2 固件更新(需要更多扇区才稳
妥)。
STOP2 是 RF 激活时支持的最深低功耗模式。当用户应用程序必须进入待机模式时,它必须首先
停止所有 RF 活动,并在退出待机模式时完全重新初始化 CPU2。用户应用可使用整个非安全
SRAM2a 来存储自己的内容(在待机模式下需要保留的内容)。
4.3 共享外设
AES2 保留给 CPU2,CPU1 绝对不能使用/访问它。
AES1 被保留给 CPU1,CPU2 永远不会使用/访问它。CPU2 访问 AES1 的唯一情况是 CPU1 请求
在客户密钥存储区域上写入用户密钥。相关内容在[6]中介绍。
通过硬件信号量保护两个 CPU 可同时访问的任何其他外设。在访问这些外设前,必须先获取相关
信号量,然后再释放。
![](https://csdnimg.cn/release/download_crawler_static/88971438/bg14.jpg)
STM32WB 软件架构 AN5289
20/165 AN5289 Rev 1 [English Rev 8]
表 2. 信号量
信号量
目的
Sem0 RNG - 所有寄存器
Sem1 PKA - 所有寄存器
Sem2 FLASH - 所有寄存器
Sem3
RCC_CR
RCC_EXTCFGR
RCC_CFGR
RCC_SMPSCR
Sem4 停止模式实现的时钟控制机制。
Sem5
RCC_CRRCR
RCC_CCIPR
Sem6 被 CPU1 用来防止 CPU2 在 Flash 存储器中写入/擦除数据。
Sem7 被 CPU2 用来防止 CPU1 在 Flash 存储器中写入/擦除数据。
Sem8
确保当 CPU1 正在读取 SRAM2 中的 Thread 持久性数据时,CPU2 不会更新这些
数据。
Sem9
确保当 CPU1 正在读取 SRAM2 中的 BLE 持久性数据时,CPU2 不会更新这些数
据。
如果应用需使用信号量进行任务间控制,建议使用 Sem31 往下的信号量以兼容未来 CPU1 上的射
频固件更新,这些更新可能是添加需要额外信号量的新特性。
Sem0 用于在两个 CPU 之间共享 RNG IP。CPU2 占用信号量并持续一段时间,这段时间取决于要
生成的必要 RNG 数和 RNG 源时钟速度。为了缩短获取 RNG 数的延时,建议首先生成一个 RNG
数池,在应用取出了一些数后,在池中填充低优先级任务以维持装满状态。Sem0 的使用如
图
8 所
示。
Sem 0 也可以用在 USB 用例中。当不再使用 USB 且需要通过应用关闭时,必须在关闭 CLK48 时
钟前获取 Sem 0。必须这样做的原因是,USB 和 RNG 共享一个时钟,当 CPU1 需要关闭 USB 时,
CPU2 可能正在使用 RNG(参见
图
9)。
Sem1 用于在两个 CPU 之间共享 PKA IP。
Sem2 用于在两个 CPU 之间共享 FLASH IP。CPU2 占用信号量并持续一段时间,这段时间取决于
要在 Flash 存储器中写入的数据量和要擦除的扇区数。BLE 协议栈将配对信息(当绑定启用时)和
GATT 属性缓存写入 Flash 存储器。
Sem3 用于低功耗管理。当有 BLE 的 RF 活动时,其被 CPU1 锁定的时间不得超过 500 µs。该算
法的详细信息请见
图
6 和
图
7。
当一个 CPU 退出低功耗模式同时另一个 CPU 进入低功耗模式时,使用 Sem4 处理系统时钟切换
时的竞争状态。该算法的详细信息请见
图
6 和
图
7。
示例中使用了 Sem3 和 Sem4 进入/退出停止模式。
剩余164页未读,继续阅读
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/5671098e354d4349a885dbe6bdb22d5d_u014319604.jpg!1)
冻结的鱼
- 粉丝: 1630
- 资源: 157
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)