请问一下TI工程师,C6701的Timer1定时精度有多高,有多大误差。目前想使用Timer定时触发FPGA,定时时间为12秒,因为Timer1的运行时钟为DSP主频的四分之一,所以给Timer1 CTL寄存器,PRD寄存器,CNT寄存器分别配置了512,30000000*12, 0;但是简单的测试了一下发现有一定的误差,大概在1s左右。
Tony Tang:
提供的信息不全吧,CPU频率多少?输入时钟频率多少?
Shine:
有没有测量过CLKOUT1管脚上的时钟输出是否精确?
Gangping Li:
回复 Tony Tang:
Hello,Tony,目前DSP主频为120MHz,根据C6000 Timer技术手册,Timer如果选择内部时钟时,Timer默认输入时钟为DSP主频的1/4。后来经过排查是因为我们程序中存在着一个运行不稳定的代码,对该代码运行情况使用了FPGA运行时间测试,测试后发现是这段代码有问题。、另外,我还有一点疑问,如果DSP主频为120MHz,其中Timer运行在Dsp主频的1/4上,那么Timer频率为30Mhz,Timer计数使用了32位PRD寄存器存储计数总数,那么Timer最大的计数值位0xFFFF FFFF,换算十进制则为4294967296,而Timer计数一个,当前值增加1,需要的时间为1/30000000s,照这样可以推测出DSP timer最大的定时时间为4294967296/30000000 = 143.333s;而我这边的需求是DSP Timer定时的最大值可以到达1000s定时甚至更长,像这种情况,如何使得Timer定时更长呢?谢谢Tony
Gangping Li:
回复 Shine:
Hello,Shine,经过排查DSP时钟很精确,是我这边有部分代码有问题。
另外,请教一下Shine,如果DSP主频为120MHz,其中Timer运行在Dsp主频的1/4上,那么Timer频率为30Mhz,Timer计数使用了32位PRD寄存器存储计数总数,那么Timer最大的计数值位0xFFFF FFFF,换算十进制则为4294967296,而Timer计数一个,当前值增加1,需要的时间为1/30000000s,照这样可以推测出DSP timer最大的定时时间为4294967296/30000000 = 143.333s;而我这边的需求是DSP Timer定时的最大值可以到达1000s定时甚至更长,像这种情况,如何使得Timer定时更长呢?谢谢Shine
da qin zheng sheng:
回复 Gangping Li:
按照125秒,需要8次定时中断可以实现,这个和普通mcu原理一样!
Gangping Li:
回复 da qin zheng sheng:
你好,不太明白你的意思
da qin zheng sheng:
回复 Gangping Li:
我只会对c6000 dsp io口闪灯编程,不会dsp算法。
da qin zheng sheng:
回复 Gangping Li:
在定时,i2c编程方面和51,arm cortexm3原理是一样的。
da qin zheng sheng:
回复 Gangping Li:
在定时,i2c编程方面和51,arm cortexm3原理是一样的。