SU-23T PWM占空比不稳定问题排查指南
类型:热点整理2026-07-08
一、问题现象分析 1 1 典型症状 遇到此类问题时,通常表现出以下典型特征: 症状类型具体表现测试条件 占空比跳动设定为5%,实测在3%-5%区间内波动GPIO3复用PWM功能,50Hz输出 频率不稳定设定为50Hz,实测在48Hz-50Hz之间变化示波器或频率计测量 波形不一致脉冲宽度随时间漂移,
一、问题现象分析
1.1 典型症状
遇到此类问题时,通常表现出以下典型特征:
| 症状类型 | 具体表现 | 测试条件 |
| 占空比跳动 | 设定为5%,实测在3%-5%区间内波动 | GPIO3复用PWM功能,50Hz输出 |
| 频率不稳定 | 设定为50Hz,实测在48Hz-50Hz之间变化 | 示波器或频率计测量 |
| 波形不一致 | 脉冲宽度随时间漂移,高低电平比例不固定 | 逻辑分析仪捕获 |
1.2 问题特征
深入观察后,这些问题还存在一定规律:
* **低占空比时更明显**:例如5%-10%这样的小占空比设定,跳动现象尤其突出。
* **50Hz频率典型**:许多应用(如舵机控制)常用此标准频率,而问题恰好在此时高发。
* **GPIO复用PWM**:绝大多数问题出现在使用GPIO复用功能输出PWM的场景,而非专用PWM引脚。
---
二、根本原因分析
2.1 超低功耗模组的特殊性
SU-23T搭载蜂鸟L系列芯片(US513U61),其设计理念以“极致省电”为核心。它的特殊性主要体现在:
| 特性 | 说明 | 影响 |
| 超低功耗工艺 | 采用先进的超低功耗制程工艺 | 驱动能力相对有限 |
| 多级功耗管理 | 静默→浅休眠→深度休眠多级切换 | 状态切换对外设有影响 |
| 亚毫瓦级待机 | 深度休眠时电流约800μA | 为降低功耗频繁切换状态 |
| MCU+NPU架构 | 集成语音识别专用NPU | CPU资源优先保障语音处理 |
2.2 深度休眠机制对PWM的影响
这是问题的核心所在。模组在静默一段时间后,会自动进入深度休眠模式以实现最低功耗:
```
正常工作状态 → 浅休眠(约1mA) → 深度休眠(约800μA)
↓ ↓ ↓
PWM稳定 PWM可能不稳定 PWM输出受影响
```
进入深度休眠后,芯片会执行几项影响PWM的操作:
1. **时钟源切换**:系统时钟可能被自动切换到低频辅助时钟源。
2. **DMA暂停**:负责PWM输出的DMA传输可能被暂停,或优先级大幅降低。
3. **GPIO状态保持**:GPIO的复用功能可能被禁用,输出引脚进入“保持”模式。
这三项因素叠加,直接导致PWM无法稳定工作。
2.3 GPIO复用PWM的限制
若采用GPIO复用PWM,问题会更加复杂。与专用PWM引脚相比,其资源分配存在显著差异:
| 对比项 | 专用PWM引脚 | GPIO复用PWM |
| 时钟源 | 独立PWM时钟 | 系统时钟分频 |
| DMA支持 | 完整支持 | 可能受限 |
| 休眠影响 | 较小 | 较大 |
| 精度 | 高 | 中等 |
| 资源占用 | 独占 | 与其他功能共享 |
---
三、解决方案
理清原因后,解决方案便清晰可见。根据具体需求,可选择不同的技术路径。
方案一:关闭深度休眠功能(推荐首选)
该方案最为简单直接,也是官方推荐的做法。若对功耗要求并非极端严苛(例如电池供电但对续航不是极致追求),这是最省力且可靠的解决方式。
**操作步骤:**
1. 登录智能公元平台(https://smartpi.cn)
2. 进入对应产品的版本配置
3. 找到“优化配置”页面
4. 定位到“深度休眠”选项
5. 将状态设置为“**不支持**”
6. 重新生成固件并烧录
**效果验证:**
* 配置前:占空比在3%-5%之间跳动
* 配置后:占空比稳定在设定值(如5%)
**功耗影响:**
* 关闭深度休眠后,待机电流从约800μA上升至约1mA
* 约200μA的增幅,对于绝大多数应用场景完全可以接受。
方案二:使用专用PWM引脚
若必须保留深度休眠功能,同时又需要稳定的PWM输出,可考虑使用芯片的专用PWM引脚。
**SU-23T PWM资源:**
| PWM通道 | 引脚 | 说明 |
| PWM0 | IO2 | 专用PWM引脚 |
| PWM1 | IO3 | 专用PWM引脚(与GPIO复用) |
**配置方法:**
1. 在平台Pin脚配置中选择支持PWM的引脚
2. 功能选择“**PWM输出**”(非GPIO复用)
3. 设置PWM频率和初始占空比
4. 确保使用“硬件PWM”模式
**验证方法:**
```
使用示波器或逻辑分析仪测量:
- 频率应稳定在设定值(如50Hz ±0.1Hz)
- 占空比应稳定(如5% ±0.5%)
- 波形应规整,无毛刺或抖动
```
方案三:使用外部单片机辅助
若对PWM精度要求极高,或需要多路PWM控制,建议不要过度依赖SU-23T。群里的那位用户最终就是采用了此方案——增加一个外部MCU。
**系统架构:**
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ SU-23T │ UART/IO │ 外部MCU │ PWM │ 负载 │
│ 语音识别 │──────────→│ PWM生成 │──────────→│ (舵机等) │
└─────────────┘ └─────────────┘ └─────────────┘
```
**优势:**
* PWM由外部MCU独立生成,精度高且稳定,不受SU-23T休眠影响。
* SU-23T可专注于语音识别任务,分工明确。
* 可灵活扩展多路PWM输出,自由度更高。
**实现方式:**
1. **通信协议**:UART串口通信。
2. **控制指令**:语音识别模组识别指令后,通过串口将PWM控制参数发送给外部MCU。
3. **PWM生成**:外部MCU利用自身硬件定时器产生精准PWM。
**示例代码(外部MCU侧):**
```c
// 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增加复杂度,但需要多路高精度PWM,可选用专用PWM驱动芯片,例如PCA9685。
**推荐芯片:**
| 芯片型号 | 通道数 | 接口 | 特点 |
| 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输出
```
---
四、不同应用场景的方案选择
具体选择哪种方案,需结合实际应用场景来决定。
4.1 舵机控制(50Hz PWM)
| 方案 | 复杂度 | 稳定性 | 功耗 | 推荐度 |
| 关闭深度休眠+专用PWM | ★★☆ | ★★★ | ★★☆ | ★★★ |
| GPIO复用PWM | ★☆☆ | ★☆☆ | ★★★ | ★☆☆ |
| 外部MCU辅助 | ★★★ | ★★★ | ★★★ | ★★☆ |
| PCA9685芯片 | ★★☆ | ★★★ | ★★☆ | ★★☆ |
**推荐配置(舵机):**
```
PWM频率:50Hz
占空比范围:5%-10%
对应角度:-90° ~ +90°
使用引脚:IO2(专用PWM0)
深度休眠:关闭
```
4.2 LED调光(200Hz-1kHz PWM)
| 方案 | 复杂度 | 稳定性 | 功耗 | 推荐度 |
| 关闭深度休眠+专用PWM | ★★☆ | ★★★ | ★★☆ | ★★★ |
| GPIO复用PWM | ★☆☆ | ★★☆ | ★★★ | ★★☆ |
| PWM芯片 | ★★☆ | ★★★ | ★★☆ | ★☆☆ |
**推荐配置(LED调光):**
```
PWM频率:500Hz
占空比范围:0%-100%
使用引脚:IO2或IO3
深度休眠:可保留(频率较高时影响较小)
```
4.3 电机调速(10kHz+ PWM)
SU-23T 本身不适合高频PWM应用。若需电机调速,稳健的做法是:
* 使用外部MOSFET驱动。
* PWM由外部MCU生成,SU-23T仅负责开关控制或发出速度指令。
---
五、完整排查流程
若问题已出现,可按以下步骤系统排查。
5.1 问题确认
```
步骤1:使用示波器或逻辑分析仪测量PWM输出
步骤2:记录设定值与实测值的差异
步骤3:观察跳动频率和幅度
步骤4:确认问题是否持续存在
```
5.2 配置检查
```
□ 确认使用硬件PWM模式(非GPIO复用)
□ 确认深度休眠设置状态
□ 确认PWM频率设定(推荐50Hz、100Hz、500Hz)
□ 确认占空比设定范围(推荐5%-95%)
```
5.3 硬件检查
```
□ 引脚连接是否正确
□ 负载是否在驱动能力范围内
□ 电源供电是否稳定
□ 是否有外部干扰源
```
5.4 逐步测试
```
测试1:关闭深度休眠,重新测试PWM稳定性
测试2:更换为专用PWM引脚,对比测试
测试3:降低PWM频率,观察是否改善
测试4:使用最小系统测试,排除外部干扰
```
---
六、功耗与稳定性权衡
技术选型往往需要取舍,功耗与稳定性之间通常需要平衡。
6.1 不同配置下的功耗对比
| 配置状态 | 静默电流 | 深度休眠电流 | PWM稳定性 |
| 深度休眠启用 | ~1mA | ~800μA | 可能不稳定 |
| 深度休眠关闭 | ~1mA | - | 稳定 |
| 持续播放语音 | ~3mA | - | 稳定 |
6.2 选型建议
| 需求场景 | 推荐模组 | 理由 |
| 极低功耗+简单PWM | SU-23T(关闭深度休眠) | 平衡功耗与功能 |
| 多路稳定PWM | SU-32T | 更多硬件PWM资源 |
| 高精度PWM | SU-23T + 外部MCU | 方案灵活,精度高 |
| LED调光为主 | SU-03T | 功耗更低,PWM充足 |
---
七、常见问题 FAQ
Q1:为什么关闭深度休眠后PWM还是不稳定?
**A:** 若关闭休眠后仍不稳定,请检查以下方面:
1. 确认是否使用了专用PWM引脚,而非GPIO复用。
2. 检查负载是否过大,导致输出信号被拉低。
3. 用示波器查看电源纹波是否过大。
4. 尝试更新固件版本。
Q2:占空比设置低于5%时更不稳定,为什么?
**A:** 低占空比对时钟精度要求更高。例如5%占空比在50Hz下对应1ms脉宽,时钟若有微小波动,放大到该比例上影响会十分明显。因此建议最小占空比设置在10%以上。
Q3:能否同时使用深度休眠和稳定PWM?
**A:** 可尝试一些折中方法,但无法保证绝对稳定:
1. 在需要输出PWM前,通过唤醒信号将模组唤醒。
2. 动态调整PWM,在进入休眠前将PWM引脚拉至确定电平。
3. 坚持使用专用PWM引脚而非GPIO复用。
但若要实现完全稳定,仍建议关闭深度休眠。
Q4:SU-23T有几路PWM输出?
**A:** SU-23T提供2路PWM输出:
* PWM0:IO2引脚
* PWM1:IO3引脚(可与GPIO复用)
如需更多路数,需借助外部芯片或MCU。
Q5:PWM输出能直接驱动舵机吗?
**A:** 不建议直接连接。原因如下:
1. SU-23T的GPIO驱动能力有限(小于20mA)。
2. 舵机在启动或堵转时,瞬时电流可能达数百毫安。
稳妥的做法是通过舵机驱动板,或使用三极管/MOSFET搭建中继驱动电路。
---
八、配置检查清单
完成PWM配置后,可使用此清单进行最终确认。
硬件连接
- [ ] PWM引脚连接正确
- [ ] 负载在驱动能力范围内
- [ ] 供电稳定(3.3V ±5%)
- [ ] 共地连接良好
平台配置
- [ ] 使用硬件PWM模式
- [ ] PWM频率设置正确
- [ ] 占空比范围合理(5%-95%)
- [ ] 深度休眠已根据需求配置
功能验证
- [ ] 示波器测量频率稳定
- [ ] 占空比实测值与设定值一致
- [ ] 波形规整,无明显抖动
- [ ] 负载响应正常
---
九、总结
SU-23T 作为一款主打超低功耗的语音模组,其PWM输出稳定性确实容易受深度休眠机制影响。但只要掌握关键要点,通过系统排查和合理配置,大多数稳定性问题都能有效解决。
| 问题类型 | 推荐解决方案 | 难度 |
| 占空比跳动 | 关闭深度休眠 | ★☆☆ |
| 频率波动 | 使用专用PWM引脚 | ★★☆ |
| 精度不足 | 外部MCU辅助 | ★★★ |
| 多路需求 | PCA9685扩展 | ★★☆ |
**几个核心要点再强调一下:**
1. **深度休眠是主要矛盾**:关闭它,PWM稳定性可解决大部分。
2. **专用PWM优先选择**:IO2/IO3的专用PWM功能比GPIO复用可靠得多。
3. **低占空比敏感**:条件允许时,建议占空比不低于5%。
4. **必要时引入外援**:对PWM精度有硬性要求时,外部MCU或专用PWM芯片是降维打击的方案。
归根结底,要记住SU-23T的定位——它是一颗为超低功耗语音识别而生的芯片,PWM功能只是其附加福利。若项目对PWM有较高要求,最优雅的做法是将其交给外部硬件处理,让SU-23T专注于它最擅长的语音识别任务。
**参考资料**:SmartPi 官方文档 - SU-23T 硬件设计 FAQ;SmartPi 官方文档 - SU-23T 模组规格;技术交流群真实案例(SU-23T PWM占空比跳动问题)
**相关标签**:SU-23T、PWM、占空比、深度休眠、蜂鸟L、US513U61、舵机控制、GPIO复用、低功耗、PWM稳定性