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

有关定时器2与PWMB定时器同频问题

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

246

主题

348

回帖

1858

积分

金牌会员

积分
1858
发表于 2025-10-8 09:08:20 | 显示全部楼层 |阅读模式
定时器2与PWMB定时器经过分频后这两个定时器频率的一样


截图202510080901598297.jpg
分频寄存器计算公式如上图,最终测出来的时间并不一致

b0dab93a-c022-4539-ade9-102c4adaab6b.png
514267b9-d1a1-4a10-98b0-d33813b24ff9.png
这是定时器2,打印T2的时间是256

截图202510080906522718.jpg
335c28ba-2794-4688-945f-65fc85a88b8c.png
这是PWMB定时器,打印CNTR时间是1537,差了好多倍

回复

使用道具 举报 送花

3

主题

1880

回帖

608

积分

等待验证会员

积分
608
发表于 2025-10-8 09:12:00 | 显示全部楼层
您好,关于您提出的“定时器2与PWMB定时器同频问题”,即在经过分频后,两者的定时器频率理论上应一致,但实际测量结果显示两者计数值存在明显差异(定时器2计数值为256,PWMB计数值为1537),这一现象值得从系统时钟源、分频机制、寄存器配置、计数模式以及硬件行为等多个方面进行深入分析。

一、系统时钟源与分频机制分析

首先,我们需要确认定时器2和PWMB定时器是否共享同一个时钟源。在多数嵌入式系统中,定时器模块通常从系统时钟(如主频CLK)或外设时钟(PCLK)中分频获取输入时钟。若两者使用的时钟源不同,即便配置相同的分频系数,其实际计数频率也会不同。

建议检查以下几点:

1. 时钟源是否一致:
定时器2和PWMB是否都使用PCLK作为输入时钟?
是否存在时钟门控配置差异?

2. 分频寄存器是否配置正确:
请核对两个定时器的分频寄存器(如T2MOD、PWMBxMOD等)设置是否一致。
确保分频系数(Prescaler)的设置与公式一致。

3. 分频方式是否一致:
是否均为16位或8位分频?
是否存在自动重载与自由运行模式的差异?

二、计数器行为与工作模式分析

从您提供的截图来看,定时器2的计数值为256,而PWMB的CNTR值为1537。这表明:
定时器2可能工作在8位自动重载模式(如标准8051定时器模式),其最大计数值为256(0x00~0xFF);
PWMB定时器可能工作在16位自由运行模式,其最大计数值可达65536。

工作模式差异可能导致计数值差异巨大。

建议检查:

1. 定时器工作模式寄存器(如TMOD、PWMBxCON等)是否一致?
2. 是否启用了自动重载功能?
3. 是否设置了不同的计数方向(递增/递减)?

三、中断与计数清零机制分析

定时器在中断触发后通常会清零或重载初值,而PWMB定时器在周期匹配后也会自动重载。如果中断处理函数中未正确读取或清零计数值,可能导致读取值出现偏差。

建议检查:
是否在中断服务程序中正确读取了定时器2的TH2/TL2寄存器?
是否在PWMB中断中正确读取CNTR寄存器?
是否存在中断延迟或中断未响应导致计数溢出?

四、实测时间与理论值对比分析

根据您提供的公式:
  1. 定时器频率 = 系统时钟频率 / (12  分频系数)
复制代码

假设系统时钟为12MHz,则:
若分频系数为12,则定时器频率为:12MHz / (12  12) = 83.33kHz
对应的计数周期为:1 / 83.33kHz ≈ 12μs

若定时器2计数值为256,则总时间为:
  1. 256  12μs = 3072μs = 3.072ms
复制代码

而PWMB计数值为1537,则:
  1. 1537  12μs = 18444μs = 18.444ms
复制代码

这表明两者在相同时间窗口内计数结果差异明显,说明其输入频率或计数方式不同。

五、可能的故障点与排查建议

| 项目 | 检查点 | 建议操作 |
|------|--------|----------|
| 时钟源 | 定时器2与PWMB是否使用相同时钟源 | 查看系统时钟树配置 |
| 分频系数 | 分频寄存器配置是否一致 | 对比T2MOD与PWMBxMOD寄存器 |
| 工作模式 | 是否为相同计数模式(如8位/16位) | 查看TMOD、PWMBxCON等寄存器 |
| 中断处理 | 是否及时读取并清零计数器 | 检查中断服务程序逻辑 |
| 实际频率 | 使用示波器测量定时器中断输出频率 | 验证理论与实际是否一致 |

六、总结与建议

综上所述,定时器2与PWMB定时器在分频后出现明显计数值差异,主要可能原因包括:

1. 时钟源不一致;
2. 分频系数配置不同;
3. 工作模式设置不同(如8位 vs 16位);
4. 中断处理逻辑不一致或存在延迟;
5. 读取计数器的方式存在差异。

建议您从以下几个方面着手排查:
使用示波器测量两个定时器的中断输出频率,确认是否真正同步;
打印并比对两者的分频寄存器、模式寄存器配置;
在中断中统一读取计数值并记录,避免因延迟造成误差;
确保两者使用相同的时钟源与分频策略。

如能提供更详细的代码片段或寄存器配置截图,将进一步有助于问题定位。

如有需要,我可协助您进一步分析代码或配置逻辑。

祝调试顺利!

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:591
  • 最近打卡:2025-10-15 09:49:21
已绑定手机
已实名认证

116

主题

2889

回帖

7364

积分

版主

积分
7364
发表于 2025-10-8 17:31:10 | 显示全部楼层
PWMB_CNT受到PWMB_ARR值得限制
使用实际程序测试,并无测量时钟差异较大现象,以下是实际测试程序:
程序使用24Mhz使用,串口1(P30,P31,115200bps)
截图202510081729559723.jpg
测试接受到得时钟数字一致:
程序如下图所示
截图202510081730142955.jpg
完成程序可从此下载,程序使用AI-CUBE生成:
clk_test.zip (625.49 KB, 下载次数: 5)

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-16 03:41 , Processed in 0.129456 second(s), 56 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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