找回密码
 立即注册
查看: 48|回复: 2

定时器2与PWMB定时器如何设置成相同的频率

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:466
  • 最近打卡:2025-10-11 08:41:04
已绑定手机

246

主题

348

回帖

1858

积分

金牌会员

积分
1858
发表于 2025-10-8 17:06:02 | 显示全部楼层 |阅读模式
截图202510081655554255.jpg
定时器分频255,想让PWMB定时器的频率与定时器2频率一致,如何计算PWMB_PSCR的分频数
(TM2PS+1)*12T-1使用这个公式计算出的分频数在相同时间内跑出来的T2H,T2L和PWMB_CNTR值相差十倍多

截图202510081702098709.jpg
截图202510081702425867.jpg
我是想让这两个地方的频率一致,这样在相同的时间内T2H,T2L的值和PWMB_CNTR一样
回复

使用道具 举报 送花

3

主题

1880

回帖

608

积分

等待验证会员

积分
608
发表于 2025-10-8 17:08:00 | 显示全部楼层
根据您的描述,您希望将定时器2(Timer 2)与PWMB定时器的频率设置为一致,以便在相同时间内,T2H、T2L和PWMBCNTR的计数值保持一致。当前您使用了公式 (TM2PS + 1) × 12T - 1 来计算分频数,并发现两者计数值相差十余倍,说明两者之间的时钟源或分频机制存在差异。

以下为详细分析与配置建议:

一、定时器2与PWMB定时器时钟源分析

1. 定时器2的时钟源与分频
通常,定时器2的时钟源为系统主频(Fsys)经过分频器(TM2PS)分频后得到:
  1. FTimer2 = Fsys / (TM2PS + 1)
复制代码

其中:
TM2PS 为定时器2的预分频寄存器值;
Fsys 为系统主频(例如 24MHz、48MHz 等)。

2. PWMB定时器的时钟源与分频
PWMB 定时器的时钟源通常也为系统主频,但其分频由寄存器 PWMBPSCR 控制,其公式为:
  1. FPWMB = Fsys / (PWMBPSCR + 1)
复制代码

其中:
PWMBPSCR 为PWMB的预分频寄存器值。

二、目标:使两个定时器频率一致

要使两个定时器频率一致,即:
  1. FTimer2 = FPWMB
复制代码

代入公式得:
  1. Fsys / (TM2PS + 1) = Fsys / (PWMBPSCR + 1)
复制代码

可得:
  1. TM2PS + 1 = PWMBPSCR + 1
  2. => TM2PS = PWMBPSCR
复制代码

也就是说,只要将 PWMBPSCR 设置为与 TM2PS 相同的值,即可实现两个定时器的频率一致。

三、实际差异分析

您提到使用公式 (TM2PS + 1) × 12T - 1 计算出的值,导致T2H/T2L与PWMBCNTR相差十余倍,这说明:

1. 可能使用了错误的时钟源:某些MCU中,定时器2可能使用的是外部时钟或不同的时钟源(如晶振/12),而PWMB使用的是系统时钟;
2. 分频机制不同:部分芯片中,定时器2的分频是基于系统时钟除以 (TM2PS + 1),而PWMB可能使用的是 (PWMBPSCR + 1) 的倍数或其他机制;
3. 定时器工作模式不同:例如定时器2为16位自动重载,而PWMB为8位或自由运行模式,导致计数周期不同。

四、解决建议

1. 核对时钟源配置
请检查以下寄存器或系统配置:
定时器2的时钟源是否为系统主频(Fsys);
PWMB定时器是否使用相同的时钟源;
是否存在额外的分频器(如系统时钟分频为Fsys/12);

2. 正确设置分频寄存器
若确认两者时钟源一致,则应设置:
  1. PWMBPSCR = TM2PS
复制代码

例如:
TM2PS = 255 → PWMBPSCR = 255

3. 校验计数器值
在相同时间周期内,比较两个定时器的计数值:
若T2H/T2L与PWMBCNTR相差10倍,则说明实际频率相差10倍;
此时应重新检查时钟源或分频配置,确认是否存在额外的分频因子(如Fsys/12)。

4. 考虑系统时钟分频影响
若系统时钟为Fsys,而定时器2使用的是Fsys/12(如标准8051架构),则其频率为:
  1. FTimer2 = Fsys / 12 / (TM2PS + 1)
复制代码

而若PWMB使用的是Fsys,则其频率为:
  1. FPWMB = Fsys / (PWMBPSCR + 1)
复制代码

此时,若要频率一致,需满足:
  1. Fsys / 12 / (TM2PS + 1) = Fsys / (PWMBPSCR + 1)
  2. => (PWMBPSCR + 1) = 12 × (TM2PS + 1)
复制代码

因此,PWMBPSCR应设置为:
  1. PWMBPSCR = 12 × (TM2PS + 1) - 1
复制代码

例如:
TM2PS = 255 → PWMBPSCR = 12 × 256 - 1 = 3071

五、结论

要实现定时器2与PWMB定时器频率一致,请按以下步骤操作:

1. 确认两者时钟源是否一致;
2. 根据时钟源和分频机制,选择正确的公式进行配置;
3. 若定时器2使用Fsys/12,PWMB使用Fsys,则PWMBPSCR应为:
  1. PWMBPSCR = 12 × (TM2PS + 1) - 1
复制代码

4. 验证计数器值是否一致,若仍存在差异,请检查是否配置了其他分频器或时钟源选择错误。

如需进一步帮助,请提供芯片型号、系统主频、定时器2和PWMB的寄存器配置截图或说明,以便更精确分析。

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:466
  • 最近打卡:2025-10-11 08:41:04
已绑定手机

246

主题

348

回帖

1858

积分

金牌会员

积分
1858
发表于 2025-10-8 17:34:39 | 显示全部楼层
国芯人*** 发表于 2025-10-8 17:08
根据您的描述,您希望将定时器2(Timer 2)与PWMB定时器的频率设置为一致,以便在相同时间内,T2H、T2L和PW ...

回答的跟没回答一样
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-16 05:35 , Processed in 0.149679 second(s), 58 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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