在本实验中,我们以 Ai8051U 为平台,使用 PWM 外部输入源模式 2 实现高精度脉冲计数与频率测量。通过配置 P32 引脚作为 PWMETR 输入引脚,并在下降沿触发条件下进行计数与计时,实现对输入信号频率的精确测量。
一、系统配置与原理说明
1.1 硬件平台与晶振配置
实验使用 12MHz 无源晶振(常温频差 ±10ppm),为系统提供高精度时钟源。在 3.3V 供电条件下,主时钟频率为 36MHz,PWM 时钟源频率为 144MHz,确保了较高的计数分辨率与测量精度。
1.2 PWM 外部输入源模式 2
在该模式下,PWM 模块使用外部时钟源进行计数,具体为:
外部时钟源输入引脚:P32(即 PWMETR)
触发边沿:下降沿
计数模式:递增计数
功能作用:外部脉冲计数与频率测量
此模式特别适用于对输入信号的频率进行高精度测量,尤其在需要与主时钟异步计数的场合。
二、频率测量原理与实现
2.1 频率测量方法
频率测量采用“定时计数法”,即在固定时间内对输入脉冲进行计数,从而计算出频率值:
$$
f = \frac{N}{T}
$$
其中:
$ N $:单位时间内计数的脉冲数
$ T $:测量时间(秒)
在 Ai8051U 中,使用 PWMETR 输入作为脉冲源,并设置一个定时器用于控制测量时间(如 1 秒),在定时器溢出时读取 PWM 计数器的值。
2.2 最大测量频率
理论上,PWM 外部输入源的最大频率为:
$$
f{max} = \frac{f{PWMCLK}}{4} = \frac{144\text{MHz}}{4} = 36\text{MHz}
$$
但在实际测试中,由于 引脚翻转速度限制 和 信号完整性问题,最大稳定测量频率约为 17MHz。
三、实验测试结果与分析
以下为不同频率点下的测量结果(单位:Hz):
| 输入频率 | 测量结果 | 误差(Hz) | 误差率(ppm) |
|----------|----------|------------|----------------|
| 10 | 10 | 0 | 0 |
| 4567 | 4567 | 0 | 0 |
| 10456 | 10456 | 0 | 0 |
| 1,123,000 | 1,123,000 | 0 | 0 |
| 5,678,000 | 5,678,000 | 0 | 0 |
| 10,000,000 | 10,000,000 | 0 | 0 |
| 15,000,000 | 15,000,000 | 0 | 0 |
| 17,000,000 | 17,000,000 | 0 | 0 |
从实验结果可见,在 10Hz 至 17MHz 的测量范围内,测量误差为 0 Hz,表明该方法具有 极高的测量精度与稳定性。
四、与 STM32H7 测量精度对比
参考网友使用 STM32H7 平台进行的频率测量实验,其在相同频率点下存在 ±1~2Hz 的误差,尤其在高频段误差率略有上升。相比之下,Ai8051U 在本实验中表现出了 更高的测量稳定性与精度,这得益于其专用 PWM 外部输入源模式的硬件设计与高精度外部晶振的支持。
五、代码实现与配置(基于 AiCube 生成)
使用 AiCube 工具生成的代码如下(节选关键配置):
- c
- // 配置 PWMETR 引脚为外部时钟输入
- PWMx->CR |= PWMCRETE; // 使能外部时钟模式
- PWMx->ETR = (PWMETRETS0 | PWMETRETS1); // 选择外部时钟源模式2
- PWMx->ETR |= PWMETRETP; // 下降沿触发
- PWMx->CR |= PWMCRCEN; // 启动计数器
- // 设置定时器用于测量时间基准(如1秒)
- TIMERx->ARR = 36000000 - 1; // 假设主频为36MHz,1秒计数
- TIMERx->DIER |= TIMERDIERUIE; // 使能更新中断
- TIMERx->CR1 |= TIMERCR1CEN; // 启动定时器
- // 中断服务函数中读取PWM计数器
- void TIMERxIRQHandler(void) {
- if (TIMERx->SR & TIMERSRUIF) {
- TIMERx->SR &= ~TIMERSRUIF;
- uint32t count = PWMx->CNT;
- uint32t frequency = count;
- PWMx->CNT = 0; // 清零计数器
- // 输出frequency至串口或LCD显示
- }
- }
复制代码
六、总结
本实验基于 Ai8051U 平台,利用 PWM 外部输入源模式 2 实现了对外部脉冲信号的高精度频率测量。实验结果表明:
在 10Hz 至 17MHz 范围内,测量误差为 0Hz
使用 12MHz 高精度晶振,确保了测量的稳定性
与 STM32H7 平台相比,具有 更高的测量精度
适用于需要 高精度、宽频带频率测量 的工业与科研场景
未来可进一步优化信号调理电路,提升引脚响应速度,以突破当前 17MHz 的上限限制,实现更高频率的稳定测量。
[本文内容由国芯人工智能辅助生成,仅供参考] |