STM32WB

01、前言

在使用STM32WB系列MCU时,通过STM32CubeProgramer GUI方式更新FUS,Stack,User APP,需要操作多次,并且要输入不同的地址,比较繁琐,不适合在量产中操作使用。

根据RN0109:STM32CubeProgrammer v2.11.0 release information描述,在STM32CubeProgrammer v2.11.0中已经支持通过CLI的方式自动更新FUS,Stack,以及User APP。

1.png

02、操作方法

根据UM2237 STM32CubeProgrammer command line interface(CLI)for MCUs文档描述,升级FUS,STACK,User APP会用到以下命令。

-startfus:启动FUS

2.png

-fwupgrade:升级BLE协议栈或FUS

3.png

-w,--write,-d,-download:下载二进制文件,下载前会先进行擦除操作

4.png

-hardRst:硬复位

5.png

单独升级FUS或协议栈时,根据以上的语法规则操作命令即可,同时升级FUS+STACK+APP时,在STM32CubeProgrammer v2.11.0版本中只需通过命令行将三条命令合成一条即可,见下图

6.png

路径和地址,需要根据自己实际的路径和要烧写的文件决定。

7.png

03、烧录验证

由于命令中包含硬复位,所以烧录成功后,系统会被复位,复位后会进入用户烧写过的APP执行,此时就可以直接去连接蓝牙并验证应用了。

烧录过程会产生Log信息,见附录。

04、总结

一键烧写在产线上是比较实际的需求,目前更新到的STM32CubeProgrammer v2.11.0版本已支持通过CLI的方式进行更新烧录,在后续版本中可能会有更方便的操作方式。当然也可以将这些命令做成脚本的方式,更方便的去使用。

05、附录

LOG日志:

8.png

9.png

10.png

11.png

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 19

01、引言

STM32WB55是一款支持BLE5.x的双核高性能MCU,针对BLE的应用固件包STM32Cube_FW_WB_V1.xx.xx\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE里面也提供了大量的例程,目前支持的标准GAP服务例程在STM32CubeMX中已有列出,或可以在固件包STM32Cube_FW_WB_V1.xx.xx \Middleware\ST\STM32_WPAN\ble\svc中找到。然而,在实际的STM32WB意向客户中,使用BLE私有协议来开发Profile非标产品的客户占了绝大部分。读者可以去查看BLE_p2pServer、BLE_Custom等例程,对于需要添加自定义ATT属性和服务的应用,现有例程里面STM32CubeMX是无法自定义添加ATT属性和服务。但笔者发现,其实使用STM32CubeMX的Custom Template是能实现上述功能的。

本文的目的旨在使用STM32CubeMX以及Custom Template例程基于STM32WB55-Nucleo实现基于BLE私有协议的通用通信框架,使客户快速上手进行产品开发,且可以直接应用在产品上,应用框架的设计如下图所示。另外,本文还对BLE协议栈的下载和升级注意事项做了详细指导,如果读者不熟悉这些内容,可以先行阅读。

1.png

如上图所示,使用手机APP与STM32WB进行BLE私有协议通信,一共设计了4种类型的数据访问:读/写、只写、只读、通知,这4种访问类型基本可以覆盖大部分数据访问场景

02、STM32CubeMX实现步骤

2.1 创建BLE工程添加并配置外设

请在搭建工程之前,下载安装最新的STM32CubeMX和STM32CubeWB

2.1.1 在STM32CubeMX中点击“File”/“New Project”在弹出对话框中输入“STM32WB55RG”创建一个新工程

2.png

2.1.2 工程配置如下图所示,配置工程名字、保存路径、选择编译工具、调整堆栈大小和选择需要的STM32CubeWB的库文件(缺省为已安装的最新版本)。

3.png

2.1.3 系统配置:调试口

4.png

2.1.4 外设配置:添加外部高速晶振(HSE)和低速晶振(LSE)

5.png

2.1.5 外设配置:调试打印串口USART,手动将USART1引脚重映射到PB6/PB7

6.png

使能USART1的TX的DMA功能和USART1的全局中断

7.png

2.1.6 外设配置:使能HESM,它完全由BLE stack管理

8.png

2.1.7 外设配置:使能RF,它完全由BLE stack管理。

9.png

2.1.8 外设配置:使能IPCC,它完全由BLE stack管理。只需同时使能它的RX/TX中断即可。

10.png

2.1.9 外设配置:使能RTC,同时选择WakeUp为“Internal WakeUp”和WakeUp中断。

11.png

2.1.10 外设配置:配置时钟


12.png

2.1.11 外设配置:NVIC的配置


13.png

至此,外设的配置和添加部分已经完成。

2.2 BLE协议栈的添加及配置

2.2.1 协议栈配置:使能BLE协议栈

14.png

2.2.2 协议栈配置:禁止“Custom P2P Server”并使能“Custom Template”自定义GATT通用模板

15.png

2.2.3 协议栈配置:新建一个GATT服务,其名称为“My_Data_Server"

16.png

2.2.4 协议栈配置:GATT服务基本配置

17.png

2.2.5 协议栈配置:配置GATT读&写 服务特征及属性值

18.png

2.2.6 协议栈配置:配置GATT写 服务特征及属性值

19.png

2.2.7 协议栈配置:配置GATT读 服务特征及属性值

20.png

2.2.8 协议栈配置:配置GATT通知 服务特征及属性值

21.png

2.2.9 协议栈配置:配置GATT广播参数配置

22.png

2.2.10 协议栈配置:BLE配对参数设置

23.png

2.2.11 协议栈配置:BLE协议栈调试及打印配置(需依次序配置)

24.png

2.3 生成工程代码并初步测试

2.3.1 点击“GENERATE CODE”生成工程代码

25.png

2.3.2 在生成的代码中添加BLE Trace&Debug初始化代码

2.3.3 在“main.c”文件中取消“MX_UART_Init(void)”的“static”属性

2.3.4 在“app_entry.c”文件中增加“Debug”模块的初始化代码“APPD_Init()”。

26.png

2.3.5 下载代码到STM32WB55-NUCLEO中运行。此时,在手机的蓝牙列表中,已经能成功地搜索添加的BLE设备。说明Debug和BLE协议栈已经成功运行。

27.png

2.4 添加BLE Stack应用代码

为了便于对后续添加代码的理解,我们先将Central(手机)与STM32WB进行BLE通信的数据交互概括如下。所以需要将用户代码添加到Custom_STM_Event_Handler()、Custom_STM_App_Notification()中。

28.png

BLE应用代码添加:定义用户数据缓存。

在“custom_app.c”文件中定义4个用户缓存区数组。

29.png

BLE事件驱动代码添加:

在“custom_stm.c”文件中的“Custom_STM_Event_Handle r(void*Event)”中依次为WRITE_READ_DATA_BUF、WRITE_DATA_BUF、NOTIFY_DATA_BUF特征和属性添加stack层的事件驱动代码,以使BLE数据从stack层传递到app层。

添加特征1 Events:WRITE_READ_DATA_BUF(即User_Write_Read_Data[]对应的写&读操作句柄)请求驱动代码。

30.png

上图对应的代码文本如下所示:

31.png


32.png

上图对应的代码文本如下图所示:

33.png

添加特征2 Events驱动:WRITE_DATA_BUF(即User_Write_Data []对应的写操作句柄)代码。

34.png


上图对应的代码文本如下图所示:

35.png

添加特征3 Events驱动:READ_DATA_BUF(即User_Read_Data[]对应的写操作句柄)代码

36.png

上图对应的代码文本如下图所示:

37.png

添加特征4 Events驱动:NOTIFY_DATA_BUF(即User_Notify_Data[]对应的写操作句柄)请求驱动已经由STM32CubeMX自动完成了。NOTIFY_DATA_BUF不用再手动添加。

38.png

BLE应用数据代码添加:

在“custom_app.c”文件中的Custom_STM_App_Notification(Custom_STM_App_Notification_evt_t*pNotification)”添加代码,以将BLE数据上传到4个User_xxx_Data[]缓冲区,依次添加代码如下。

39.png

2.5 修改BLE最大数据包传输长度

如果不修改,BLE单包长度最大仅为23字节

1. 在“app_conf.h”中修改BLE stack最大数据包长度(CFG_BLE_MAX_ATT_MTU)

40.png

2. 在“app_ble.c”文件SVCCTL_UserEvtFlowStatus_t_SVC CTL_App_Notification(void*pckt)中添加红色部分代码。

41.png

至此,所有代码更改完成。

03、测试平台搭建及功能测试

3.1 使用STM32CubeProgrammer BLE协议栈安装(升级)

升级ST-LINK固件以保证与STM32CubeProgrammer驱动是匹配的

42.png

查看当前FUS版本,并将FUS升级到最新版本

43.png

如果当前FUS版本是0.5.3,FUS固件使用“stm32wb5x_FUS_fw_for_fus_0_5_3.bin”,否则FUS固件使用“stm32wb5x_FUS_fw.bin”,强烈建议阅读BLE协议栈及FUS升级详细说明“STM32Cube_FW_WB_V1.13.3\Projects\ STM32WB_Copro_Wireless_Binaries\STM32WB5x\Release_Notes.html”。

44.png

升级(安装)BLE协议栈,根据MCU型号选择相应的固件和下载地址

45.png

3.2 测试平台搭建及验证

3.2.1 在Android安卓应用市场下载安装“BLE调试助手”

46.png

3.2.2 可发现设备“MY_STM32WB”,并点击“CONNECT”后可以发现application特征和属性访问服务,如下图所示。


47.png

3.2.3 设置BLE最大单包传输长度为256字节,否则L2CAP层传输超过23字节将自动分包。

48.png

3.2.4 手机app写数据访问(User_Write_Read_Data[64])测试

49.png

3.2.5 手机App读数据访问(User_Write_Read_Data[64])测试

50.png

3.2.6 手机App写User_Write_Data[64]测试

51.png

3.2.7 手机App读User_Read_Data[64]测试。

52.png

3.2.8 通知数据访问(User_Notify_Data[64])测试

53.png

至此,整个验证和测试过程完成。

04、小结

BLE经过多年的发展和迭代,BLE协议本身已是一个很复杂和庞大的协议族,如果希望开发自定义Service和GATT应用时,若对底层协议不熟悉的话还是较为困难的。但是由于STM32良好的生态,特别是借助于我们的STM32CubeMX+STM32Cube_FW_ WB固件包,使得我们可以快速、高效地开发出各种BLE应用。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 45

本文档描述如何让STM32WB在没有LSE时运行BLE应用程序所需的流程和步骤。LSE 可作为 STM32WB RF Wakeup 和 RTC 的时钟源。STM32WB RF Wakeup 和 RTC 的时钟源可配置为 LSE,LSE 时钟相对比较稳定且准确,不需要校准,而且 LSE 可在所有的低功耗模式下保持工作。

目录预览

1 为什么 STM32WB BLE 应用需要 LSE ?

2 在需要 BLE 使能时,什么情况下可考虑不使用 LSE?
3 如何配置 HSE 作为 RF Wakeup 和 RTC 的时钟源?

为什么 STM32WB BLE 应用需要 LSE ?

首先LSE 可作为 STM32WB RF Wakeup 和 RTC 的时钟源。

STM32WB RF Wakeup 和 RTC 的时钟源可配置为 LSE,LSE 时钟相对比较稳定且准 确,不需要校准,而且 LSE 可在所有的低功耗模式下保持工作。

STM32WB RF Wakeup 和 RTC 的时钟源也可配置为 HSE,由于 HSE 只能在 RUN/LP RUN/SLEEP/LP SLEEP 模式保持,进入 STOP/STANDBY/STUTDOWN 模式 后,HSE 会被关掉,这样系统就无法进入 STOP/STANDBY/STUTDOWN 模式,导致系 统功耗会更高。另外 HSE 可能没那么稳定,可能需要校准,从而可能导致 STM32WB RF Wakeup 时钟不稳,也影响 BLE stack 运行,导致 BLE 工作不稳。

1.png

在需要 BLE 使能时,什么情况下可考虑不使用 LSE?

在以下情况下,还需要使能 BLE 并进行开发,调试时可配置 STM32WB 使用 HSE 做 RF Wakeup 和 RTC 的时钟源。

1.设计时,遗漏 LSE,但是样机已做好 

2.生产了样机,忘记贴 LSE 了 

3. 生产了样机,LSE 不匹配,暂时可去掉 

4. 环境或应用使用某些 GPIO(PC13) 影响 LSE,导致 LSE 时钟异常或不稳 

5. 不关心功耗,系统不需要进入低功耗

3. 如何配置 HSE 作为 RF Wakeup 和 RTC 的时钟源?

本 LAT 基于 CubeMX v6.6.1 和 CubeWB v1.14.1 介绍。

3.1 打开 BLE_p2pServer.ioc

用CubeMXv6.6.1打开 STM32Cube_FW_WB_V1.14.1\Projects\ P-NUCLEOWB55.Nucleo\Applications\BLE\BLE_p2pServer\BL E_p2pServer.ioc,以此为例。

3.2 失能 LSE

在Pinout& Configuration => System Core => RCC=>Low Speed Clock (LSE)=>Disable,失能 LSE。

2.png

3.3 失能 LPM & 配置 RTC 预分频

在 Pinout& Configuration => Middleware => STM32_WPAN =>Configuration=> 

Generic parameters=>CFG_LPM_SUPPORT=>Disabled,失能低功耗 LPM,系统会 保持在 RUN 模式

Applicationparameters=>CFG_RTC_ASYNCH_PRESCALER=>127

Applicationparameters=>CFG_RTC_SYNCH_PRESCALER =>7812

3.png

其实,生成代码后在 Core\Inc\app_conf.h 中,如果使能了 CFG_DEBUG_BLE_TRACE 或 CFG_DEBUG_APP_TRACE,会自动的失能 CFG_LPM_SUPPORTED。

4.png

3.4 配置 RTC 和 LSE 的时钟源为 HSE

在 Clock Configuration 中,修改 RTC/LCD Source Mux 的时钟源为 HSE_RTC;修改 RFWKP Source Mux 的时钟源为 HSE。

5.png6.png

3.5 重生代码

点击【GENERATE CODE】重新生成代码,用相应的 IDE 打开工程。


3.6 使能 BLE_LSE 校准

打开 Core\Inc\app_conf.h,修改 CFG_BLE_LSE_SOURCE,使能 SHCI_C2_BLE_INIT_CFG_BLE_LSE_CALIB,如下

7.png

3.7 修改 CFG_TS_TICK_VAL 和 CFG_TS_TICK_VAL_PS

打开 Core\Inc\app_conf.h,修改 CFG_TS_TICK_VAL 和 CFG_TS_TICK_VAL_PS, 如下

8.png

3.8 检查 RF 唤醒时钟源为 HSE

在 Core\Src\main.c 的 PeriphCommonClock_Config 函数中检查确认RFWakeUpClockSelection配置为 RCC_RFWKPCLKSOURCE_HSE_DIV1024 。

9.png

3.9 检查 RTC 时钟源为 HSE

在 Core\Src\ stm32wbxx_hal_msp.c 的 HAL_RTC_MspInit 函数中检查确认 RTCClockSelection 配置为 RCC_RTCCLKSOURCE_HSE_DIV32。

10.png

3.10 验证

重新编译工程,并下载到 STM32WB 中,此时 STM32WB 不再使用 LSE 了。使用 ST BLE Sensor 手机 app,搜索 STM32WB,并连接进行测试。

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 31

1、引言

众所周知,如果一个公司提供涉及蓝牙技术和/或使用任何蓝牙商标(包括“蓝牙”字词)的产品,则它首先必须成为 Bluetooth SIG 的成员并将产品完成蓝牙资格认证流程,这样产品才可以在市场上销售。蓝牙资格认证可以确保蓝牙设备连接互通操作的兼容性。

Bluetooth SIG 成员一般分两种,一种是 Associate 付费成员,另外一种是Adopter 不需付费成员,客户可以依据具体的需求来申请不同种类的会员。需要注意的是蓝牙 SIG 董事会于2021 年 3 月 9 日批准将所有会员费增加了 20%,并于 2022 年 1 月 1 日生效。见下图:

“注意:上面的费用来源于
注意:上面的费用来源于 Bluetooth SIG 网页,仅供参考,实际费用请向 Bluetooth SIG 咨询。

2、蓝牙认证流程

蓝牙认证流程是通过使用蓝牙认证工具 Launch Studio 来 完成。而 Launch Studio 中有两种认证流程。

• 无需测试的资格认证流程

• 需要测试的资格认证流程

使用哪个流程取决于产品是使用新的设计还是现有的蓝牙设计。下面分别对两种资格认证流程做进一步介绍。

2.1. 无需测试的资格认证流程

如果您的产品使用已经通过认证的芯片或设计(End Product 或 Subsystem 产品类

型),并且没有任何设计更改,或者您只是转售已经通过资格认证的产品,您就无需进行额外的测试。比如直接使用 STM32WB 的模块,而不做任何修改。包括以下:

• 在产品中使用先前合格的蓝牙终端产品或子系统,而没有更改或添加其它的蓝牙设计。

• 购买由第三方制造的蓝牙产品,并使用自己的名称或徽标(称为“白标”)。

• 创建仅涉及先前合格的蓝牙终端产品或子系统的组合,产品没有更改设计。

2.1.1. 无需测试的资格认证流程的具体步骤

使用 Launch Studio(蓝牙认证工具)列出设计信息并添加相关产品,具体步骤:

1. 注册项目并提供基本信息(Project Basics),包括任何现有的 QDID(Qualified Design IDs)

2.提交详细的产品声明

3.购买声明 ID(Declaration IDs (DID))

4.确保所有步骤都已完成,验证信息并将产品提交给 BQTF(Bluetooth Qualification Test Facilities),比如 TUV,SGS 等认证机构做认证,签署声明。

“关于STM32WB的蓝牙资格认证介绍"

2.2. 需要测试的资格认证流程

此流程适用于创建新的蓝牙设计或有对先前合格蓝牙设计有做修改的产品。比如产品直接使用STM32WB 芯片设计 BLE 产品。包括以下:

• 新的产品设计或组合,其包含先前合格的蓝牙终端产品或子系统以外的设计。

• 更改了先前合格的蓝牙设计的核心配置/功能。

• 使用先前合格的蓝牙组件(Component)产品类型设计的产品。

2.2.1. 需要测试的资格认证流程的具体步骤

使用蓝牙认证工具 Launch Studio 列出设计信息、生成测试计划、上传测试证据并添加相关产品。具体包含以下步骤:

1. 注册项目并提供项目基本信息(Project Basics),包括任何现有的 QDID

2. 选择与项目相关的协议层

3. 选择相关的 ICS

4. 下载测试计划和测试程序以在 PTS 中运行

5. 通过 BOTF 比如 TUV,SGS 等认证机构参考 TCRL 执行测试并上传证据

6.提交详细的产品声明

7.购买声明 ID

8.确保所有步骤都已完成,验证信息并提交产品进行资格认证。签署声明

“关于STM32WB的蓝牙资格认证介绍"

2.3. 关于蓝牙测试文件的说明

选择需要测试的资格认证流程时,通过在 Launch Studio 网页中 ICS Selection 选择需要的测试用例,这些测试的目的是为了保证该蓝牙的设计的合规性以及互联互操作性。有关测试用例的信息,可在最新的 TCRL 测试规范以及测试套件文档中查看:

https://www.bluetooth.com/zh-cn/specifications/qualification-test-requir...;也可以从 Launch Studio 网页下载。常见的测试文件如下:

• 测试用例参考列表(TCRL):针对所有 Bluetooth SIG 成员的资格认证参考文件,这是一份动态文件,用于介绍新的测试用例、删除测试用例和对测试用例进行分类。会员只能使用这些文件参考来认证其 Bluetooth 启用产品。

• 实施一致性声明(ICS):提供了一种标准化方法来定义产品所支持的蓝牙功能。

• Bluetooth 测试套件(TS):定义了每个基本 Bluetooth 功能验证的目的、顺序和判定。每个测试套件都包含一个测试用例映射表(TCMT),该表根据 ICS 声明

中指定的支持能力,确定所有需要的相关测试用例。

• 针对测试的实现额外信息(IXIT):通常包含有关测试的物理设置和连接的信息,

这些信息不是协议或配置文件的一部分。这可能是有关被测系统的硬件、套接字或电话号码的信息,或其他信息,以使测试更灵活,并实现可重复性等。若没有IXIT,则意味着 IXIT 没有随该行中的其他文件一同发布。不过请注意,这并不排除测试工具要求遵循 IXIT,以便正确配置用于测试特定设备的测试仪。

TCRL、ICS、TS、IXIT 是 Bluetooth 资格认证要求链中的基本文件。

下图以 ICS 选择举例。

“关于STM32WB的蓝牙资格认证介绍"

2.4. 关于蓝牙认证中协议层(Core Layer)及产品类型的说明

蓝牙技术是通过软硬件结合来实现的,通常我们称软件部分为 Host,硬件部分为Controller。目前蓝牙规范中,最普遍的两种应用是经典蓝牙和低功耗蓝牙(BLE)。而双模芯片则会同时支持这两种应用模式。

每种应用模式都会有对软件(Host)部分和硬件(Controller)部分的最低核心配置要求来组合实现完整的蓝牙无线传输方案。下图分别对应每种不同蓝牙产品类型以及常见所需的核心层(Controller Subsystems,Host Subsystems, 和 End Product):

“关于STM32WB的蓝牙资格认证介绍"

“关于STM32WB的蓝牙资格认证介绍"

2.4.1. 蓝牙产品类型的定义

“Product Type” 是由产品支持的核心规范所决定的。“Product Type”不是成员公司的产品类别或者产品描述,而是用于反映这个蓝牙设计所支持的协议层,如上一页介绍。“Product Type”是在 Launch Studio 中的需要测试的资格认证中的 Project Basics 里选择的。

“Product Type”产品类型主要分为:Component ,Subsystem 以及 End product。见下表:

后面会看到 STM32WB 主要采用 Component 和 Profile Subsystem 的产品类型认证。

“关于STM32WB的蓝牙资格认证介绍"

“关于STM32WB的蓝牙资格认证介绍"

2.4.2. 关于组件(Component)的资格认证

从上面蓝牙产品类型定义中可知,组件(Component)是用来在资格认证过程中被集成以创建一个新的 End Product 或 Subsystem。

该资格认证过程必须在 Launch Studio 中选择需要测试的资格认证流程(Qualification Process with Required Testing)。组件(Component)使得其他会员公司在资格认证中有更多的灵活性:既可以对原来经过认证的蓝牙设计进行修改,然后进行更新 ICS(Implementation Conformance Statement),同时可以继承原来组件(Component)中未被修改部分的测试证据(test evidence)。

即在集成一个 Component 来创建新的 End Product 或 Subsystem 时,原来 Component资格认证的测试证据可在新的 End Product 或 Subsystem 的测试计划中被引用。这就使得其他会员公司可以修改之前已经过认证的 Component 而无需重复测试未受影响的测试用例。

2.4.3. 蓝牙产品类型 End Product/Subsystem 与(已测试)Component 认证的区别

如果一个已认证的蓝牙设计被其他会员公司使用到其产品中时,在资格认证中,产品类型的选择将对该会员公司的认证产生极其重大的影响。如果使用蓝牙技术的产品中的核心设计部分不会被其他客户修改,建议将此产品作为 End Product 或 Subsystem 认证;如果对核心蓝牙功能或配置可能被修改,则产品需作为 Component 完成认证。

下表对选择不同产品类型的优劣势做了大概对比,以方便客户选择:

“关于STM32WB的蓝牙资格认证介绍"

2.5. 关于 QDID 和 DID

Qualified Design IDs (QDID) :合格的设计 ID(QDID)是指完成资格认证过程后,分配给新的蓝牙设计的认证 ID。QDID 可被其他成员公司在认证过程中引用(仅可被引用至 EndProduct 或 Subsystem 的产品类型)。

例如,如果一家会员公司的一款蓝牙模组,被另一家会员公司应用到他们生产的消费产品中,该模组需要作为一个 End Product 通过需要测试的资格认证。该认证过程完成后会产生一个 QDID,用以提供给购买该模组的会员公司。购买该模组的会员公司可以直接引用该模组生产方会员公司提供的 QDID,并选择无需测试的资格认证流程。

DID(Declaration ID) :声明 ID(DID)是一种无论产品选择何种方式完成资格认证都需要被获取的识别标识。完成需要测试的资格认证过程会获得一个新的 QDID(系统自动生成)和一个新的 DID(购买),以对应其产品列名(listing)。完成无需测试的资格认证过程将会获得一个新的 DID(购买)并引用一个或多个 QDID 以对应产品列名。可以理解为 一个 DID 可以包含一个或多个 QDID,一个 QDID 也可以被一个或多个 DID 引用。

声明 ID(DID)可在 Launch Studio 的 Manage My Declaration IDs 页面购买,或在资格认证过程的 Declaration ID 那一步购买。

2.6. 在资格认证/声明中添加产品

一个声明(Declaration)可以包含多个产品,前提是这些产品都使用相同的且未经修改的合格设计(QDID)。若原(QDID)的规范版本没有被废止(withdrawn),则可以在现有声明(Declaration)DID 中免费添加(Listing)产品。在 Launch Studio 中向产品列表(Product List)添加新产品时,需要声明所添加的产品所集成的蓝牙设计与原规范或者产品相同的符合性声明(DoC)。

3、关于使用 STM32WB 过蓝牙资格认证

下面我们具体来看 STM32WB 的蓝牙资格认证部分。首先 ST 的 STM32WB 系列已获得完整功能参考设计的 QDID,其组件(Components)也可以被客户重复使用。

当客户选择上文介绍的需要测试的认证流程,如果选择的组件(Component)的 QDID 仍在三年的有效引用时效内,则不是所有的东西都必须完全重新测试。下文列出来 STM32WB 可用的 QDID。需要注意这个列表可能会随着时间的推移而变化。用户可以通过蓝牙 SIG 网页 Launch Studio - Listing Search (bluetooth.com)搜索 STM32WB ,找到当前可用 QDID 的列表,部分截图如下。

“关于STM32WB的蓝牙资格认证介绍"

从上表部分的 QDID 可以看出 STM32WB 系列不同封装产品认证类型基本是以组件(Components )的产品类型认证,只有 Profile stack 是 Subsystem 类型。组件(Components )可以方便客户灵活根据应用需求对 STM32WB 的蓝牙核心功能进行修改。而原来 Component 资格认证的测试证据可以在新的 End Product 或 Subsystem 的测试计划中被引用。这就是说客户可以修改之前已经过认证的 STM32WB Component 而无需重复测试未受影响的测试用例。当然,客户也可以不做修改,直接引用。

注意:使用 STM32WB Component 的资格认证过程必须选择需要测试的资格认证流程,上面提到的只是未受影响的测试用例不用重复测试。STM32WB 组件(Components )产品类型的 RF_PHY, BLE _STACK 以及 Subsystem 类型的 Profile STACK 的 QDID 在下面会分别做介绍。

3.1. STM32WB RF_PHY QDID

ST 各种封装的 STM32WB 都已通过 RF_PHY 认证,获得相应的 QDID 。ST 一般会建议客户仔细遵循硬件设计指南并尽可能复制 ST 提供的参考设计,这样可以最大限度地减少测试。

因为每个新的最终 BLE 产品都必须在其环境中进行测试并符合 BLE 的要求。现有的RF_PHY QDID 只能在使用 STM32WB 模块(硬件不做任何修改)时重复使用。意思是说与使用STM32WB 系列芯片方案进行设计产品相比,以 STM32WB5MMG 模块开发的产品会更有优势,它的开发成本会更低,上市时间也更短。因为它可以参考相应的模块的 QDID,无需重新验证RF_PHY。当然对于 BLE 蓝牙认证,客户即使是使用 STM32WB5MMG 模块仍然需要提交产品声明并购买声明 DID。而使用 STM32WB 芯片方案设计则还需要重新过 RF_PHY 认证。

这里需要说明,一般使用模块开发产品,比如将 STM32WB 的模块贴到客户的 PCB 板上,它的 RF 性能也可能会改变,严格意义上对产品整机,建议重做 RF 部分的测试。至于具体哪些测试用例不需要重复测试,需要在测试时咨询 BQTF(如 TUV,SGS 这类蓝牙认证机构)。

下图是 STM32WB 过了 BLE5.2 认证的 RF_PHY 的 QDID 号。

“关于STM32WB的蓝牙资格认证介绍"

还有一点需要注意的是

RF_PHY 的 QDID 只能适用于特定的芯片或模组型号。如果用STM32WB 不同的 MCU 型号相互替代,除非在数据手册另有说明,否则最终产品将被视为新产品,这就需要通过适当的测试重新验证 RF_PHY 标准。这样它生成的 QDID 才可以在后续产品声明中被引用。

3.2. STM32WB BLE_STACK 的 QDID

ST 提供经过认证的 BLE 协议栈,并获得对应的 QDID。如果协议栈是客户自己定制的,则需要重新做协议栈部分的蓝牙资格认证。客户可以对 BLE 上层协议栈进行更改,但保留 HCI以下的协议栈不变。

如下图,STM32WB 四种 BLE 无线协议栈都过了 BLE5.2 认证

“关于STM32WB的蓝牙资格认证介绍"

我们知道 STM32WB 是 Cortex-M4(CPU1)和 Cortex-M0+(CPU2)双核架构的 MCU。M4主要运行应用程序,而 M0+运行无线协议栈。ST 提供经过认证的 BLE 协议栈就运行在 M0+核上。一般 M0+核对客户而言是个黑盒子,不会被修改。所以 STM32WB 无线协议栈的 QDID,客户可以直接引用。但如果需要对软件协议栈层进行任何定制,比如客户将主机(Host)层移至M4,而将 HCI 协议栈留在 M0+ 上。这样被改变的层就要重新测试和认证。

如下图 STM32WB双核架构的协议栈结构,左图为 ST 过认证时的协议栈结构,右图为客户将 Host 层移动到 M4 后的协议栈结构。

“关于STM32WB的蓝牙资格认证介绍"

3.3. STM32WB Profile STACK 的 QDID

ST 提供的许多 BLE Profile 也过了蓝牙资格认证,而且客户如果没有对 BLE 的 profile 做修改,可以直接引用其 QDID。

这里 Profile STACK 的产品认证类型是 Subsystem。如下图是STM32WB Profile 的 QDID 号,除了众多常用的 BLE profile (包含在STM32Cube_FW_WB 软件包里),还有专门针对 BLE MESH 的 QDID.

“关于STM32WB的蓝牙资格认证介绍"

下面是列出了具体在 STM32Cube_FW_WB 软件包里支持的 BLE Profile。

“关于STM32WB的蓝牙资格认证介绍"

这里需要说明的是,在软件层不同于上面提到的 BLE 协议栈(一般客户不会改动协议栈,会直接使用 ST 提供的 BLE 协议栈版本),BLE 的 Profile 在客户实际开发产品过程中很多时候是需要修改的,所以客户产品在做蓝牙资格认证时, Profile 一般需要重新测试和认证。

如果客户产品不对 Profile 做修改,则可以在 Launch Studio 中如下图引用 ST 的 BLE Profile 的 QDID

“关于STM32WB的蓝牙资格认证介绍"

3.4. 关于 STM32WB 的蓝牙资格认证总结

到这里我们就介绍完 STM32WB 的蓝牙认证中涉及的硬件部分 RF_PHY 和软件部分BLE_STACK,Profile STACK 的 QDID。那么客户在使用 STM32WB 芯片或模块开发产品的时候,具体怎么参考上面的 QDID 通过认证呢?下面我们以两个案例来作总结。

案例 1:某客户产品采用 STM32WB5MMG 模块,对硬件不做任何改动,BLE STACK 和 BLE Profile 也不做变动,理论上客户可以走无需测试的资格认证流程,直接引用 STM32WB RF_PHY ,BLE_STACK,Profile STACK 的 QDID,只需要购买一个产品声明的 DID。如果模块其它部分不变,客户在应用层有客制化自己的 BLE STACK 或 BLE Profile,则需重新做 BLE STACK 或 BLE Profile 的测试和认证。如前面提到的一般使用模块开发产品,比如将 STM32WB 的模块贴到客户的 PCB 板上,它的 RF 性能也可能会改变,严格意义上对产品整机,建议重新做 RF 部分的测试。

案例 2:某客户直接采用 STM32WB 芯片开发产品或模块, 则选择需要测试的资格认证流程,因为 RF_PHY 必须重新测试认证。对于软件层的 BLE STACK 或 BLE Profile 如果有做修改,则同样需要做相应的测试认证,如果没有则可以直接引用 ST 提供的相应的 QDID,当然客户需要购买一个自己产品的声明 DID这里需要注意,客户的成品整机一般都需要做互动操作测试。具体可咨询认证机构(BQTF)。

“关于STM32WB的蓝牙资格认证介绍"

4、小结

本文重点介绍了蓝牙资格的认证流程和认证过程中所涉及的测试文件,蓝牙的层结构, 资格认证的产品类型,QDID/DID 等内容。同时还介绍了 STM32WB 提供的RF_PHY ,BLE_STACK,Profile STACK 三种 QDID,对客户在使用 STM32WB 芯片或模块方案设计产品时该怎么引用这三个 QDID 做了介绍。

本文目的在于为客户使用 STM32WB 做蓝牙资格认证提供参考,具体的测试认证细节可联系专门的认证机构 BQTF 进行咨询,若实际认证流程有变动或差异,请以蓝牙 SIG 官网 Qualify Your Product | Bluetooth® Technology Website 或认证机构(BQTF)的描述为准。

来源:STM32单片机
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 53

随着当代电子技术的发展,每个人拥有的电子产品越来越多,蓝牙成了绝大部分电子产品的标配,而某些场景下,共享资源或者共享电子产品成为一种趋势。比如下面这种场景,同一只智能笔可以动态地被不同的平板电脑、手机或笔记本电脑共享或使用,在这里同一设备(STM32WB)可以被许多主设备使用和共享。

“STM32WB全面完美支持蓝牙多场景多连接应用"

“STM32WB全面完美支持蓝牙多场景多连接应用"

STM32WB 支持多连接拓扑

STM32WB 不仅仅支持上面的应用,同时也支持Piconet 拓扑结构、Scatternet 拓扑结构和多从设备拓扑:

Piconet topology(微微网拓扑结构)

蓝牙是一个点对点或者点对多点的拓扑结构,他们的交互都是基于一个物理通道(Physical Channel)上的, 也就是说点对点之间有一条物理通道,点对多点共享一条物理通道,我们把这些共用一个物理通道的集合称之为微微网(piconet)。

✦ STM32WB 作为主设备,能够连接最多8从设备。

“STM32WB全面完美支持蓝牙多场景多连接应用"

Scatternet topology分布式拓扑结构

工作在同一物理信道的2个或更多设备相互连接组成piconet。一个piconet由一个主设备和多个从设备组成。

主设备提供时钟和跳频模式的参照标准给从设备去同步。在一个区域里可能有多个piconet,每个piconet使用一个互不相同的物理信道。

一个设备不可以在两个piconet中充当主设备(如果可以的话,那么这两个piconet将会工作在同一频道上)。

一个设备可以在多个不同的piconet中充当从设备角色。一个设备在一个piconet中,又在另一个piconet中,那么这个设备处于scatternet。

或者一个设备在多个不同Piconet中充当不同的角色,在一个piconet中中充当主设备,在另外一个piconet中,充当从设备,那么这个设备也是处于Scatternet。

✦ STM32WB作为主设备连接6个从设备

✦ 同时动态的,STM32WB可以作为从设备,连接两个主设备

“STM32WB全面完美支持蓝牙多场景多连接应用"

Multi slave topology (New)多从设备拓扑结构

✦ STM32WB作为从设备,连接8个主设备。

“STM32WB全面完美支持蓝牙多场景多连接应用"

STM32WB 多从设备模式

在这里我们重点介绍如何通过多从设备模式实现多连接的资源共享, 最多8个并发连接,如果主设备在多从设备模式时,可以扫描,广播,连接。它完全兼容蓝牙SIG标准,并且可以与任何的蓝牙LE设备互联互通;而通过主从设备对时隙长度预测机制来避免多连接的碰撞。

1.新的从时隙长度预测机制和槽冲突避免机制:

利用时隙上的动态连接事件持续时间计算,保证了系统的防碰撞性和有效的带宽利用;碰撞预测采用活跃时隙长度缩减和优先级呼叫两种方法。

2.新的主时隙避免碰撞机制:

类似地,对于从时隙碰撞避免机制,该机制避免了下一个调度的主时隙(即连接主时隙或扫描时隙)与所有重叠的从时隙之间的碰撞,建议主连接间隔上设置少量延迟配置,更加有效的使得连接更加流畅。当然随着连接个数的增加,通讯时间间隔会加长,如下表:

“STM32WB全面完美支持蓝牙多场景多连接应用"

相关阅读:

STM32WL私有LoRa网络设计原理以及演示介绍
利用Opus在STM32WB上实现BLE全双工语音流
基于微软云Azure的STM32物联网联接

来源:意法半导体中国
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 396

STM32WB 系列作为一款高性能的无线双核芯片,具备非常丰富的外设和强大的功能。客户在做中国无线电委员会SRRC 认证工作时,不知道如何产生SRRC 需要的信号。本文就是为了解决此问题而准备。

详阅请点击下载《STM32WB无线电认证技术准备工作》

来源:stm32
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 26

一、简介

在无线蓝牙领域,既能满足超低功耗,又能进行全双工语音通讯,一直是市场上的需求,比如:无线门铃,短距离对讲机等应用。针对BLE语音相关的应用场景,ST推出了FP-AUD-BVLINKWB1这个软件包供客户评估。

本文将对这个软件包展开介绍,该软件包主要包含以下特性:

  • 使用Opus v1.3编码和解码,通过BLE实现全双工立体音频流。

  • 使用自定义BlueVoiceOPUS协议,通过API即可使用Opus功能。

  • 源码包含数字音频捕获和处理。

  • 可以通过USB进行音频流的回放。

  • 可使用麦克风扩展板X-NUCLEO-CCA02M2 + Nucleo开发板P-NUCLEO-WB55的组合或者探索板STM32WB5MM-DK。

  • 兼容STBLESensor App。

  • 免费开源。

感兴趣的话欢迎下载该软件包进行评估:点击这里下载软件包

二、软件介绍

软件架构

“▲图1.软件架构图"
▲图1.软件架构图
  • Hardware Abstraction:硬件抽象层,使用了STM32的HAL库提供底层的硬件驱动。

  • BSP层:在HAL层之上,提供了板级支持包,包含了SPI,ADC,LED和User Button等驱动。

  • Middleware层:中间件层,主要包含了以下内容:
    • STM32 WPAN:提供BLE,Thread,Zigbee等协议相关的接口API,本应用只使用了BLE协议。
    • USB Device:提供各种不同USB device类的实现,本应用中只使用了USB Audio类。
    • PDM Lib:提供了数字麦克风PDM信号到PCM信号转换的软件实现。
    • OPUS:开源第三方的OPUS库,版本v1.3。

Opus简介都

Opus是完全开源免费的高通用性音频编解码协议,由Internet Engineering Task Force (IETF)标准化。

Opus可以处理广泛的音频应用,包括IP语音、视频会议、游戏内聊天,甚至远程现场音乐表演。它可以从低比特率窄带语音缩放到非常高质量的立体声音乐,并且具备以下特点:

  • 比特率范围:6kb /s到510 kb/s

  • 采样率范围:8khz(窄带)到48kHz(全带)

  • 帧大小:2.5 ms到60 ms

  • 比特率,采样率,帧大小动态可调节

  • 支持固定比特率(CBR)和可变比特率(VBR)

  • 支持语音和音乐

  • 支持单声道和立体声

  • 最多支持255个通道

  • 良好的鲁棒性和丢包隐藏能力

  • 支持浮点和定点

BlueVoiceOPUS协议

BlueVoiceOPUS是自定义的协议,Central和Peripheral是GAP层的角色,在点对点通讯中,主动发起连接请求的设备为Central。在GATT协议中,Server接受请求和命令,将数据保存在属性中。Client实施服务发现流程,并向Server请求数据。

如果是单向的非对称语音系统,那么具备麦克风的设备可以定义为Server,客户端可以主动或被动接收Server的语音数据流。

“▲图2.GATT角色分配"
▲图2.GATT角色分配

如图2,FP-AUD-BVLINKWB1提供了双向的系统,双方设备都具备语音的能力,所以双方都实现了GATT Server以及Client的角色。并且,Server的语音数据基于notification性质,将以异步的方式主动发送给Client。

✦ BlueVoiceOPUS服务

ATT协议用于在设备中进行数据交换,ATT的最小实体称为属性。GATT服务由各种服务组成,其中服务由服务申明属性作为起始,每一个服务又包含若干特性,特性由任意属性或属性描述符组成。

表1是典型的BLE服务的属性表,其中包含了1个服务申明以及3个特性。Audio特性用来通知对方设备音频数据。Ctrl特性通知对方设备控制数据,比如播放,暂停等。Music特性用来通知对方音乐数据,该特性只在ST BLE Sensor APP中实现,取代Audio特性,用来传输压缩后的48KHz立体音乐。

“▲表1.BlueVoiceOPUS服务属性表"
▲表1.BlueVoiceOPUS服务属性表

✦ BLUEVoiceOPUS实现

在Middleware层,和BlueVoiceOPUS协议相关的文件包括:

  • bvopus_service_stm:该文件管理所有和BLE相关的功能,包括添加服务和添加特性,以及数据的接收和发送。其中包含了一个简单的数据封包和解析协议。

  • opus_interface_stm:该文件实现了Opus编码器和BlueVoiceOPUS服务的接口。提供简单的API用于Opus初始化,配置,数据压缩和解压等。

应用层介绍

在软件包中包含了三个主要的工程:

  • BVLCentral:作为主设备主动发起连接,并提供BlueVoiceOPUS服务。

  • BVLPeripheral:作为从设备广播,并提供BlueVoiceOPUS服务。

  • BVLPeripheral_FullBand:作为从设备广播,提供BlueVoiceOPUS服务, 可以通过BLE接收立体声音乐,但目前只能和ST BLE Sensor相连。

BVLCentral和BVLPeripheral分别烧录到WB55的开发板中,分别作为主机和从机,通过开启或停止音频通知,可以达到三种不同类型的通讯:单工,半双工和全双工。

  • 当设备在输出音频流时,应用层负责语音的获取,数据压缩和封包,然后通过BlueVoiceOPUS协议发送出去。

  • 当设备在接收音频流时,应用层通过从BlueVoiceOPUS协议中接收BLE数据包,然后解包和解码OPUS语音数据。

通过P-NUCLEO-WB55上的SW1控制打开或关闭语音流通道。

通过LED显示设备的状态。

  • 广播/发现状态:绿色LED闪烁

  • 连接状态:蓝色LED缓慢闪烁

  • 语音流状态:蓝色LED正常闪烁

  • 接收状态:蓝色LED稳定点亮(不闪烁)

  • 全双工状态:蓝色LED快速闪烁(双方设备)

BVLCentral可以由APP(ST BLE Sensor)代替,完成设备和手机端的全双工语音通讯。

“▲图3.应用流程图"
▲图3.应用流程图

整个应用流程如图3所示,整个流程介绍如下:

  • 从设备广播,主设备发起连接,直到连接建立成功。

  • 双方互相完成服务和特性发现流程。

  • 从设备通过按钮,请求打开特性通知,主设备打开通知,从设备发送语音流,此时状态为语音流状态。

  • 相反地,主设备通过按钮,请求打开特性通知,从设备打开通知,主设备发送语音流,此时状态变为全双工状态。

  • 可以通过按钮,开关语音流,改变语音流状态。

可以通过按钮,开关语音流,改变语音流状态。

三、系统部署指导

下面将从不同方面分别介绍Demo的部署流程。

两块STM32WB开发板之间的全双工音频流

“▲图4.NUCLEO+CCA02M2的组合"
▲图4.NUCLEO+CCA02M2的组合

如上图4 ,可以使用P-NUCLEO-WB55开发板与一块麦克风扩展板X-NUCLEO-CCA02M2进行组合。然后分别烧录BVLCentral工程和BVLPeripheral工程。当双方设备建立连接以后,通过Nucleo上的SW1按钮,就可以建立起半双工或全双工的语音流了。麦克风扩展板可以对语音信号以8kHz或16kHz进行采集,并通过BlueVoiceOPUS协议传输,当对方设备接收到语音数据后,也通过usb传输到PC,使用刻录软件(如audacity)进行刻录保存,然后使用Audacity或其他语音软件播放。

“▲图5.STM325MM-DK探索板"
▲图5.STM325MM-DK探索板

如上图5,也可以使用STM32WB5MM-DK进行同样的操作,该开发板使用了STM32WB5MM的模组,并且板载了一块OLED显示屏供开发。

当然也可以使用图4和图5的组合,只要一块烧录的是主机程序,另一块烧录的是从机程序即可。

STM32WB开发板和手机之间的全双工音频流

除了上面的配置方法外,ST还提供了ST BLE Sensor手机APP供测试。

“▲图6.手机和开发板之间的音频流"
▲图6.手机和开发板之间的音频流

如图6,手机可以作为主设备,扫描然后连接STM32WB55开发板,建立全双工的音频流的BLE链路。语音信号可以从开发板采集,发送到手机侧进行播放。也可以从手机侧采集,发送到开发板后,再通过USB进行播放。

STM32WB开发板和手机之间的立体声音乐播放

上面介绍的都是8kHz/16kHz的语音流,该软件包还提供了全带(Full-Band)的48kHz立体声音乐流方案。

“▲图7.48kHz立体声音乐流方案"
▲图7.48kHz立体声音乐流方案

如图7,手机扫描设备后,发起并建立连接,完成GATT服务发现流程,然后通过按钮打开特性的通知属性,建立全带音乐流。APP使用OPUS对手机内音乐进行压缩和封包,然后通过BLE发送给开发板。开发板通过USB将数据导出到PC上,最后使用Audacity或其他语音软件进行播放。

参考文档

STM32CubeFunctionPack_BVLINKWB1_V2.0.0

相关阅读:

STM32WL私有LoRa网络设计原理以及演示介绍

来源:意法半导体中国
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 875

本文档介绍了通过低功耗蓝牙®(BLE)连接在ST32WB设备上进行空中(OTA)固件更新的过程。它解释了如何使用STM32Cube固件包中提供的OTA应用程序。

详阅请点击下载《STM32WB系列微控制器空中应用和无线固件更新》

来源:ST
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 19

页面

订阅 RSS - STM32WB