关于6678芯片时钟初始化可以利用gel文件来加载,也可以利用多核加载函数multicoreboot来进行初始化。
主频的配置与PLLM和PLLD有关。通过查阅手册,PLL控制器是用户软件可编程的。其中主要的概念有:分频(PLLD)、倍频(PLLM)和无效(DISABLE)。
- 分频:就是将PLLOUT的频率分别除以(1到256可编程)得到频率
- 倍频:与分频相反,是乘以可编程系数。
- 无效:就是停止时钟输出。
在C6678手册2.5.3 PLL Boot Configuration Settings一节中,Table2-13给出了部分参考PLLM、PLLD取值,如下图所示。
- GEL文件中配置主频的位置:
- DSP利用multicoreboot自己配置主频的位置:
MulticoreBoot-> platform_init->CorePllcHwSetup
该函数中要用到的preDiv和pllM是在platform_init中配置的。
PllD=0,pllM=19时,对应1GHz主频;PllD=0,pllM=15时,对应800MHz主频;由此可以类推出PllD=0,pllM=9时,对应500MHz主频;
从而,如果想将DSP的主频降到500MHz,则应该将PllD设为0,pllM设为9。
问题二:
通过示波器对DSP输出时钟进行测量,可以发现经配置后的时钟每次上电的波形有时不同。通过看程序,里面的PLL被进行了一个十次循环配置。
尝试将loop_count循环改为loop_count<1,即做一次循环,发现每次开电后PLL配置稳定。