详细的分析请参考我的博客:
http://emailli.21ic.org /*******************************************************************/
测量要求:被测频率范围为0.1Hz—100KHz。要求测量精度在1‰之内。成本越低越好,电路越简单越好。 解决方案:主芯片采用ARM7内核的LPC2103。
定时器0为32位定时器,定时频率可以达到11.0592Mhz(此时使用的晶振为11.0592Mhz,程序运行频率为4倍频,即44Mhz)。
20s内测量被测脉冲,如果测量到10次(M1)脉冲,则退出测量,用M1来计算频率,如果20s时间到,还没有测量到10次(M1’),那么就用此时测得的次数M1’来计算频率。
为什么是20s内测量,因为测量0.1hz的被测频率,至少需要20s才能够准确的捕捉到一个周期的方波。
无论测量高频还是低频,都使用11.0592Mhz来作为高频计数频率。由前面的分析可以知道,当被测频率为100Khz的时候,需要的高频计数频率大于10.01Mhz即可。由此可知,用11.0592Mhz来作为高频计数频率来计数,在0—100Khz范围内,测量误差都可以小于1<‰。
还有一个问题就是大家关心的溢出问题。
0.1hz频率的时候,在20s内显然只能数到一次,也就是10s的高频计数时间,那么,需要计数次数为11059200 10=110592000。而LPC2103为32位定时器,32位整型变量的范围是0—4294967295,显然,32位定时器够用,不存在溢出。
|