标题: STC8H3K48S4的两路PWM相位差180度输出问题 [打印本页]

作者: gyn20022002    时间: 2025-7-5 09:41
标题: STC8H3K48S4的两路PWM相位差180度输出问题


[attach]303883[/attach]

由官方代码修改,时钟为24MHZ,频率为85KHZ,不分频
实际在20-40%占空比为目标输出,但是占空比50时另一路在一个周期才会翻转一次
AB图为目标输出
求解惑为什么无法输出50%占空比,或者有无其他方法实现目标输出,求思

1.jpg (80.75 KB, 下载次数: 0)

1.jpg

2.jpg (34.37 KB, 下载次数: 0)

2.jpg

3.jpg (103.11 KB, 下载次数: 0)

3.jpg

4.jpg (78.17 KB, 下载次数: 0)

4.jpg

5.jpg (57.94 KB, 下载次数: 0)

5.jpg

6.jpg (220.15 KB, 下载次数: 0)

占空比50波形

占空比50波形

7.jpg (19.54 KB, 下载次数: 0)

目标输出

目标输出

作者: WL0123    时间: 2025-7-5 15:25
参考官方示例中带死区控制的PWM互补输出,控制死区时间即可达到图A-B的波形变化。
作者: a825563619    时间: 2025-7-5 17:20
是不是输出叠加了,频率不一样
作者: 622323wjl    时间: 2025-7-6 08:13
从问题描述来看,你在24MHz时钟下尝试实现85kHz频率且占空比20%-40%的输出,但发现占空比设为50%时另一路信号在单周期内仅翻转一次,这可能与定时器计数机制及PWM生成逻辑有关。85kHz频率对应的周期约为11.76μs,24MHz时钟下每个计数周期为41.67ns,理论上定时器需计数约282次(24MHz/85kHz≈282.35)完成一个周期。若采用向上计数模式,占空比由比较值与周期值的比例决定,当比较值设为周期值一半(如141或142)时理论上应输出50%占空比,但实际出现异常,可能是定时器工作模式(如是否支持中心对齐PWM)或输出逻辑配置导致。  

另一路信号单周期仅翻转一次,可能是因为该通道采用了不同的输出模式(如仅在计数到顶或底时翻转),或与主通道存在时序耦合。例如,若两路PWM共享定时器资源且配置为互补输出,当占空比设为50%时,可能因死区时间设置或输出极性配置导致信号翻转频率减半。此外,若定时器工作在向上/向下计数模式(中心对齐PWM),比较值设为周期值一半时应生成对称波形,但若配置为向上计数模式(边沿对齐PWM),50%占空比需精确设置比较值为周期值的一半,且需确保输出模式为“匹配时置位/清零”而非“翻转”模式,后者会导致每匹配一次翻转一次,使占空比固定为50%但频率减半。  

要实现目标输出,可尝试以下方案:首先确认定时器工作模式及PWM生成方式,若使用边沿对齐PWM,确保周期值N与比较值C满足C=N×占空比(如20%占空比时C=0.2N),且输出模式配置为“匹配时清零/置位”而非翻转;若需50%占空比且频率不变,可改用中心对齐PWM模式,通过设置比较值为N/2来生成对称波形。此外,可独立配置两路PWM使用不同定时器资源,避免时序干扰,并通过示波器测量定时器计数寄存器与输出引脚的时序关系,定位比较值设置与输出翻转的实际对应关系,从而优化参数配置。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1