TMS320F2802x_Piccolo系列DSC原理及应用 下载本文

0 COMP1ENCLK 0 1 0 1 不给COMP2计时。 给COMP2计时。 COMP1时钟使能。 不给COMP1计时。 给COMP1计时。

2.1.2 配置低速外设时钟预分频器

低速外设时钟预分频(LOSPCP)寄存器用来配置低速外设时钟。LOSPCP的布局见图 2.5。

图 2.5 低速外设时钟预分频器寄存器(LOSPCP) 表 2.5 低速外设时钟预分频器寄存器(LOSPCP)的域描述

保留 这些位用来配置低速外设时钟(LSPCLK)速率(相对于SYSCLKOUT): 如果LOSPCP(2)≠0,则LSPCLK=SYSCLKOUT/(LOSPCP×2); 如果LOSPCP=0,则LSPCLK=SYSCLKOUT; 低速时钟 = SYSCLKOUT/1 低速时钟 = SYSCLKOUT/2 低速时钟 = SYSCLKOUT/4(复位默认值) 低速时钟 = SYSCLKOUT/6 低速时钟 = SYSCLKOUT/8 低速时钟 = SYSCLKOUT/10 低速时钟 = SYSCLKOUT/12 低速时钟 = SYSCLKOUT/14 (1) 这个寄存器受EALLOW保护。更多信息请见2.7.2节。 (2)

等式中的LOSPCP指的是LOSPCP寄存器中位2:0的值。 2.2 OSC和PLL模块

片内振荡器和锁相环(PLL)模块为器件提供时钟信号,并控制器件进入低功率模式。

2.2.1 输入时钟选项

位 15-3 2-0 域 保留 LSPCLK 值 000 001 010 011 100 101 110 111 描述(1) 2802x器件有2个内部振荡器(INTOSC1和INTOSC2),不需要使用外部元件。这些器件还有一个片内基于PLL的时钟模块。图 2.6所示为可用来计时器件的不同选项。

下面是可用的输入时钟选项:

13

? INTOSC1(内部零引脚振荡器1):这是片内内部振荡器1。它可以为看门狗

模块、内核以及CPU Timer2提供时钟。 ? INTOSC2(内部零引脚振荡器2):这是片内内部振荡器2。它可以为看门狗

模块、内核以及CPU Timer2提供时钟。INTOSC1和INTOSC2可以被单独选择用作看门狗模块、内核和CPU Timer2的时钟。

? 晶体/振荡器操作:片内(晶体)振荡器允许使用一个外部晶体/振荡器连接

到器件来提供时基(time base)。晶体/振荡器连接到X1/X2引脚。

? 外部时钟源操作:如果未使用片内(晶体)振荡器,外部时钟源模式就允许

绕过片内振荡器。这时,器件时钟通过XCLKIN引脚的外部时钟源输入产生。注意:XCLKIN与GPIO19或GPIO38脚复用。XCLKIN输入可以通过XCLK寄存器的XCLKINSEL位被选择用作GPIO19或GPIO38。CLKCTL[XCLKINOFF]位用来禁用这个外部时钟输入(将引脚强制变为低电平)。如果不使用时钟源,或者相应的外部时钟源输入被用作了GPIO,用户应该在启动时将其禁用。

14

图 2.6 时钟选项

1. 调节INTOSCn

INTOSC1和INTOSC2的额定频率是10MHz。提供了2个16位的寄存器,用来在生产过程中调节每个振荡器(称为粗调);还给用户提供了一种方式,利用软件来调节振荡器(称为细调)。两个16位的寄存器完全相同,因此只列出一个,寄存器名称中的“n”用数值1或2来替换。

图 2.7 内部振荡器n的调节寄存器(INTOSCnTRIM)

15

表 2.6 内部振荡器n调节寄存器(INTOSCnTRIM)的位描述

位 域 值 描述(1) 15 保留 14-9 FINETRIM 6位细调值:带符号的值(-31~+31)。 8 保留 7-0 COARSETRIM 8位粗调值:带符号的值(-127~+127)。 (1) 内部振荡器用保存在OTP中的参数进行软件调节。在引导过程中,Boot ROM将这个值复制到上面的寄存器中。

2. Device_cal()

Device_cal()程序被工厂编程到TI保留的存储器中。Boot ROM用器件特定的校准数据自动调用Device_cal()程序来校准内部振荡器和ADC。在正常操作过程中,这个过程自动发生,不需要用户进行操作。

如果在开发过程中Boot ROM被Code Composer Studio绕过,那么校准必须由应用来初始化。有关操作示例,请见C2802x C/C++ Header Files and Peripheral Examples中的系统初始化。

注:初始化这些寄存器失败将导致振荡器和ADC在规范要求之外工作。下面3个步骤描述了如何从一个应用中调用Device_cal程序。

步骤1:创建一个Device_cal函数的指针,如例 2.1所示。这个# define包含在头文件和外设示例中。

步骤2:调用Device_cal()指向的函数,如例 2.1所示。在执行这个调用之前必须使能ADC时钟。

例 2.1 调用Device_cal()函数

//Device_cal是一个指针,指向在下面所示地址处开始执行的函数 # define Device_cal (void(*)(void))0x3D7C80 ... ...

EALLOW;

SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; (*Device_cal)();

SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 0; EDIS; ... ...

2.2.2 配置输入时钟源和XCLKOUT选项

XCLK寄存器用来选择XCLKIN输入的GPIO引脚和配置XCLKOUT引脚的频率。

16