SU-23T PWM 占空比不稳定性问题排查指南

SU-23T PWM 占空比不稳定性问题排查指南

版本信息: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 输出稳定性会受到深度休眠模式的影响。本文将系统分析这一问题的成因,并提供完整的排查与解决方案。


一、问题现象分析

1.1 典型症状

症状类型具体表现测试条件
占空比跳动设置5%,实测在3%-5%之间波动GPIO3复用PWM,50Hz输出
频率不稳定设置50Hz,实测在48Hz-50Hz之间波动示波器/频率计测量
波形不一致脉冲宽度随时间变化,高/低电平时间比例不固定逻辑分析仪捕获

1.2 问题特征

  • 低占空比时更明显:5%-10%的小占空比设置更容易出现跳动
  • 50Hz频率典型:舵机控制的50Hz标准频率下问题突出
  • GPIO复用PWM:使用GPIO复用功能实现PWM,而非专用PWM引脚

二、根本原因分析

2.1 超低功耗模组的特殊性

SU-23T 采用蜂鸟L系列芯片(US513U61),其核心特点如下:

特性说明影响
超低功耗工艺采用超低功耗制程工艺驱动能力相对较弱
多级功耗管理静默→浅休眠→深度休眠状态切换影响外设
亚毫瓦级待机深度休眠时约800μA为降低功耗频繁切换状态
MCU+NPU架构语音识别专用NPUCPU资源优先分配给语音

2.2 深度休眠机制对PWM的影响

SU-23T 在静默一段时间后会自动进入深度休眠模式以降低功耗:

正常工作状态 → 浅休眠(约1mA) → 深度休眠(约800μA) ↓ ↓ ↓ PWM稳定 PWM可能不稳定 PWM输出受影响

深度休眠对PWM的影响方式:

  1. 时钟源切换:进入深度休眠时,系统时钟可能切换到低频源
  2. DMA暂停:PWM DMA传输可能被暂停或降低优先级
  3. GPIO状态保持:复用功能可能被禁用或进入保持模式

2.3 GPIO复用PWM的限制

与专用PWM引脚相比,GPIO复用PWM存在以下限制:

对比项专用PWM引脚GPIO复用PWM
时钟源独立PWM时钟系统时钟分频
DMA支持完整支持可能受限
休眠影响较小较大
精度中等
资源占用独占与其他功能共享

三、解决方案

方案一:关闭深度休眠功能(推荐首选)

适用场景:对功耗要求不极端,需要稳定PWM输出的应用

操作步骤:

  1. 登录智能公元平台(https://smartpi.cn)
  2. 进入对应产品的版本配置
  3. 找到「优化配置」页面
  4. 定位到「深度休眠」选项
  5. 将状态设置为「不支持
  6. 重新生成固件并烧录

效果验证:

  • 配置前:占空比在3%-5%之间跳动
  • 配置后:占空比稳定在设置值(如5%)

功耗影响:

  • 关闭深度休眠后,待机电流从约800μA上升到约1mA
  • 增幅约200μA,对于大多数应用可接受

方案二:使用专用PWM引脚

适用场景:必须保留深度休眠功能,同时需要稳定PWM输出

SU-23T PWM资源:

PWM通道引脚说明
PWM0IO2专用PWM引脚
PWM1IO3专用PWM引脚(与GPIO复用)

配置方法:

  1. 在平台Pin脚配置中选择支持PWM的引脚
  2. 功能选择「PWM输出」(非GPIO复用)
  3. 设置PWM频率和初始占空比
  4. 确保使用「硬件PWM」模式

验证方法:

使用示波器或逻辑分析仪测量: - 频率应稳定在设置值(如50Hz ±0.1Hz) - 占空比应稳定(如5% ±0.5%) - 波形应规整,无毛刺或抖动

方案三:使用外部单片机辅助(用户实际采用)

适用场景:PWM精度要求高,需要多路PWM控制

用户反馈的最终方案:

“现在没办法只能改方案加个单片机进去用通信解决”

系统架构:

┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ SU-23T │ UART/IO │ 外部MCU │ PWM │ 负载 │ │ 语音识别 │──────────→│ PWM生成 │──────────→│ (舵机等) │ └─────────────┘ └─────────────┘ └─────────────┘

优势:

  • PWM由外部MCU生成,精度高且稳定
  • SU-23T专注语音识别,不受PWM影响
  • 可扩展多路PWM输出

实现方式:

  1. 通信协议:UART串口通信
  2. 控制指令:语音识别后通过串口发送PWM控制命令
  3. PWM生成:外部MCU使用硬件定时器生成PWM

示例代码(外部MCU侧):

// STM32 HAL库示例voidset_pwm_duty(uint8_tduty_percent){uint16_tpulse=(TIM1->ARR*duty_percent)/100;__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,pulse);}// 串口接收处理voidUART_RxCallback(uint8_t*data){if(data[0]==0xAA&&data[1]==0x55){uint8_tduty=data[2];// 占空比数值set_pwm_duty(duty);}}

方案四:使用外部PWM芯片

适用场景:需要多路高精度PWM,不希望增加MCU复杂度

推荐芯片:

芯片型号通道数接口特点
PCA968516路I2C硬件PWM,12位精度
TLC594012路串行16位精度,支持LED调光
WS2812N路单线智能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 选型建议

需求场景推荐模组理由
极低功耗+简单PWMSU-23T(关闭深度休眠)平衡功耗与功能
多路稳定PWMSU-32T更多硬件PWM资源
高精度PWMSU-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输出时先唤醒模组
  3. 选择专用PWM引脚而非GPIO复用
  4. 但完全稳定仍建议关闭深度休眠

Q4:SU-23T有几路PWM输出?

A:SU-23T提供2路PWM输出:

  • PWM0:IO2引脚
  • PWM1:IO3引脚(可与GPIO复用)
  • 如需更多路,需使用外部芯片或MCU

Q5:PWM输出能直接驱动舵机吗?

A:不建议直接连接:

  1. SU-23T的GPIO驱动能力有限(<20mA)
  2. 舵机瞬时电流可达数百mA
  3. 建议通过舵机驱动板或三极管/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. 必要时外协处理:高精度需求可使用外部MCU或PWM芯片

记住:SU-23T 的定位是超低功耗语音识别,PWM 功能是辅助特性。如对 PWM 精度有高要求,建议使用外部 MCU 协同处理,让 SU-23T 专注于其擅长的语音识别功能。


参考资料

  • SmartPi 官方文档 - SU-23T 硬件设计 FAQ
  • SmartPi 官方文档 - SU-23T 模组规格
  • 技术交流群真实案例(智能公元12群,2026-02-09:SU-23T PWM占空比跳动问题)

相关标签:SU-23T、PWM、占空比、深度休眠、蜂鸟L、US513U61、舵机控制、GPIO复用、低功耗、PWM稳定性