版本信息:v1.0 | 更新日期:2026-02-11
适用模组:SU-23T、SU-21T、SU-22T 等蜂鸟L系列超低功耗模组
素材来源:技术交流群真实案例(智能公元12群,2026-02-09)+ SmartPi 官方文档
在使用 SU-23T 超低功耗语音模组进行 PWM 控制应用时,有开发者遇到了一个令人困惑的问题:PWM 占空比设置值与实际测量值不一致,且出现明显的跳动现象。

用户真实问题(智能公元12群,2026-02-09):
"我也测了SU23T的PWM信号输出不稳,不知道是啥问题。之前直接用这个输出PWM,现在没办法只能改方案加个单片机进去用通信解决。"
"我设置的PWM是5%,结果测量出来是PWM在3% 4% 5%乱跳"
"输出50Hz的PWM脉冲,不过我只是测试了GPIO3的复用PWM"
官方技术支持回复:
"用硬件PWM然后优化选项把深度休眠点不支持,试试"
这个案例揭示了一个关键问题:超低功耗模组的 PWM 输出稳定性会受到深度休眠模式的影响。本文将系统分析这一问题的成因,并提供完整的排查与解决方案。
| 症状类型 | 具体表现 | 测试条件 |
|---|---|---|
| 占空比跳动 | 设置5%,实测在3%-5%之间波动 | GPIO3复用PWM,50Hz输出 |
| 频率不稳定 | 设置50Hz,实测在48Hz-50Hz之间波动 | 示波器/频率计测量 |
| 波形不一致 | 脉冲宽度随时间变化,高/低电平时间比例不固定 | 逻辑分析仪捕获 |
SU-23T 采用蜂鸟L系列芯片(US513U61),其核心特点如下:
| 特性 | 说明 | 影响 |
|---|---|---|
| 超低功耗工艺 | 采用超低功耗制程工艺 | 驱动能力相对较弱 |
| 多级功耗管理 | 静默→浅休眠→深度休眠 | 状态切换影响外设 |
| 亚毫瓦级待机 | 深度休眠时约800μA | 为降低功耗频繁切换状态 |
| MCU+NPU架构 | 语音识别专用NPU | CPU资源优先分配给语音 |
SU-23T 在静默一段时间后会自动进入深度休眠模式以降低功耗:
正常工作状态 → 浅休眠(约1mA) → 深度休眠(约800μA)
↓ ↓ ↓
PWM稳定 PWM可能不稳定 PWM输出受影响深度休眠对PWM的影响方式:
与专用PWM引脚相比,GPIO复用PWM存在以下限制:
| 对比项 | 专用PWM引脚 | GPIO复用PWM |
|---|---|---|
| 时钟源 | 独立PWM时钟 | 系统时钟分频 |
| DMA支持 | 完整支持 | 可能受限 |
| 休眠影响 | 较小 | 较大 |
| 精度 | 高 | 中等 |
| 资源占用 | 独占 | 与其他功能共享 |
适用场景:对功耗要求不极端,需要稳定PWM输出的应用
操作步骤:
效果验证:
功耗影响:
适用场景:必须保留深度休眠功能,同时需要稳定PWM输出
SU-23T PWM资源:
| PWM通道 | 引脚 | 说明 |
|---|---|---|
| PWM0 | IO2 | 专用PWM引脚 |
| PWM1 | IO3 | 专用PWM引脚(与GPIO复用) |
配置方法:
验证方法:
使用示波器或逻辑分析仪测量:
- 频率应稳定在设置值(如50Hz ±0.1Hz)
- 占空比应稳定(如5% ±0.5%)
- 波形应规整,无毛刺或抖动适用场景:PWM精度要求高,需要多路PWM控制
用户反馈的最终方案:
"现在没办法只能改方案加个单片机进去用通信解决"
系统架构:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ SU-23T │ UART/IO │ 外部MCU │ PWM │ 负载 │
│ 语音识别 │──────────→│ PWM生成 │──────────→│ (舵机等) │
└─────────────┘ └─────────────┘ └─────────────┘优势:
实现方式:
示例代码(外部MCU侧):
// STM32 HAL库示例
void set_pwm_duty(uint8_t duty_percent) {
uint16_t pulse = (TIM1->ARR * duty_percent) / 100;
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pulse);
}
// 串口接收处理
void UART_RxCallback(uint8_t *data) {
if (data[0] == 0xAA && data[1] == 0x55) {
uint8_t duty = data[2]; // 占空比数值
set_pwm_duty(duty);
}
}适用场景:需要多路高精度PWM,不希望增加MCU复杂度
推荐芯片:
| 芯片型号 | 通道数 | 接口 | 特点 |
|---|---|---|---|
| PCA9685 | 16路 | I2C | 硬件PWM,12位精度 |
| TLC5940 | 12路 | 串行 | 16位精度,支持LED调光 |
| WS2812 | N路 | 单线 | 智能LED,内置驱动 |
PCA9685连接示例:
SU-23T PCA9685
───── ───────
IO2 (SCL) ──────────→ SCL
IO3 (SDA) ──────────→ SDA
3.3V ───────────────→ VCC
GND ────────────────→ GND
↓
PWM0-PWM15输出| 方案 | 复杂度 | 稳定性 | 功耗 | 推荐度 |
|---|---|---|---|---|
| 关闭深度休眠+专用PWM | ★★☆ | ★★★ | ★★☆ | ★★★ |
| GPIO复用PWM | ★☆☆ | ★☆☆ | ★★★ | ★☆☆ |
| 外部MCU辅助 | ★★★ | ★★★ | ★★★ | ★★☆ |
| PCA9685芯片 | ★★☆ | ★★★ | ★★☆ | ★★☆ |
推荐配置(舵机):
PWM频率:50Hz
占空比范围:5%-10%
对应角度:-90° ~ +90°
使用引脚:IO2(专用PWM0)
深度休眠:关闭| 方案 | 复杂度 | 稳定性 | 功耗 | 推荐度 |
|---|---|---|---|---|
| 关闭深度休眠+专用PWM | ★★☆ | ★★★ | ★★☆ | ★★★ |
| GPIO复用PWM | ★☆☆ | ★★☆ | ★★★ | ★★☆ |
| PWM芯片 | ★★☆ | ★★★ | ★★☆ | ★☆☆ |
推荐配置(LED调光):
PWM频率:500Hz
占空比范围:0%-100%
使用引脚:IO2或IO3
深度休眠:可保留(频率较高时影响较小)注意事项: SU-23T 不适合高频PWM应用,建议:
步骤1:使用示波器或逻辑分析仪测量PWM输出
步骤2:记录设置值与实测值的差异
步骤3:观察跳动频率和幅度
步骤4:确认问题是否持续存在□ 确认使用硬件PWM模式(非GPIO复用)
□ 确认深度休眠设置状态
□ 确认PWM频率设置(推荐50Hz、100Hz、500Hz)
□ 确认占空比设置范围(推荐5%-95%)□ 引脚连接是否正确
□ 负载是否在驱动能力范围内
□ 电源供电是否稳定
□ 是否有外部干扰源测试1:关闭深度休眠,重新测试PWM稳定性
测试2:更换为专用PWM引脚,对比测试
测试3:降低PWM频率,观察是否改善
测试4:使用最小系统测试,排除外部干扰| 配置状态 | 静默电流 | 深度休眠电流 | PWM稳定性 |
|---|---|---|---|
| 深度休眠启用 | ~1mA | ~800μA | 可能不稳定 |
| 深度休眠关闭 | ~1mA | - | 稳定 |
| 持续播放语音 | ~3mA | - | 稳定 |
| 需求场景 | 推荐模组 | 理由 |
|---|---|---|
| 极低功耗+简单PWM | SU-23T(关闭深度休眠) | 平衡功耗与功能 |
| 多路稳定PWM | SU-32T | 更多硬件PWM资源 |
| 高精度PWM | SU-23T + 外部MCU | 方案灵活,精度高 |
| LED调光为主 | SU-03T | 功耗更低,PWM充足 |
A: 请检查以下因素:
A: 低占空比对时钟精度要求更高:
A: 可以尝试以下方法:
A: SU-23T提供2路PWM输出:
A: 不建议直接连接:
完成PWM配置后,请使用以下清单验证:
SU-23T 作为超低功耗语音模组,其 PWM 输出稳定性受深度休眠机制影响。通过系统排查和合理配置,大多数稳定性问题都可以解决:
| 问题类型 | 推荐解决方案 | 难度 |
|---|---|---|
| 占空比跳动 | 关闭深度休眠 | ★☆☆ |
| 频率波动 | 使用专用PWM引脚 | ★★☆ |
| 精度不足 | 外部MCU辅助 | ★★★ |
| 多路需求 | PCA9685扩展 | ★★☆ |
核心要点:
记住:SU-23T 的定位是超低功耗语音识别,PWM 功能是辅助特性。如对 PWM 精度有高要求,建议使用外部 MCU 协同处理,让 SU-23T 专注于其擅长的语音识别功能。
参考资料:
相关标签:SU-23T、PWM、占空比、深度休眠、蜂鸟L、US513U61、舵机控制、GPIO复用、低功耗、PWM稳定性