1、高低速外设时钟是什么意思? TMS320F2812的高速外设时钟寄存器HISPCP和低速外设时钟寄存器LOSPCP分别控制高低速外设时钟 通过寄存器中的位2~0可以配置高低速外设时钟相对于SYSCLKOUT的倍频系数 高(低)速外设时钟 = SYSCLKOUT/(n x 2),其中,n = 1~7 我的疑问是,那些是高速外设,那些是低速外设,他们的时钟公式是一样的,所以低速外设的时钟完全可以配置为高于高速外设时钟,那么这应该是一个相对的概念 在2812的内部结构图里,高速外设的框框里有EVA/B,ADC,在低速外设里有SCI,SPI,McBSp,但是在例程中用EVA的时候没有设置过这个时钟,用AD的时候设置过,2812的外设不止这些,那么其他的是属于高速还是低速,什么时候需要设置这个时钟?
2、如何设置PIE配置寄存器PIECTRL? 在例程中使能PIE中断的时候有这么一条语句: PieCtrlRegs.PIECRTL.bit.ENPIE = 1; // Enable the PIE block 该位置1所有向量取自PIE向量表,该位置0,PIE无效,向量取自引导ROM的CPU向量表或XINTF7区外部接口。 例程中好多次用到PIE中断的时候也没有碰到这条语句,在McBSP的例程中这么设置了,不知道什么意思,有和没有什么区别,什么时候需要用?
3、锁相环倍频 2812可以通过PLL控制寄存器来选择锁相环的工作模式和倍频系数,一共可以设置10种倍频系数,CLKIN = (OSCCLK X n)/2,其中,n = 1~10,如果晶振为30MHz,那么CLKIN = 15,30,45,60,75,90,105,120,135,150MHz,大家再看例程中给出的设置倍频系数的程序,以下宏定义只能选择一种,分别对应倍频系数为:10~1 #define CPU_RATE 6.667L // for a 150MHz CPU clock speed (SYSCLKOUT) #define CPU_RATE 7.143L // for a 140MHz CPU clock speed (SYSCLKOUT) #define CPU_RATE 8.333L // for a 120MHz CPU clock speed (SYSCLKOUT) #define CPU_RATE 10.000L // for a 100MHz CPU clock speed (SYSCLKOUT) #define CPU_RATE 13.330L // for a 75MHz CPU clock speed (SYSCLKOUT) #define CPU_RATE 20.000L // for a 50MHz CPU clock speed (SYSCLKOUT) #define CPU_RATE 33.333L // for a 30MHz CPU clock speed (SYSCLKOUT) #define CPU_RATE 41.667L // for a 24MHz CPU clock speed (SYSCLKOUT) #define CPU_RATE 50.000L // for a 20MHz CPU clock speed (SYSCLKOUT) #define CPU_RATE 100.000L // for a 10MHz CPU clock speed (SYSCLKOUT) 怎么和上面公式计算的不一样,我的实际晶振为30M,有一个例程的系统时钟不能过高,我设置倍频系数改为5,宏定义#define CPU_RATE 20.000L,即选晶振为50M,程序运行正常,频率太高就不能正常运行,说明是有50M这个频率的,但是上面的公式计算中没有啊,难道计算有误?不知道还有其他地方需要设置吗?
请高手指教,非常感谢! |