STM32WB 上实现 BLE 全双工语音流文档笔记
💡
原文中文,约1200字,阅读约需3分钟。
📝
内容提要
STM32WB的opus服务下有两个notify特性,分别用于对讲和发送控制数据,手机App和蓝牙设备分别扮演BVLCentral和Peripheral Unit的角色,指示灯对应不同状态,建立连接后,服务与特性的发现是双向的,Enable Notification的过程也有所了解。
🎯
关键要点
- 排查蓝牙设备语音流问题时,发现仅阅读SDK源代码难以定位问题根源。
- STM32WB的opus服务下有两个notify特性:Audio特性用于对讲,Ctrl特性用于发送控制数据。
- 手机App扮演BVLCentral角色,蓝牙设备扮演Peripheral Unit角色。
- 指示灯状态:绿色LED闪烁表示广播/发现状态,蓝色LED缓慢闪烁表示连接状态,正常闪烁表示语音流状态,稳定点亮表示接收状态,快速闪烁表示全双工状态。
- 建立连接后,服务与特性的发现是双向的,手机App也有对应的服务和特性。
- Enable Notification过程:蓝牙设备发起Enable Notification Request,App向蓝牙设备发起Enable Notification,蓝牙设备向App发送Notification。
- App点击开始录音按钮后,向蓝牙设备发送Enable Notification Request,双方状态变为Full Duplex。
- 手机默认不接收蓝牙设备语音流,需要按下板子上的按钮触发App修改CCCD值。
- 另一个Android 11手机正常工作,可能是因为其App版本低,能够主动修改CCCD值。
➡️