☝ 点击上方蓝字,关注我们
使用Opus v1.3编码和解码,通过BLE实现全双工立体音频流。
使用自定义BlueVoiceOPUS协议,通过API即可使用Opus功能。
源码包含数字音频捕获和处理。
可以通过USB进行音频流的回放。
可使用麦克风扩展板X-NUCLEO-CCA02M2 + Nucleo开发板P-NUCLEO-WB55的组合或者探索板STM32WB5MM-DK。
兼容STBLESensor App。
免费开源。
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。
比特率范围:6kb /s到510 kb/s
采样率范围:8khz(窄带)到48kHz(全带)
帧大小:2.5 ms到60 ms
比特率,采样率,帧大小动态可调节
支持固定比特率(CBR)和可变比特率(VBR)
支持语音和音乐
支持单声道和立体声
最多支持255个通道
良好的鲁棒性和丢包隐藏能力
支持浮点和定点
bvopus_service_stm:该文件管理所有和BLE相关的功能,包括添加服务和添加特性,以及数据的接收和发送。其中包含了一个简单的数据封包和解析协议。
opus_interface_stm:该文件实现了Opus编码器和BlueVoiceOPUS服务的接口。提供简单的API用于Opus初始化,配置,数据压缩和解压等。
BVLCentral:作为主设备主动发起连接,并提供BlueVoiceOPUS服务。
BVLPeripheral:作为从设备广播,并提供BlueVoiceOPUS服务。
BVLPeripheral_FullBand:作为从设备广播,提供BlueVoiceOPUS服务, 可以通过BLE接收立体声音乐,但目前只能和ST BLE Sensor相连。
当设备在输出音频流时,应用层负责语音的获取,数据压缩和封包,然后通过BlueVoiceOPUS协议发送出去。
当设备在接收音频流时,应用层通过从BlueVoiceOPUS协议中接收BLE数据包,然后解包和解码OPUS语音数据。
广播/发现状态:绿色LED闪烁
连接状态:蓝色LED缓慢闪烁
语音流状态:蓝色LED正常闪烁
接收状态:蓝色LED稳定点亮(不闪烁)
全双工状态:蓝色LED快速闪烁(双方设备)
从设备广播,主设备发起连接,直到连接建立成功。
双方互相完成服务和特性发现流程。
从设备通过按钮,请求打开特性通知,主设备打开通知,从设备发送语音流,此时状态为语音流状态。
相反地,主设备通过按钮,请求打开特性通知,从设备打开通知,主设备发送语音流,此时状态变为全双工状态。
可以通过按钮,开关语音流,改变语音流状态。
✎ STM32CubeFunctionPack_BVLINKWB1_V2.0.0
▷ 无线与云连接技术专题之一:STM32WL私有LoRa网络设计原理以及演示介绍