haly123 发表于 2025-5-6 17:17:57

8H高级PWM是不是有限制不能输出任意周期的波形? 可以的,可以设置周期1~65535任意值

调用官方的程序,按官方说明可以设置任意周期,是官方文件错误了吗?设置13.5ms的周期,结果输出只有2.5ms左右




国芯人工智能 发表于 2025-5-6 17:18:00

关于STC8H系列微控制器高级PWM模块的周期设置问题,经技术分析可得出以下结论:

一、PWM周期计算原理
STC8H的PWM周期由公式T = (PWMAARR + 1) × (PWMAPS + 1) / Fclk 确定,其中:
PWMAARR:自动重装载寄存器值(16位)
PWMAPS:预分频系数(8位)
Fclk:系统时钟频率

二、135ms周期实现条件
以典型24MHz时钟为例:
1. 理论计算:
   所需时钟周期数 = 0.135s × 24e6 = 3,240,000
   需满足:(ARR+1) × (PS+1) ≥ 3,240,000

2. 参数组合方案:
方案A:PS=255 → ARR=3,240,000/256 -1 ≈ 12655 (0x316F)
方案B:PS=127 → ARR需≥25,433(超出16位范围)

三、常见问题排查
1. 寄存器配置顺序:
必须遵循:关闭PWM输出→配置PS/ARR→重载使能→开启输出
错误示例:直接修改运行中的寄存器未触发重载

2. 硬件限制验证:
最大理论周期@24MHz = (65535×256)/24e6 ≈ 698ms
135ms在硬件支持范围内

3. 实测异常分析:
   当输出25ms(实测值)时:
实际周期数 = 0.025×24e6 = 600,000
可能误配置:PS=23, ARR=600,000/24 -1=24,999(溢出)

四、配置建议
c
// 推荐配置流程
PWMAPS = 255;      // 预分频系数256
PWMAARR = 12655;   // 自动重装载值
PWMAENO = 0x00;      // 关闭输出
PWMASWRC = 0x01;   // 触发重载
PWMAENO = 0x01;      // 使能输出

五、问题诊断步骤
1. 确认时钟源:
使用示波器测量主时钟频率
检查CLKSEL寄存器配置

2. 寄存器读取验证:
通过调试器读取PWMAPS/PWMAARR实际值
检查是否发生数值溢出

3. 信号测量方法:
建议使用≥100MHz采样率示波器
测量10个完整周期取平均值

六、特殊模式注意事项
1. 中央对齐模式:
实际周期为计算值的2倍
需确认CR1位配置

2. 死区时间影响:
当启用互补输出时,死区寄存器可能影响占空比
但不影响周期参数

本案例中,实测周期与目标值偏差5.4倍的现象,较可能是预分频系数未正确设置导致。建议使用在线调试功能验证寄存器实际写入值,并注意在修改关键参数前禁用PWM输出。官方文档所述"任意周期"在硬件参数约束范围内成立,但需要精确的寄存器配合设置。

[本文内容由国芯人工智能辅助生成,仅供参考]

AI-32位8051 发表于 2025-5-6 17:23:52

STC8H/STC32G的PWM输出任意周期和任意占空比的波形

https://www.stcaimcu.com/data/attachment/forum/202212/11/133634nbhxm6s44ugbmmva.png
https://www.stcaimcu.com/data/attachment/forum/202212/11/133634n5e8558v88egkdv6.png



haly123 发表于 2025-5-6 17:26:41

这些例程的周期默认不能超过65536的值,超过需要分频,官方文件里面没说明

AI-32位8051 发表于 2025-5-6 17:26:58


haly123 发表于 2025-5-6 17:30:20

就是按这个官方文件测试的,PWMA_ARR不能超过65536,超过就不行了,任意调节周期,应该是有条件的

DebugLab 发表于 2025-5-6 23:05:24

已在另一个帖回复
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=17550&pid=163141

vb2002 发表于 2025-5-7 01:02:16

不会的, 你看软件里面的范例都有说明,可以任意

qq603599910 发表于 2025-5-7 08:25:00

曾经用8H2K08U做过实验在定时器范围内是可准确设置的.

梁工 发表于 2025-5-7 09:59:53

8H是16位PWM,周期值为1~65535的任意数,对应周期2~65536个PWM时钟,没有任何一个周期不行的。
页: [1] 2
查看完整版本: 8H高级PWM是不是有限制不能输出任意周期的波形? 可以的,可以设置周期1~65535任意值