找回密码
 立即注册
查看: 353|回复: 11

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-06 15:03:04
已绑定手机

2

主题

4

回帖

18

积分

新手上路

积分
18
发表于 2025-5-6 17:17:57 | 显示全部楼层 |阅读模式
调用官方的程序,按官方说明可以设置任意周期,是官方文件错误了吗?设置13.5ms的周期,结果输出只有2.5ms左右

0.01.jpg
0.02.png

回复

使用道具 举报 送花

3

主题

698

回帖

107

积分

等待验证会员

积分
107
发表于 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(溢出)

四、配置建议
  1. c
  2. // 推荐配置流程
  3. PWMAPS = 255;        // 预分频系数256
  4. PWMAARR = 12655;     // 自动重装载值
  5. PWMAENO = 0x00;      // 关闭输出
  6. PWMASWRC = 0x01;     // 触发重载
  7. PWMAENO = 0x01;      // 使能输出
复制代码

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

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

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

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

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

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

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:58
  • 最近打卡:2025-06-16 09:27:19

30

主题

1201

回帖

2624

积分

超级版主

积分
2624
发表于 2025-5-6 17:23:52 | 显示全部楼层
STC8H/STC32G的PWM输出任意周期和任意占空比的波形






STC官网:https://www.stcai.com/
QQ:2593903262
微信号:18106296598
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-06 15:03:04
已绑定手机

2

主题

4

回帖

18

积分

新手上路

积分
18
发表于 2025-5-6 17:26:41 | 显示全部楼层
这些例程的周期默认不能超过65536的值,超过需要分频,官方文件里面没说明

点评

周期设置寄存器就是16位的,周期设置不能超过65535。 PWM时钟分频寄存器也是16位的,分频值0~65535对应1~65536分频。  详情 回复 发表于 2025-5-7 10:02
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:58
  • 最近打卡:2025-06-16 09:27:19

30

主题

1201

回帖

2624

积分

超级版主

积分
2624
发表于 2025-5-6 17:26:58 | 显示全部楼层
截图202505061726486962.jpg
STC官网:https://www.stcai.com/
QQ:2593903262
微信号:18106296598
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-06 15:03:04
已绑定手机

2

主题

4

回帖

18

积分

新手上路

积分
18
发表于 2025-5-6 17:30:20 | 显示全部楼层
就是按这个官方文件测试的,PWMA_ARR不能超过65536,超过就不行了,任意调节周期,应该是有条件的

点评

PWMA_ARR是一个16位的寄存器,最大值为65535,怎么可能装入大于等于65536的值呢? 再次强调:PWMA_ARR是一个16位的寄存器,最大值为65535! 需要更低的PWM频率,更长的PWM周期,请用PWM时钟预分频寄存器PWMA_PSCR先  详情 回复 发表于 2025-5-7 10:08
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-06-17 09:09:48
已绑定手机

79

主题

5137

回帖

9134

积分

超级版主

DebugLab

积分
9134
发表于 2025-5-6 23:05:24 | 显示全部楼层
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:397
  • 最近打卡:2025-06-18 00:32:18
已绑定手机

142

主题

1688

回帖

2567

积分

金牌会员

积分
2567
发表于 2025-5-7 01:02:16 | 显示全部楼层
不会的, 你看软件里面的范例都有说明,可以任意
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:37
  • 最近打卡:2025-06-16 08:45:30

6

主题

61

回帖

582

积分

高级会员

积分
582
发表于 2025-5-7 08:25:00 | 显示全部楼层
曾经用8H2K08U做过实验在定时器范围内是可准确设置的.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-06-17 10:15:05

74

主题

6094

回帖

1万

积分

超级版主

积分
12735
发表于 2025-5-7 09:59:53 | 显示全部楼层
8H是16位PWM,周期值为1~65535的任意数,对应周期2~65536个PWM时钟,没有任何一个周期不行的。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-18 08:00 , Processed in 0.212806 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表