1、ADC模块结构图Note:ADCENCLK使能以后,该ADCCLK才有效;结果寄存器0-15并非与A0-A7、B0-B7一一对应,具体的对应方式由排序器决定;ADC模块只有一个转换,所以在同一时刻只能有一个通道被送入到ADC转换模块中进行ADC转换;送入的先后顺序由排序器决定,采样的结果依次送入Result REG 0-15。当工作于双序列模式时,若ADC转换模块正在转换ADCB0-ADCB7中的某一通道时,ADCA0-ADCA7中的某一通道的转换信号送入ADC转换模块,则在转换结束ADCB0-ADCB7中的某一通道后再转换ADCA0-ADCA7中的某一通道;当ADCA0-ADCA7中的某一通
2、道与ADCB0-ADCB7中的某一通道同时送入ADC转换模块,则先转换ADCA0-ADCA7中的某一通道,即A0-A7的优先级高于B0-B7;2、 ADC时钟及采样频率一般将ADCCLK配置为25MHz。3、 自动转换排序器的工作原理ADC排序器由两个独立的8状态排序器(SEQ1和SEQ2)组成,这两个排序器也可以被级联为1个16状态的排序器(状态的意思是排序器能够自动转换的个数)。两种情况如下图所示:ADC可以工作在同步采样模式和顺序采样模式,对于每一次转换,CONVxx定义了当前哪一个通道被采样和转换;在顺序采样模式中,CONVxx的四位都被定义为输入引脚,最高位定义了通道A或通道B,低三
3、位定义了偏移量,例如0101b表示ADCINA5,1001b表示ADCINB1;在同步采样模式中,CONVxx的最高位没有意义,第三位表示偏移量,例如0101b表示先对ADCINA5采样再对ADCINB5采样,1001b表示先对ADCINA1采样再对ADCINB1采样;4、 ADC相关寄存器介绍4.1ADCTRL1RESET(14):写0无影响:写1复位整个ADC模块。(在系统复位时,ADC模块会被复位,当在其他时刻需要复位ADC模块时,可以向该位写1,但是在写1后需要等待至少两个ADC时钟周期后才可以继续对ADC控制寄存器1进行操作)SUSMOD(13:12):仿真悬挂模式位,通常向该位写入
4、00:忽略仿真悬挂;ACQ_PS(11:8):该位控制SOC脉冲的宽度,决定采样开关关闭持续多长时间。SOC脉冲的宽度等于(ACQ_PS+1)个ADC时钟周期.CPS(7): 写0:ADCCLK = Fclk/1; 写1:ADCCLK = Fclk/2。(Fclk = Prescaled HSPCLK(adcclkps3:0),参考上面ADC时钟及采样频率部分。CONT_RUN(6):写0:启动停止模式(在收到EOS信号后,排序器停止。在下一个SOC信号到来时,排序器从上一次停止的地方开始。);写1:连续转换模式。(当收到EOS信号后,排序器停止。在下一个SOC信号到来时,排序器的行为取决于S
5、EQ_OVRD位的状态,当SEQ_OVRD为0时,排序器从头开始排序;当SEQ_OVRD为1时,排序器从上一次停止的地方开始。)SEQ_OVR(5):设置:采样模式为顺序采样的级联模式;MAX_CONV.all = 0x0001; /最大转换通道为2个ADCCHSELSEQ1.bit.CONV00=0x0; /ADCINA0ADCCHSELSEQ1.bit.CONV01=0x3; /ADCINA3若CONT_RUN = 1;SEQ_OVR = 0;则采样结果只在结果寄存器0和1中;SEQ_OVR = 1;则采样结果只在结果寄存器0-15中;若CONT_RUN = 0;则采样结果只在结果寄存器0
6、-15中。SEQ_CASC(4):双序列模式;级联模式。4.2ADCTRL2ePWM_SOCB_SEQ(15):无影响;写1:通过Epwm_SOCB信号允许级联排序器开始。RST_SEQ1:立即复位排序器到ONV00;SOC_SEQ1:写0:清除一个没被处理的SOC触发信号;软件触发,从当前停止为止启动SEQ1。INT_ENA_SEQ1:通过INT_SEQ1的中断请求被禁止;通过INT_SEQ1的中断请求被使能;INT_MOD_SEQ1:INT_SEQ1在每一次SEQ1排序器结束时产生;INT_SEQ1每隔一次SEQ1排序器结束时产生;ePWM_SOCA_SEQ1:SEQ1不能通过ePWMx
7、SOCA的触发开始;允许SEQ1、SEQ通过ePWMx SOCA的触发开始;EXT_SOC_SEQ1:允许外部中断XINT2触发启动SEQ1;4.3ADCTRL3ADCBGRFDN:写00:带隙和参考电路掉电;写11:带隙和参考电路上电;ADCPWDN:除带隙和参考电路外,AD内部所有的模拟电路掉电;AD内部所有的模拟电路上电;ADCCLKPS:结合ADC时钟及采样频率理解0000HSPCLK/(ADCTRL17+1)0001HSPCLK/2*(ADCTRL17+1)0010 HSPCLK/4*(ADCTRL17+1)0011HSPCLK/6*(ADCTRL17+1)1111HSPCLK/30
8、*(ADCTRL17+1)SMODE_SEL:顺序采样模式;同步采样模式。4.4ADCMAXCONVMAX_CONVn:最大通道转换数。FOR SEQ1:MAX_CONV12:0FOR SEQ2:MAX_CONV22:FOR SEQ : MAX_CONV13:4.5ADCSTEOS_BUF2:SEQ2的序列缓冲结束位;INT_SEQ2_CLR:清除SEQ2中断标志INT_SEQ2.该位不会影响EOS_BUF2位SEQ2_BSY:读0:SEQ2空闲,等待触发;读1:SEQ2正在工作;INT_SEQ2:没有SEQ2中断事件发生;SEQ2中断事件发生。4.6ADCREFSEL4.7ADCCHSELS
9、EQ14.8ADCRESULTn5、ADC采样例程Example 1:配置ADC为顺序采样、级联模式,最大采样通道为1,对ADCINA0进行连续采样AVG次,并将采样的结果放在SampleTableBUF_SIZE中。在本例中ADCLK = 12.5MHz。#include DSP28x_Project.h / Device Headerfile and Examples Include File#define AVG 1000 / Average sample limit#define ZOFFSET 0x00 / Average Zero offset#define BUF_SIZE 20
10、48 / Sample buffer size/ Global variable for this exampleUint16 SampleTableBUF_SIZE;main() Uint16 i;/ Step 1. Initialize System Control:/ PLL, WatchDog, enable Peripheral Clocks/ This example function is found in the DSP2833x_SysCtrl.c file. InitSysCtrl();/ Specific clock setting for this example: E
11、ALLOW; SysCtrlRegs.HISPCP.all = 0x3;/ HSPCLK = SYSCLKOUT/ADC_MODCLK EDIS;/ Step 2. Initialize GPIO:/ This example function is found in the DSP2833x_Gpio.c file and/ illustrates how to set the GPIO to its default state./ InitGpio(); / Skipped for this example/ Step 3. Clear all interrupts and initial
12、ize PIE vector table:/ Disable CPU interrupts DINT;/ Initialize the PIE control registers to their default state./ The default state is all PIE interrupts disabled and flags/ are cleared./ This function is found in the DSP2833x_PieCtrl.c file. InitPieCtrl();/ Disable CPU interrupts and clear all CPU
13、 interrupt flags: IER = 0x0000; IFR = 0x0000;/ Initialize the PIE vector table with pointers to the shell Interrupt/ Service Routines (ISR)./ This will populate the entire table, even if the interrupt/ is not used in this example. This is useful for debug purposes./ The shell ISR routines are found in DSP2833x_DefaultIsr.c./ This function is found in DSP2833x_PieVect.c
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1