【原创】TI C2833x介绍---系统的初始化(14)-一个实际例子
0赞这是一个真实的例子。某天调试一个别人搭好的实验装置的时候,总感觉程序中对电网角度的过零点检测有问题,但是反复检查程序又看不出有什么潜在的缺陷。百般无奈之下,怀疑是不是时钟信号出了问题,因为程序的主中断是由CPUTimer0触发的,如果CPU的时钟信号有问题的话,那计数不正常也许与它有一定的关系。抱着试试看的想法,拆开了实验装置,结果发现给DSP提供外部时钟信号的有源晶振的标称频率是25MHz的。一般而言,我们能够容易买到的晶振有12M、30M、50M之类的,而28335的典型电路一般又使用30M的晶振,经过PLL倍频处理之后变成150MHz的Sysclockout时钟信号。
那外接25M时钟信号的时候,DSP的处理器频率是多少?按比例计算,变成25*5=125MHz?这好像有点说不通。那到底是多少呢?难道DSP的这个PLL有自适应功能?
接下来首先查了28335的器件手册,结果只在“建议的运行条件”里面看到fSYSCLKOUT的范围在2-150MHz之间。这看起来与希望得到的答案无关。看来平时感觉良好,感觉用起来已经很熟练了,结果出个细微的问题就无法解答了;假如是一个自认为DSP用的很熟练的求职者整好遇到这个提问,应该一时半会也无法回答吧。
再仔细想想,这不就是DSP初始化配置PLL的时候的步骤么!只是平时一般我们都运行在150MHz的情况下,很少去改变它罢了。最后还是在《TMS320x2833x, 2823x System Control and Interrupts》找到了答案:
靠PLL的配置,我们一样可以在外部输入时钟信号为25M的情况下将系统的时钟信号配置为150MHz。在本文开始的例子中,我们仍然用原来的默认配置,系统的时钟当然不是想象中的150MHz了,自然程序中的中断计数也出现了问题。