【玩转C2000 Launchpad】菜鸟LESSON9-时钟
[复制链接]
时钟是DSP不可缺少的一部分,是运行的必要条件。 时钟输入:对于280x系列的dsp的时钟选择有多种,包括: (1)晶体经过X1、X2输入:需要将CLKIN连接到参考地,否则在用FLASH运行程序时候,将无法运行。; (2)外部时钟经过CLKIN引脚输入:允许时钟电压是3.3V。需要将X1引脚接到参考地。X2悬空。 (3)外部时钟经过X1引脚输入。允许时钟电压是1.8V。需要将CLKIN连接到参考地,X2悬空。 (4)而我用的没有焊接外部晶振,使用了内部晶振,那内部晶振有多大呢,那就要看数据手册了。
由图可知含有2个内部竞争,分别为10MHZ。 下面来看下系统初始化函数 InitSysCtrl(); (1)EALLOW;//EALLOW :仿真读取使能位。复位时,该位允许对仿真和其他寄存器进行读取 //一些配置寄存器是受保护的,无法直接操作。也就是说在对这些寄存器进行修改之前, //需要先去掉保护功能 而保护状态是由状态寄存器中EALLOW标志来指示的。 //汇编指令“EALLOW”就是将该标志位置位,允许对受保护的寄存器操作 。 (2) IntOsc1Sel();//28027内部含2个内部晶振INTOSC1 INTOSC2 void IntOsc1Sel (void) { EALLOW; SysCtrlRegs.CLKCTL.bit.INTOSC1OFF = 0; SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL=0; // Clk Src = INTOSC1 SysCtrlRegs.CLKCTL.bit.XCLKINOFF=1; // Turn off XCLKIN SysCtrlRegs.CLKCTL.bit.XTALOSCOFF=1; // Turn off XTALOSC SysCtrlRegs.CLKCTL.bit.INTOSC2OFF=1; // Turn off INTOSC2 EDIS; } 而所有寄存器的操作 都可以从上图中得到。 例如SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL=0; // Clk Src = INTOSC1 (3) InitPll(DSP28_PLLCR,DSP28_DIVSEL); 也就是InitPLL(12,2); #define DSP28_PLLCR 12 // Uncomment for 60 MHz devices [60 MHz = (10MHz * 12)/2] 其中提到的PLL的DIV以及DIVSEL等的含义都可以从如下表得到: void InitPll(Uint16 val, Uint16 divsel) 函数中 SysCtrlRegs.PLLCR.bit.DIV = val;也就是12 DIVSEL=2, 所以频率为10MHZ*12/2=60Mhz
当然以上只是最基础的学习,进一步的还需要继续学习。
|