准备采用CC1310对一个10MHz的方波信号进行测频,要求精度达到1Hz。进行了下列两个方案的测试:
1. 采用sensor controller studio中的timer-digital-converter ,但由于SCS中的timer只支持16bit,因此计数不足以满足10MHz信号的频率测试精度要求。
2. 同步测频的原理:采用TI-RTOS中的GPTimer driver,用了两个timer,其中timer0配置成24bit的input count 模式,match register 设置为10*10^6,对10MHz信号数1秒;timer1配置成32bit period count-up模式;然后用cc1300 driverlib中的TimerSynchronize函数对上述两个timer进行同步启动;最后在timer0的中断函数中取出timer1的计数值,从而得到10MHz信号的频率值。 但实际测试结果发现每次测频的结果均偏差较大:
怀疑是两个原因导致:
1. driverlib中的TimerSynchronize是否可以与TI-RTOS的GPTimer driver一起使用?
GPTimerCC26XX_start(GPTimer1Handle);
TimerSynchronize(GPT0_BASE, TIMER_1A_SYNC);
GPTimerCC26XX_start(inputEdgeGPTimerHandle);
2. 由于基于TI-RTOS,进入timer HWI的延时不确定,导致在进入input count match capture的时间每次都不一致,在中断中去取timer1的计数值每次均有较大偏差。
请问是否有办法实现这一测频需求?
Loops:
你好。同步启动后,你Timer0 和Timer1的值如何得出频率? 因为你的TIMER0想做1s类似的标准时间?
da qin zheng sheng:
确定待测信号频率是10MHz?mcu最高频率是48MHz,应该达不到你的功能要求的!
da qin zheng sheng:
建议先用硬件把信号8分频处理后再测量。
user3482888:
回复 Loops:
Timer0 来自外部PIN输入的待侧频信号,Timer1来自内部的48MHz系统时钟。我想通过尽量长时间的对外部输入信号的input count实现尽量高的数频精度。
user3482888:
回复 da qin zheng sheng:
For rising-edge detection, the input signal must be High for at least two system clock periods following the rising edge. Similarly, for falling-edge detection, the input signal must be low for at least two system clock periods following the falling edge. Based on this criteria, the
maximum input frequency for edge detection is ¼ of the system frequency.–CC1310 reference manual 从这段话来看数频的话是没有问题的,但我想关键在于cc1310的Timer没有考虑这样的应用,我看了下C2000系列中具备enhanced CAP模块可以满足这样的测频需求。