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值。
➡️

继续阅读