SQ96B87 (V98) 高性能 2.1 声道智能蓝牙音响开发手册
项目档案概览
- 项目标识:
sq96b87_x5_sdk_v98_2EQ/ 产品代号 V98(cardoO Speaker Xtreme)- 核心平台:杭州士兰微电子(Silan)
SQ96B87高性能音频 SoC(32位 RISC-V + HiFi4 DSP)- 声学架构:硬件 2.1 声道(主左 + 主右 + 独立重低音)+ 双麦克风 K 歌
- 通信生态:BLE 智控(新意诚协议 V2.1)+ PC 调音(BTBox 调音协议 v1.01.07)
- 所属分类:专题手册导航 · 任务产物归档
快速导览看板
常用章节快速跳转
- 🚀 快速上手:产品功能矩阵 · 固件编译与烧录
- ⚙️ 硬件架构:SQ96B87 规格与引脚 · 2.1 声道拓扑
- 🎛️ DSP 与音效:HiFi4 DSP 音效链路 · BTBox PC 调音协议
- 📱 软件协议:新意诚 APP 协议字典 · Flash 分区与 CM 记忆
- 🔌 外设控制:按键/旋钮/WS2812/功放 · 电池采样与滤波
- 🔍 调试避坑:启动日志实测追踪 · 高频故障排障
1. 项目背景与产品全貌定义
本项目为基于杭州士兰微电子(Silan)SQ96B87 芯片打造的旗舰级 2.1 声道便携式/桌面智能蓝牙卡拉OK音响系统,项目代号 V98(工程标识 sq96b87_x5_sdk_v98_2EQ,出厂蓝牙广播名称 cardoO Speaker Xtreme,BLE 设备名称 BLE_V98)。
1.1 产品核心定位与功能矩阵
| 功能维度 | 特性支持与配置 | 说明 |
|---|---|---|
| 产品形态 | 2.1 声道立体声 + 独立超重低音 + 双麦卡拉OK + 炫彩音乐氛围灯 | 兼顾高保真音乐回放与专业户外/家用 K 歌体验 |
| 声学架构 | 左右主声道(DAC0 L/R)+ 独立重低音声道(DAC1_L / MDAC) | 硬件三通道 24-bit 独立模拟输出,配合三段式/多频段 DRC 动态压缩 |
| 音源输入 | 蓝牙 5.3 (A2DP/HFP)、AUX-IN (PB10/PB11)、U盘播放、TF卡播放、USB Audio声卡 | 全输入源统一进入 HiFi4 DSP 进行音频矩阵重采样与声学算法处理 |
| 卡拉OK系统 | 双麦克风输入(MIC0 L/R 差分)、全功能专业 DSP 算法 | 移频防啸叫、智能噪声门限、10段麦克风独立EQ、混响/回声引擎、变声/变调、闪避消人声 |
| 无线互联 | TWS(True Wireless Stereo)真无线立体声对箱互联 | 支持左右声道自动协商、按键状态同步、电池电量同步与主从无缝切换 |
| 灯光与交互 | WS2812 SPI 单总线幻彩灯驱动 + 16级音量旋钮 + 12个硬件AD按键 | 支持音乐节奏动态瀑布流、呼吸渐变、跑马灯等4种预设炫彩模式 |
| 智能控制 | 手机端专属配套 APP 控制(新意诚协议 V2.1) | 支持 BLE 广播反解 MAC、低延时控制、15段音乐EQ/10段麦克风EQ微调、定时关机等 |
| 音效调校 | 支持 GDE(Graphical Development Environment)实时调音 | 17组预置调音算法参数固化于 Flash,支持上位机动态串口注入与回读 |
2. 芯片平台与核心硬件架构(SQ96B87)
SQ96B87 是一颗高集成度、专为高端音频系统定制的蓝牙 5.3 音频 SoC,采用先进的双核异构计算拓扑:
flowchart TD subgraph SoC["士兰微 SQ96B87 高性能双核音频 SoC"] direction TB subgraph Compute["双核异构计算单元"] CPU["32-bit RISC-V 处理器<br>(最高 160MHz / 带硬件 FPU)<br>• 系统主状态机 • 蓝牙协议栈 • 外设管理"] DSP["Tensilica HiFi4 Audio DSP<br>(最高 300MHz 浮点音频内核)<br>• 硬件EQ • 多段DRC • 混响回声 • 移频防啸叫"] end subgraph Memory["存储子系统"] SRAM["892KB 片上高速 SRAM<br>(含 RISC-V/DSP 共享 HSMEM)"] Flash["2MB 片上 SPI Flash<br>(支持 4KB 扇区擦除与双线加速)"] PSRAM["SPI PSRAM 控制器<br>(外部高速存储扩展接口)"] end subgraph Audio_Analog["音频模拟前端 (CODEC)"] ADC["4x 24-bit Audio ADC<br>(SNR 102dB, THD+N -80dB)<br>麦克风差分采集 + Line-in 输入"] DAC["3x 24-bit Audio DAC<br>(SNR 106dB, THD+N -87dB)<br>2.1 声道独立模拟高保真输出"] end subgraph Peripherals["外设通信接口"] RF["Bluetooth 5.3 双模射频<br>(BR/EDR + BLE, 支持 LE Audio)"] USB["USB 2.0 全速 OTG<br>(U盘Host / USB声卡Device / HID)"] SDIO["2x SD 卡 Host 控制器"] UART["3x 全双工 UART + 1x 高速 HUART"] IO_GRP["11x 10-bit SARADC • 2x I2S • 2x SPI • 2x IIC • IR"] end Compute <--> Memory Compute <--> Audio_Analog Compute <--> Peripherals end
2.1 芯片硬件电气指标
- 封装形式:QFN-68(,引脚间距 ),底面具备大面积散热及系统接地焊盘(EPAD/PIN 0)。
- 供电电源架构:
- 输入电源 :,单节锂电池直供;
- 片上 LDO 输出():供外设 IO 上拉及低功耗控制,最大驱动能力 ;
- 片上 BUCK/LDO 输出():供射频内核及基带核心,高效率降压架构;
- 模拟音频 DAC 供电:片上内置 滤波与内部 无电容参考电路(
DAC_VCM_CAPLESS_EN),大幅削减开机冲击底噪。
- 高保真音频 CODEC 性能:
- DAC 模拟通道:,支持 采样率;典型信噪比 ,总谐波失真 。
- ADC 模拟通道:,典型信噪比 ,总谐波失真 。
2.2 核心引脚映射表
点击展开 / 折叠:QFN-68 核心引脚功能映射与复用表
管脚号 信号名称 I/O 类型 本产品主要复用功能与硬件连接 硬件说明 0 GNDGround 芯片底部散热焊盘主地 系统模拟/数字主参考地 6 PB5I/O WK0/ADC12/ 低功耗唤醒管脚预留休眠按键/外部唤醒输入 7 PB0I/O ADCCH_PB0/WK1/PWM0SAR-ADC 输入通路通道 1 10 PB6I/O WK4/IR/TMRCAP3备用红外接收 / 定时器捕获 11 PB7I/O WK5/IO_PB7低功耗休眠主要唤醒 IO( USER_SLEEP_WK_EN)12 PA8I/O OSCO-32K/UART1_RX32.768kHz 晶振输出或调试串口 1 13 PA9I/O OSCI-32K/UART1_TX32.768kHz 晶振输入或调试串口 1 15 VDDIOPWR 3.3V 系统数字 IO 电源输出 外围电路供电/上拉参考基准 16 VCCPWR 主电源供电输入(3.0V ~ 4.5V) 连接锂电池或系统电源轨 17 VDDBTPWR 蓝牙射频/内核 1.2V 供电 外部接滤波去耦电容 20 PA10I/O SPDIF1/PWM0光纤音频输入/脉宽调制输出 23 PA13I/O ERJI_MUTE(前级静音控制引脚)开机静音拉低,系统就绪后拉高 24 PA14I/O AUX2_L/ADCCH_PA14(ADC0)备用 AUX 左声道模拟输入通道 25 PA15I/O PA15_RGB(WS2812 幻彩灯 SPI 驱动)800kHz 专用时序单总线控制输出 26 PB8I/O AMP_EN2 / MUTE_OUT(功放使能与静音)功放使能 IO,开机上电初始化防 POP 27 VDDDACPWR DAC 模拟核心电源输入 内部低噪声 LDO 供电滤波 28 DAC1_LA_OUT DAC BASS(2.1 独立超重低音声道输出)连接低音通道功率放大器 29, 30 DAC0_RA_OUT DAC0_R- / DAC0_R+(主右声道输出)连接立体声右声道功率放大器 31, 32 DAC0_LA_OUT DAC0_L- / DAC0_L+(主左声道输出)连接立体声左声道功率放大器 33 VCMPWR 内部模拟偏置基准中心电压输出 外部接滤波储能旁路电容 34 AGNDGround 模拟声学低噪洁净参考地 严禁与大功率数字高频回路直接单点互串 35, 36 MIC1_LA_IN 麦克风 1 差分输入( MIC1_LN / MIC1_LP)主话筒 1 音频采集通路(ADC0) 37, 38 MIC1_RA_IN 麦克风 2 差分输入( MIC1_RN / MIC1_RP)副话筒 2 音频采集通路(ADC0) 41, 42 PB10,11A_IN AUX0_L / AUX0_R(Line-in 左右输入)经过片上 SDADC(ADC1)进入 DSP 算法 43 PB12I/O ADKEY2(按键通道 2:MODE / EQ / RM)外部电阻分压键盘扫描通道 12 44 PB13I/O ADKEY1(按键通道 1:PLAY / VOL- / VOL+)外部电阻分压键盘扫描通道 13 49, 50 BT_OSCA_IN/OUT 24MHz 射频主晶振输入与输出引脚 提供射频与系统 PLL 高精参考源 52 BT_ANTA_RF 50 欧姆特征阻抗蓝牙射频天线引脚 匹配 LC 滤波天线射频回路 53 RESETA_IN 芯片低电平硬件复位输入 外部上拉或硬件 RC 延时复位 59 PE8I/O UART2_G2_PE8(RXD)GDE 音效实时调优串口 RX 通信 60 PE9I/O UART2_G2_PE9(TXD)GDE 音效实时调优串口 TX 通信 63 PE12I/O CHG_DET(外部充电状态硬件检测)高电平代表正在充电,低电平未充 64 PE13I/O ADCCH_PE13(高精度单节锂电池分压采样)经两电阻分压输入,检测电池真实端电压 65, 66 PB3, 4I/O USBDP / USBDM(全速 USB 2.0 信号线)支持 U 盘播放 / USB Audio / 调试通讯
3. 2.1 声道声学与硬件电路拓扑
本系统在硬件声学通路与芯片 DSP 之间建立了极高规格的 硬件 2.1 声道分频拓扑(宏定义为 AUDIO_HW_OUT_MODE1):
flowchart LR subgraph In["全音源输入前端"] BT["蓝牙 5.3 音频 (A2DP)"] AUX["Line-in 模拟 (PB10/PB11)"] USB["U 盘音乐 / USB 声卡"] SD["TF 卡本地音乐"] MIC["双麦克风输入 (MIC0 L/R)"] end subgraph DSP_Proc["HiFi4 DSP 算法核心"] Matrix["音频矩阵解复用与混音"] subgraph Music_Chain["主音乐链路 (List 6/7)"] MEQ["15段参量 EQ"] --> MDRC["多频段 DRC 防削波"] --> VBass["虚拟低音增强"] end subgraph Bass_Chain["独立超重低音链路 (List 11)"] BEQ["5段重低音专用 EQ"] --> BDRC["低音多段动态压缩"] end subgraph Mic_Chain["卡拉OK人声链路 (List 0/1/5)"] FFS["移频防啸叫"] --> Gate["智能噪声门"] --> MicEQ["10段麦克风 EQ"] --> Reverb["专业混响与回声"] end end subgraph Out["2.1 模拟输出与功率放大"] DAC_L["DAC0_L (Pin 31,32)<br>主左声道"] --> AMP_L["左声道功率放大器"] --> SPK_L["主左全频扬声器"] DAC_R["DAC0_R (Pin 29,30)<br>主右声道"] --> AMP_R["右声道功率放大器"] --> SPK_R["主右全频扬声器"] DAC_M["DAC1_L (Pin 28 / MDAC)<br>独立重低音声道"] --> AMP_M["重低音独立大功率功放"] --> SPK_M["超重低音扬声器"] end In --> Matrix Matrix --> Music_Chain Matrix --> Bass_Chain Matrix --> Mic_Chain Music_Chain --> DAC_L & DAC_R Bass_Chain --> DAC_M Mic_Chain --> DAC_L & DAC_R & DAC_M
3.1 模式参数与输出分配细节
- 左右主声道():
- 对应宏:
OUT_12CH DAC_OUT。 - 芯片内部经由
SRC1音频流送入DAC0_L与DAC0_R。 - 包含独立模拟增益和数字音量衰减阶梯(,步长 ,映射自系统 级音量表)。
- 对应宏:
- 重低音声道():
- 对应宏:
OUT_34CH DAC_OUT,且使能MDAC_BASS_EN 1。 - 混音源:
LRDAC_TO_MDAC_EN 3(取 混合信号输入至低音通道)。 - 芯片内部经由
MDAC单元控制其独立增益寄存器MDACVOLCON,并直接推向DAC1_L(PIN 28)。
- 对应宏:
- 输出增益控制寄存器(硬件级):
DACVOLCON(地址SFR19_BASE + 0x31*4):主通道数字/模拟音量控制;MDACVOLCON(地址SFR19_BASE + 0x22*4):重低音通道数字音量控制;SRC1VOLCON(地址SFR19_BASE + 0x39*4):采样率转换器 1 音量增益寄存器。
4. SDK 软件架构与代码工程组织
本项目采用士兰微专门针对高端音响打造的 X5 操作系统与音频构架,源码层次分明,分为 BSP 外设驱动层、中间件模块层、音频 DSP 算法接入层、应用模式状态机与通信协议层。
sq96b87_x5_sdk_v98_2EQ/
├── bsp/ # 板级外设驱动(底层硬件抽象层)
│ ├── bsp_uart.c / .h # 串口驱动(UART0/1/2,波特率最高达 1.5Mbps)
│ ├── bsp_saradc.c / .h # 逐次逼近型 ADC 采样(按键、电池等通道采集)
│ ├── bsp_i2s.c / bsp_iis_ext.c # 双路 I2S 音频接口配置
│ ├── bsp_i2c.c / bsp_spi.c # 软硬件 I2C 与 SPI 控制总线
│ ├── bsp_port_int.c # GPIO 引脚中断管理
│ ├── bsp_param_analysis.c # 音效与系统参数序列化解析器
│ └── bsp_hdmi.c / bsp_ir.c # HDMI-CEC 与红外驱动
├── modules/ # 核心业务中间件模块
│ ├── audio/ # 音频底层支撑库
│ │ ├── bsp_dac.c / .h # DAC 初始化、音量换算表、MDAC 注册
│ │ ├── bsp_eq.c / .h # 硬件 EQ / 软件 EQ 在线调优驱动
│ │ └── bsp_aux.c / .h # 模拟 AUX 输入管理与 SDADC 路由
│ ├── bluetooth/ # 蓝牙核心协议栈及上层应用
│ │ ├── app/ab_mate/ # 智能 APP 协议栈实现(重点)
│ │ │ ├── ab_mate_app.c # 协议解析、分发、状态机、音效/模式调度
│ │ │ ├── ab_mate_tws.c # TWS 对箱状态与音量/电量全双工同步
│ │ │ ├── ab_mate_ota.c # BLE 固件空中升级(FOTA)
│ │ │ └── ab_mate_app.h # 协议 ID、结构体与命令映射
│ │ └── bt_app.c # 经典蓝牙 A2DP / HFP / AVRCP / SPP 事件总线
│ ├── fs/ # FAT 文件系统支持(U盘与 TF 卡音乐文件系统)
│ ├── music/ # 音乐解码器控制(MP3 / AAC / WAV / FLAC / APE)
│ └── key/ # 状态机去抖动、多击识别与长按检测
├── functions/ # 系统顶级业务模式状态机(模式引擎)
│ ├── func.c / .h # 模式管理器(主消息循环与事件分发)
│ ├── func_bt.c # 蓝牙工作模式状态机(配对/播放/通话)
│ ├── func_music.c # U盘 / SD卡 本地播放模式
│ ├── func_aux.c # AUX 线路输入模式(SDADC 与 DSP 算法串接)
│ ├── func_usbdev.c # USB 声卡 / 读卡器模式
│ ├── func_lowpwr.c # 低功耗休眠(Sleep)与关机(Powerdown)
│ └── sfunc_record.c # 本地录音与卡拉OK录音引擎
├── projects/standard/ # 目标产品编译主工程
│ ├── config.h # 【全局系统功能总宏配置文件】(极其关键)
│ ├── main.c # 系统初始化起点、全局变量及主入口
│ ├── port/ # 硬件硬件接口适配层(引脚定义与特定板级驱动)
│ │ ├── port_key.c # ADKEY 电阻阻值表与键码映射
│ │ ├── port_mute.c # 功放使能与静音时序控制
│ │ └── port_pwm.c # PWM 及 WS2812 时序生成
│ ├── app.cbp # CodeBlocks 编译工程文件
│ ├── ram.ld # RISC-V 链接器内存分布描述脚本
│ └── Output/bin/ # 编译生成目标、配置工具与音效数据
│ ├── app.bin / app.dcf # 固件目标文件与打包发布镜像
│ ├── Settings/V98.setting # 固件出厂参数配置表(配置工具存档)
│ └── res/ # 固件内嵌音频提示音、字库与音效文件
│ ├── ae_para/ # 17 组音效算法预置文件(para00.bin ~ para16.bin)
│ └── hifi4/sram.bin # HiFi4 DSP 协处理器算法固件镜像(192KB)
└── 打印日志.txt # 开发板实测上电全时序串口抓包追踪记录
5. HiFi4 DSP 音频算法引擎与音频路由链路深度剖析
5.1 音效链路(List ID)拓扑与分配
在士兰微 DSP 体系中,音频信号处理链路被精细地抽象为以 List ID 编址的独立算法链条:
| List ID | 链路用途 | 包含的关键算法节点 | 典型支持段数/规格 |
|---|---|---|---|
| 0 | MIC1 主麦克风链路 | 噪声门限 移频防啸叫 10段参数EQ 动态压缩器 DRC 变声/变调 | 均衡器 10~15 段,支持低切/高切 |
| 1 | MIC2 副麦克风链路 | 噪声门限 移频防啸叫 10段参数EQ 动态压缩器 DRC 变声/变调 | 与 MIC1 独立调校,防左右串扰 |
| 3 | FBC 双麦叠加抑制 | 双麦声学信号相位叠加自适应滤波抑制 | 消除驻波与声学正反馈 |
| 4 | MIC 专有音频路由 | 麦克风处理后干声与湿声矩阵配置 | 控制麦克风输出至各扬声器的比例 |
| 5 | 混响/回声引擎(Reverb & Echo) | 湿度/房间大小 预延时 混响滤波器 回声衰减器 | 延时范围 ,支持高低通阻尼滤波 |
| 6 | 音乐左声道(Music L) | 15段参量EQ 多频段动态压缩 DRC 虚拟低音 VBass | 精细重构音乐中高频清晰度 |
| 7 | 音乐右声道(Music R) | 15段参量EQ 多频段动态压缩 DRC 虚拟低音 VBass | 与左声道参数对称或针对腔体不对称补偿 |
| 8 | 全局主音频矩阵路由(Route) | 将音乐、混响湿声、麦克风人声按权重混合分发至各输出通道 | 0x60 矩阵指令,决定最终输出听感 |
| 9 | 主输出左声道(Master L) | 31段超精密图示/参量EQ 系统延时对齐 限制器 Limiter | 终极防削波,音箱最终出音修正 |
| 10 | 主输出右声道(Master R) | 31段超精密图示/参量EQ 系统延时对齐 限制器 Limiter | 终极防削波,音箱最终出音修正 |
| 11 | 独立低音通道(Subwoofer Bass) | 5段低通专用EQ 相位倒转() 低音限制器 | 独立重低音箱体声学校准 |
| 20 | 卡拉OK消人声专线(VOC) | 人声中心消除滤波算法(Vocal Remover) | 强度 级可调 |
5.2 算法配置存储规范(ae_para 与 paraXX.bin)
系统开机时,RISC-V 会从片上 Flash 的 0x180000 偏移处载入预置算法文件。共支持 17 组(para00.bin 为默认组,para01.bin ~ para16.bin 对应不同场景如室内、户外、摇滚、人声模式):
算法配置文件的首部硬性约束
- 第一条必须为系统延时配置(
0x70):
- 字节 0:
0x70;字节 12:4:Echodelay(如F4 01即 500ms);字节 3EchoPredelay(如96 00即 150ms);字节 5~6:ReverbPredelay(如C8 00即 200ms)。- 第二条必须为 EQ 各链段数声明(
0x71):
- 字节 0:
0x71;字节 1: AUX 段数(0x0A即 10 段);字节 2: MIC1 段数(0x0F即 15 段);字节 3: MIC2 段数(0x0F);字节 4: 主输出左(0x1F即 31 段);字节 5: 主输出右(0x1F);字节 6: 低音输出(0x05即 5 段)。- 工程极重要约束:所有
para00.bin至para16.bin文件中的0x70与0x71配置参数段必须 100% 绝对一致,否则切换音效组时会导致 DSP 堆栈指针失常或声音瞬态爆音。
6. 移动端 APP 蓝牙通信协议全景规范(V2.1)
音响通过 BLE 低功耗蓝牙服务与手机配套 APP(新意诚平台 / CardoO 体系)进行高频全双工通信。
6.1 BLE 服务与广播特征定义
- Service UUID:
0000FF12-0000-1000-8000-00805F9B34FB(音响主控制服务) - Write UUID:
0000FF13-0000-1000-8000-00805F9B34FB(APP 发送指令到音响) - Notify UUID:
0000FF14-0000-1000-8000-00805F9B34FB(音响主动上报状态及命令应答到手机)
BLE 厂商自定义广播(ADV Manufacturer Data)
| 字节偏移 | 字段名称 | 字节值 / 长度 | 字段含义与解析规则 |
|---|---|---|---|
| 0 | Length | 1 Byte | 本字段及后续负载长度(通常为 0x1E) |
| 1 | Type | 0xFF (1 Byte) | 广播数据类型:Vendor Specific(厂商自定义格式) |
| 2 ~ 3 | CID | 0x444D (2 Bytes) | 公司标识码(固定 0x444D) |
| 4 ~ 5 | BID | 0x0001 (2 Bytes) | 品牌 ID(Brand ID) |
| 6 ~ 7 | PID | 0x0001 (2 Bytes) | 产品 ID:0x0001 代表 V98 系列(0x0002=V75, 0x0003=V90) |
| 8 | STATE | 1 Byte | 经典蓝牙状态:0x00=经典蓝牙未连接,0x01=经典蓝牙已建立连接 |
| 9 ~ 14 | MAC | 6 Bytes | 经典蓝牙物理 MAC 地址:每个字节经过异或 0x4B 加密,接收端需逐字节异或 0x4B 还原真实 MAC |
| 15 ~ 30 | RESERVE | 16 Bytes | 系统预留,固定填充 0x00 |
6.2 APP 数据帧物理结构
+------------+------------+-------------+-----------------------+--------------------+---------------------+
| 帧头 Head | 命令字 ID | 状态码 Stat | 负载长度 Length (BE) | 数据内容 Data | 校验和 CRC16-CCITT |
| (0xFE) | (1 Byte) | (1 Byte) | (2 Bytes) | (N Bytes) | (2 Bytes) |
+------------+------------+-------------+-----------------------+--------------------+---------------------+
- Head Flag:固定为
0xFE。 - Command ID:具体指令类别(
0x01~0x11,及 BTBox 透传0x38)。 - Status Code:
- 音响应答 APP 指令时:
0x00=成功,0x01=无效指令,0x02=长度错误,0x03=校验码错误,0x04=参数错误,0x05=状态不具备不可执行。 - 音响主动上报(Notify)时:固定填
0xF0。
- 音响应答 APP 指令时:
- Length:大端序(Big-Endian),高字节在前,低字节在后,表示
Data字段纯字节长度 。 - CRC16-CCITT/FALSE:自
Head Flag(0xFE)起始至Data字段末尾所有字节的校验和(初始值0xFFFF,多项式 )。
6.3 核心控制指令集字典
| CMD | 功能名称 | 方向 | 发送帧示例(HEX)与负载定义 | 响应/上报说明 |
|---|---|---|---|---|
0x01 | 电量获取与上报 | 双向 | 查询:FE 01 00 00 00 [CRC]负载: left_bat(1B) + right_bat(1B) + case_bat(1B) | left_bat 的 bit0~6 为百分比(),bit7 为充电标志位(1=充电中)。电量变动时音响主动上报(Status=0xF0)。 |
0x02 | 音乐 EQ 调节 | 双向 | 1. 查询当前EQ:FE 02 00 00 00 [CRC]2. 设单段: FE 02 00 00 03 01 [Band] [Gain] [CRC]3. 设预设: FE 02 00 00 02 02 [Preset_ID] [CRC] | Band:(或扩展15段);Gain:0x00(-12dB) ~ 0x0C(0dB) ~ 0x18(+12dB);Preset:0=Normal, 1=Pop, 2=Rock, 3=Jazz, 4=Classic, 5=Country。 |
0x03 | TWS 对箱控制 | 双向 | 设开关:FE 03 00 00 01 [State] [CRC]State:0x00=关闭断开,0x01=发起组队搜索 | 音响在 TWS 状态变动时主动推送当前连接态。 |
0x04 | 强制休眠 | APPBT | FE 04 00 00 01 01 [CRC] | 告知设备立即转入微功耗休眠,本指令无需应答。 |
0x05 | 系统音量调节 | 双向 | 查询:FE 05 00 00 00 [CRC]设置: FE 05 00 00 01 [Vol] [CRC] | Vol 范围 (百分比),固件直接映射至 DSP 真实增益步进,避免量化截断。 |
0x06 | 播放下一曲 | APPBT | FE 06 00 00 00 C6 6B | 触发 AVRCP 下一曲动作。 |
0x07 | 播放上一曲 | APPBT | FE 07 00 00 00 B0 DF | 触发 AVRCP 上一曲动作。 |
0x08 | 播放/暂停控制 | 双向 | 查询:FE 08 00 00 00 64 31控制: FE 08 00 00 01 [0/1] [CRC] | 0x01=播放中,0x00=已暂停。音响随手机端播放状态主动通知。 |
0x0B | RGB 灯效模式 | 双向 | 设置:FE 0B 00 00 01 [Mode] [CRC] | Mode:0x00 ~ 0x03 对应 4 种预设动态灯光算法(流水/呼吸/律动/常亮)。 |
0x0C | 输入源模式切换 | 双向 | 设置:FE 0C 00 00 01 [Src] [CRC] | Src:0x00=蓝牙,0x01=U盘,0x02=TF卡,0x03=Line-in(AUX),0x04=HDMI,0x05=光纤。 |
0x0D | 蓝牙设备名修改 | 双向 | 查询:FE 0D 00 00 00 [CRC]设置: FE 0D 00 00 [Len] [Name_Bytes] [CRC] | 支持 UTF-8 编码,最大允许 31 字节,断电持久化保存在 CM 记忆区。 |
0x0E | 定时关机倒计时 | 双向 | 设置:FE 0E 00 00 01 [Minutes] [CRC] | 0x00=关闭定时; 代表分钟数;0xFF=永不关机。 |
0x0F | 麦克风 10段EQ | 双向 | 查询:FE 0F 00 00 00 [CRC]设段: FE 0F 00 00 02 [Band] [Gain] [CRC] | Band: 0Gain: 0x00(-12dB) ~ 0x18(+12dB);主动上报带 10 字节 int8_t (-10 |
0x10 | 超重低音增强 | 双向 | 设置:FE 10 00 00 01 [0/1] [CRC] | 开启/关闭虚拟低音增强及低音频段动态增强激励。 |
0x11 | 恢复出厂设置 | APPBT | FE 11 00 00 00 [CRC] | 抹除所有配对记录、复位 EQ 曲线与音量默认值,随后自动重启系统。 |
0x38 | BTBox 透传隧道 | 双向 | FE 38 00 [Len] [BTBox 0xA5 Frame] [CRC] | 通过 BLE 隧道无线透明传输底层 0xA5 调音指令,实现免接串口远程调音。 |
7. BTBox / GDE 上位机调音协议字典(v1.01.07)
BTBox 是士兰微用于配合官方 PC 端上位机(GDE)对 DSP 内部寄存器与音效节点进行毫秒级在线实时调整与波形分析的专用二进制协议。
- 物理端口:DSP 专用串口 UART2(
PE8/RX、PE9/TX,默认波特率 115200 bps);亦可在config.h中配置为通过 USB HID 端点进行无驱传输(GDE_USE_HID)。 - 数据帧格式(固定起始符
0xA5):
| 字节 1 | 字节 2 | 字节 3 | 字节 4 | 字节 5 ~ 15 | 字节 16 |
|---|---|---|---|---|---|
| 识别码 | 总长度 | 主命令码 | 子命令码 | 参数数组(小端序,最多11字节) | 校验和 CSum |
0xA5 | 数据包长 | 见下表 | 音效/系统子功能号 | 低字节在前,高字节在后 | 长度至参数和的低8位 |
点击展开 / 折叠:BTBox / GDE 上位机调音参数(0xF1)各子模块结构对照
0xF1(音效参数配置,上位机 DSP):
0x04(REVERBECHO混响回声,限 List 5):参数包含 湿度、房间尺寸、EchoPreDelay (0150ms)、EchoDelay (0500ms)、衰减比 (0~90%)、干/湿声音量。0x0A(EQ均衡器):针对指定 List 下发 Filter_ID、增益 ([-24, +12]dB)、中心频率 (20~20000Hz)、Q值及类型(4低通、5高通、6低架、7高架、10/11全通)。0x0F(Volume声道增益):针对指定 List 设置线性/分贝模式音量,可扩展负极限至 。0x12(Noise Gate噪声门限):设置门限开启电平与保持/淡入/淡出时间(ms)。0x21(FFS移频防啸叫,List 1/3):频偏范围 ,相位 。0x29(DRC动态范围压缩器):启动时间 、释放时间 、阈值 Threshold ()、压缩比 Ratio ()、软拐点 Knee。0x60(ROUTE矩阵路由):指定输出通道与 12 组输入音频流的混合增益矩阵权重 ()。0xF5/0xF6(音效参数回读与返回):用于上位机在线拉取音箱当前的真实运行参数并绘制曲线。0xF3/0xF4(实时数据遥测):
- 子命令
0x16:实时回传声道能量(4 字节能量幅值,刷新周期 50~500ms,供 UI 或能量灯显示)。- 子命令
0x33:实时回传 32 点/64 点 FFT 频谱频点幅值数据。- 子命令
0x29:回传 DRC 动态压陷是否触发状态(1=触发防削波,0=正常)。0xF9/0xFA(系统控制命令集):
0x55:动态切换音源模式(0=AUX, 1=BT, 2=USB, 3=SD, 4=USB Audio, 5=SPDIF, 6=HDMI)。0x03:上位机心跳包(每 1 秒下发一次保持 GDE 通道活动,防止 3 合 1 接口超时退回 USB 设备检测)。0x06:音效组加载/切换(0~16组)。0x08:DSP 性能监控回传(返回mips_pct算力占用百分比及溢出标志)。
8. 关键外设子系统开发与驱动实现
8.1 按键控制与电阻分压匹配(ADKEY/IOKEY)
系统配置了双路 SAR-ADC 按键扫描,分别接入 ADCCH_PB13(PIN 44)与 ADCCH_PB12(PIN 43),采用片外 10k 上拉电阻到 VDDIO。
VDDIO (3.3V)
│
[10k 上拉电阻]
│
├──────> PIN 44 (PB13 / ADKEY1)
│
├─[ 0R ]──> [PLAY / PAUSE 按键] ──> GND (ADC <= 0x10)
│
├─[ 2.0k ]──> [VOL- / PREV 按键] ──> GND (ADC ~ 0x30)
│
└─[ 5.1k ]──> [VOL+ / NEXT 按键] ──> GND (ADC ~ 0x49)
ADKEY 1(PIN 44,ADCCH_PB13)
KEY_PLAY:短按播放/暂停;来电短按接听、长按拒接、通话中短按挂断;双击回拨最后通话;长按 2 秒唤醒手机语音助手。KEY_VOL_DOWN_PREV:短按音量减 1 级;长按(>500ms)连续切上一曲。KEY_VOL_UP_NEXT:短按音量加 1 级;长按(>500ms)连续切下一曲。
ADKEY 2(PIN 43,ADCCH_PB12)
0x10(0R 接地)-KEY_MODE:短按轮询切音源;长按 3 秒断开蓝牙;超长按 8 秒强制硬件复位(IO_KEY_8S_RST)。0x2E(2.0k 接地)-KEY_EQ:短按轮询切 EQ 预设曲线;长按系统硬件静音(MUTE)。0x4D(5.1k 接地)-KEY_VOICE_RM:短按无线麦克风电源开关;长按启动 DSP 消原音;双击进入 TWS 对箱组队搜索。
8.2 数字旋钮编码器(16级音量调节)
工程使能了 USER_KEY_KNOB_EN 1,将旋转脉冲旋钮接入计数管脚,映射为平滑的 16 级音量表(USER_KEY_KNOB_LEVEL 16)。旋钮动作通过 bsp_change_volume() 转换至硬件音量寄存器,并触发手机端音量同步。
8.3 WS2812 SPI 炫彩动感灯效引擎
- 时序驱动:利用片上高频 SPI 硬件控制器驱动
PA15单总线,发送精确的高低电平占空比模拟 WS2812 800kHz 编码时序,杜绝中断延迟造成的灯光频闪。 - 音频律动:使能
DEBUG_MUSIC_L_POW,HiFi4 DSP 在计算每帧音频时提取真实 RMS 能量值并写入共享内存,灯效驱动以 50Hz 刷新率动态映射点亮灯珠数量与色温冷热度。
8.4 功放静音控制与防破音防 POP 机制
sequenceDiagram autonumber participant CPU as RISC-V 内核 participant DSP as HiFi4 DSP participant GPIO as 静音控制管脚 participant CODEC as DAC 2.1 模拟单元 participant AMP as 外部扬声器功放 Note over CPU,AMP: 阶段一:冷启动静音锁定 CPU->>GPIO: 置低 PA13(ERJI_MUTE=0) & PB8(AMP_EN2=0) Note right of AMP: 功放强行封锁,输出处于高阻/接地态 CPU->>CODEC: 初始化 DAC,放电电容充放电 (DAC_PULL_DOWN_DELAY=80) Note over CPU,DSP: 阶段二:DSP 固件载入与参数铺设 CPU->>DSP: 握手启动 (RISC TO DSP),加载 sram.bin DSP->>DSP: 载入 para00.bin 17组EQ与矩阵路由 (0x60) Note over CPU,AMP: 阶段三:两阶段释放防爆音 CPU->>GPIO: 预拉高 PB8(AMP_EN2=1) 供电就绪 CPU->>CODEC: 加载开机音量增益 (sys_init_vol=8 -> 0x7C80) Note over CPU: 延时 30ms (loudspeaker_unmute_delay=6) CPU->>GPIO: 拉高 PA13(ERJI_MUTE=1),开启前级通道 Note over AMP: 扬声器平滑出音,零瞬态直流冲击 (无任何POP声)
8.5 电源与高精度电池电量检测子系统
- 采样分压网络:电池输入经两只精密电阻分压接入
PE13(ADCCH_PE13)。 - 峰值滤波算法:使能
VBAT_FILTER_USE_PEAK 1,避免重低音大动态瞬态拉低输入电压导致系统误报低电关机。 - 核心标定阈值:
BAT_VAL_FULL = 2313 mV:标定电池充满(100%);BAT_VAL_OUT_LOW = 2100 mV:退出低电警戒;BAT_VAL_LOW_WARNING = 2060 mV:低电语音报警(约 20% 电量);BAT_VAL_POW_OFF = 2000 mV:触发安全软关机保存;BAT_VAL_LOW_DONO_POWER_ON = 1890 mV:禁止低电强行开机。
- 低电动态限幅:开启
LOWPWR_REDUCE_VOL_EN,低电时自动压降输出增益,防止电池保护板瞬态保护截断。
9. Flash 存储空间布局与参数记忆机制(CM)
系统配备 2MB(2048KB)内置高速 SPI Flash,内部进行了精确的 4KB 扇区划分:
| 物理地址范围 | 功能模块划分 | 占用空间 | 说明 |
|---|---|---|---|
0x000000 ~ 0x102400 | app.dcf 固件全镜像 | 约 1033 KB | 包含 header.bin + app.bin + res.bin + xcfg.bin |
0x102400 ~ 0x180000 | 剩余空闲分区 1 | 约 500 KB | 系统预留空间,可用于 OTA 双备份镜像 |
0x180000 ~ 0x1A2000 | 算法音效参数配置文件区 | 136 KB | para00.bin ~ para16.bin(17 组,每组 8KB) |
0x1A2000 ~ 0x1FB000 | 剩余空闲分区 2 | 约 356 KB | 用户资源预留 |
0x1FB000 ~ 0x200000 | CM 参数持久化记忆区 | 20 KB | 管理系统音量、模式断点、配对列表等(上限2500B) |
CM 记忆模块扩展规则
CM 模块管理 10 个 Page,每个 Page 存贮 250 字节(总计 2500 字节)。若需记忆大体积字库或离线声学参数,必须调用底层 Flash 扇区接口:
os_spiflash_erase(u32 addr)(4KB 擦除)os_spiflash_program(void *buf, u32 addr, uint len)(扇区写入)os_spiflash_read(void *buf, u32 addr, uint len)(内存读取)
10. 工程编译、固件烧录与系统升级流程
10.1 开发环境搭建与编译步骤
- 环境安装:安装专用的 CodeBlocks 20.03(集成 RISC-V 32 GCC 工具链);
- 载入工程:打开
sq96b87_x5_sdk_v98_2EQ\projects\standard\app.cbp; - 编译构建:点击
Build -> Rebuild (Ctrl+F9); - 编译自动化流程:
- 源码编译生成
app.rv32ELF 文件; - 自动触发
postbuild.bat脚本执行:riscv32-elf-objcopy -O binary app.rv32 app.bin riscv32-elf-xmaker -b appxm.o riscv32-elf-xmaker -b download.xm - 最终在
Output/bin/打包生成烧录目标文件:app.dcf。
- 源码编译生成
10.2 硬件连线与 Downloader 烧录
- 连接士兰微专用 USB-TTL 串口下载板至目标板烧录引脚;
- 启动
Downloader.exe烧录软件,选择匹配的串口号; - 点击
打开,载入app.dcf镜像,校验Settings/V98.setting配置无误; - 点击
开始,给板子重新上电或复位,握手成功后数秒内完成刷写与校验。
10.3 离线 U 盘 / TF 卡自动升级
- 在
Downloader中点击格式转换,将app.dcf转换为单升级包文件fw5000.upd(或v98_app_260915.upd); - 复制到 FAT32 格式的 U 盘或 TF 卡根目录下;
- 音响开机插入介质,系统后台扫描函数
pf_scan_music()识别合法固件包后自动进入func_update(),静音功放并自动刷写 Flash,完成后重启。
11. 运行时实测启动日志(Log)深度解读与调试避坑指南
结合项目现场实测抓取的串口日志,我们可完整校验音响全生命周期状态:
点击展开 / 折叠:查看实测开机全流程串口抓包日志(精选诊断)
[2026-09-10 17:51:04.623] Hello Platform RC2M[0]: 1554127Hz, Counter: 61771 ... startup Hello SQ96B87 SDK: 8000003a, Compiled on Sep 10 2026 at 17:43:41 --->sys_init_vol:8, bt_tws_lr_mode 1 xcfg_cb.bt_tws_lr_mode 0 [VOLDBG] PARAM_READ music_vol=8, max=16 [VOLDBG] POWER_ON_DEFAULT_VOLUME=8 ... [2026-09-10 17:51:05.582] power_on -> RISC TO DSP [dac_init] vol_max:16, offset: 0 [VOLDBG_CALL] bsp_change_volume vol=16 (sys_cb.vol=16) [DACM] bsp_change_volume: vol=16 level=0 mdac_vol=31872(0x7c80) [DACM] ===== boot_end ===== [DACM] PIN: PA13(ERJI_MUTE)=0 PB8(AMP_EN2/MUTE_OUT)=1 [DACM] CFG: cfg_mdac_en=1 MDAC_BASS_EN=1 MDAC_VOL_CHANGE=0 LRDAC_TO_MDAC_EN=3 mdac_input_sel=3 hifi4_eff_en=1 dac_sel=5 [DACM] REG: dvol=0x0 DACDIGCON0=0x2203 DACVOLCON=0x12000000 SRC1VOLCON=0x4007c80 MDACDIGCON=0x98200203 MDACVOLCON=0x2007c80 AUBUF1CON=0x80060 ... [2026-09-10 17:51:08.880] 下发 17 段 EQ 与路由表参数 (A5 58 F1 0A ...) ... [2026-09-10 17:51:14.929] [DACM] ===== step8_after_ERJI_MUTE_OFF ===== [DACM] PIN: PA13(ERJI_MUTE)=1 PB8(AMP_EN2/MUTE_OUT)=1 [DACM] REG: dvol=0x7c80 DACDIGCON0=0x12203 DACVOLCON=0x12007fff SRC1VOLCON=0x14007c80 MDACVOLCON=0x12007c80
11.1 关键运行节点诊断结论
- 时钟校准与 SDK 版本:芯片先完成内部 RC 校准,随后打印
SDK: 8000003a,证明 RISC-V 内核与 PLL 稳定在目标频率。 - 开机音量钳位:
sys_init_vol: 8被POWER_ON_DEFAULT_VOLUME=8强制对齐,杜绝了开机音量过大惊扰用户。 - RISC-V 激活 HiFi4 DSP:打印
RISC TO DSP后加载sram.bin并连续下发A5 58 F1 0A ...系列参数,完成 17 组 EQ 及全局矩阵路由(0x60)部署。 - 两阶段静音消除冲击声:
boot_end时PA13(ERJI_MUTE)=0;稳定就绪后转入step8_after_ERJI_MUTE_OFF,拉高PA13=1释放静音,DAC 加载增益0x7C80,全程零冲击底噪。
11.2 二次开发高频故障排查(Troubleshooting)
- 问题 1:开机进入蓝牙后有微弱底噪或持续高频杂音
- 原因:
config.h中MIC_POWER_ON_MUTE宏未开启,或 HiFi4 麦克风链路在未插入麦克风时未触发自动静音(MIC_EFFECT_AUTO_MUTE)。 - 解决:保持使能
#define MIC_POWER_ON_MUTE,并确保MIC_EFFECT_AUTO_MUTE处于有效状态。
- 原因:
- 问题 2:通过 APP 调节音乐 EQ 时出现咔哒爆音
- 原因:APP 连续高速下发 EQ 增益指令,若每次都重新计算全段 IIR 滤波器系数,会导致 DSP 缓冲区不连续。
- 解决:检查
ab_mate_app.c中的ab_mate_eq_send_band_to_hifi4(),确保只对特定发生变动的段进行增益系数动态重算,并启用平滑渐变机制。
- 问题 3:TWS 对箱无法组队配对
- 原因:
V98.setting中bt_tws_pair_mode与BT_TWS_PAIR_ID不匹配,或一端开启了绑定功能(bt_tws_pair_bonding_en)。 - 解决:双机均使能
BT_TWS_EN 1,将配对模式统一设置为按名称或固定 ID(0x38393230)配对,并长按按键调用bt_tws_delete_link_info()清除过往配对信息。
- 原因:
- 问题 4:大音量重低音播放时偶发无故关机
- 原因:电池老化或内阻偏大,瞬态大动态拉低输入电压触发了低电采样阈值。
- 解决:开启
LOWPWR_REDUCE_VOL_EN,检查VBAT_FILTER_USE_PEAK 1是否生效,适当调整BAT_VAL_POW_OFF阈值至2000mV以下。
12. 决策与下一步行动
闭环管理指引
本手册作为 V98 音响工程的基础技术参照,已纳入 Obsidian 知识库闭环流转体系。后续开发或调优请依此指引执行:
核心决策点
- APP 协议选型:确认采用新版
新意诚 V2.1(0xFE格式)还是维持对旧版CardoO v1.4(TLV格式)的双模兼容。 - DSP 调音固化:在试产前通过 GDE 工具敲定最终声学曲线,并重新导出 17 组
para00.bin~para16.bin写入固件,避免出厂低频发虚或高频刺耳。 - 电量截止阈值校准:根据量产电池批次内阻曲线重新实测校准
BAT_VAL_POW_OFF与BAT_VAL_LOW_WARNING。
我的行动项
- 审阅产物:音响产品项目详细技术报告与二次开发手册 并决策调音批次 todo ⏫ 📅 2026-09-27 ✅ 2026-09-24
- 在 CodeBlocks 中 Rebuild 验证
app.cbp编译是否能正常生成app.dcf - 使用 Downloader 配合测试样机实测蓝牙播歌与 APP 协议调音联动
AI 可代办事项
- 若需定制特定按键功能或新增串口控制指令,可直接提供要求,AI 负责编写
port_key.c及ab_mate_app.c的补丁代码; - 协助转换或编写批量生成 17 组 EQ 参数文件的 Python 脚本;
- 分析更新后的运行时串口调试日志。
关联导航
- 📘 全库总纲:仓库手册
- 📖 专题手册导航:手册导航
- 📊 产物主索引:Output 索引
- 📁 硬件 SDK 源码目录:
C:\Users\65211\Desktop\音响产品项目\sq96b87_x5_sdk_v98_2EQ