【原创】TI C2833x介绍---系统自带的ADC(3)
0赞ADC模块的时钟信号由系统高速时钟信号HSPCLK经过分频等操作转换而来。从DSP的外部有源晶振或者无源晶体输出的30MHz脉冲信号,到最终我们得到ADC模块的运行时钟信号,中间经过了相当多的步骤,总结下来一步一步如下:
1. 外部有源晶振输出的30MHz时钟信号输入到DSP的CLKIN管脚,或者由外部无源晶振产生的30MHz时钟信号输入X1、X2管脚之后,经过PLLCR(4bit的寄存器)锁频与PLLSTS分频之后,变成系统时钟信号SYSCLKOUT。例如,在PLLCR=1010b,PLLSTS=10b的情况下,SYSCLKOUT=30*10/2=150MHz。
2. SYSCLKOUT经过HISPCP寄存器的HSPCLK位配置后,产生供所有外设使用(“调用”更合适)的系统高速时钟信号HSPCLK。例如,位HSPCLK=0,则HSPCLK=150/1=150MHz;位HSPCLK=001b,则HSPCLK=150/2=75MHz。
3. 各个外设模块可以经过配置,在使能了外设本身的时钟信号之后,对HSPCLK信号再进行分频,得到外设本身所需要的时钟信号。以ADC模块为例,令PCLKCR0.ADCENCLK =1使能ADC模块时钟信号之后,通过配置ADC控制寄存器ADCTRL3的ADCCLKPS位,可以得到FCLK = HSPCLK/(2*ADCCLKPS)。例如,配置ADCCLKPS位为0110b,则信号为FCLK=12.5MHz,即时钟周期为80ns。再经过ADC控制寄存器ADCTRL1 的CPS位配置之后,ADCCLK =FCLK/(CPS+1),得到ADC模块的时钟ADCCLK。
4. PS:28335的ADC最大时钟频率可以达到25MHz,但是当ADCCLK超过12.5MHz之后,ADC的采样累加非线性误差(INL)将大大增加,何况转换周期80ns在电机控制应用中足够了,所以没有必要使用超过12.5MHz的时钟频率。
5. ADCCLK经过ADC控制寄存器ADCTRL1的ACQ_PS位配置之后,决定采样窗口的宽度,即sampling window = (ACQ_PS + 1)*(1/ADCCLK)。