王昱顺 发表于 2025-7-4 10:32:25

PWM测量小于60MHz的信号@Ai8051U, PLL-120MHz

PWM测量小于60MHz的信号@Ai8051U, PLL-120MHz
本程序通过AiCube生成,在Ai8051U实验箱 V1.2上通过测试

需要捕获高频率的信号,首先就需要配置PLL到一个较高的频率,
Ai8051U的PWM最高可到144MHz,这里为了取整倍数,
就使用了40MHz/4*12 = 120MHz, 得到120MHz

然后通过配置PWMA为输出模式,PWMB配置为输入模式,进行测量
为了更快速的捕获,尽量避免运算产生,这里的PWMB使用了复位模式


所以实际捕获的数值应该是捕获值+1(从0开始计数的)

这里使用示波器进行测量,同时通过USB-CDC接口观察返回的数据
可以看到,PWMA产生了一个12MHz的信号,同时USB-CDC返回捕获的周期值为10clk
120MHz下,捕获的周期10clk=12MHz的频率,测试捕获正确



以下是经过测试的工程文件


网老四 发表于 2025-7-4 20:37:18

产生测试信号不需要用PWM吧?使用直接分频输出方式可以得到更高的测试频率.
另外,同一时钟频率的信号自然同步,容易测准,实际测试捕捉性能最好使用外部信号源激励.
示波器的带宽和探头电容会影响脉冲边沿,可能实际波形边沿更陡峭.

dangkeyang 发表于 2025-8-27 07:30:28

等芯片到了也测试下

猫虎的 发表于 2025-10-20 08:24:20

我用的外部中断+定时器+时间因子参数,
外部中断引脚识别信号,
外部中断服务程序中启动定时器,
定时器中断中累加时间因子参数,
这样,时间因子*65536 + TR0*256 + TL0 ,就得到周期的计数值,
可以无限低(只要时间因子够用,榨干RAM{:4_165:}),
可以无限高(时钟拉满,尽用时钟性能{:4_186:})

21cnsound 发表于 2026-2-4 21:05:09

做频率计,精度很重要,精度一方面依赖MCU的处理能力或者说具体点就是PWM的捕获速度,更重要的一点是时钟源的精度。

BeHappy 发表于 2026-2-6 13:29:52

有个疑问,查看了PWMA/B_SMCR寄存器,发现只有CC1/2/5/6通道有此功能

王昱顺 发表于 2026-2-6 14:23:57

BeHappy 发表于 2026-2-6 13:29
有个疑问,查看了PWMA/B_SMCR寄存器,发现只有CC1/2/5/6通道有此功能

是的,不是全都有。所以使用上要注意一下这个问题
页: [1]
查看完整版本: PWM测量小于60MHz的信号@Ai8051U, PLL-120MHz