最近在学28335的AD模块,根据网上找的视频和资料对照着编程,但是结果却一直为0,希望各位能过帮忙解决一下问题。个人觉得是初始化出现了问题,但是看了很多遍了还是不行,所以请大家帮助一下。
- void Init_ADC_control(void)//ADC的初始化
- {
-
- extern void DSP28x_usDelay(Uint32 Count);//声明延迟函数
- EALLOW;
- SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;//开启ADC时钟
- ADC_cal();//校准时钟
- EDIS;
- AdcRegs.ADCTRL1.bit.RESET = 1;//复位ADC模块
- DSP28x_usDelay(1);//复位模块需要2个时钟模块才能生效
- AdcRegs.ADCTRL1.bit.RESET=0;//然后恢复使能状态
-
- AdcRegs.ADCTRL1.bit.SUSMOD = 3;//仿真的设置
- //当设置断点时,SUSMOD为10时,完成转换后停止
-
- AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run
- AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0; // Enable Sequencer override feature
-
- AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;//级联模式
- AdcRegs.ADCTRL3.bit.SMODE_SEL = 0;//顺序采样模式
-
- AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x6;//开7个通道
-
- /*采样 ADCINA0*/
- AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;
- /*采样 ADCINA1*/
- AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x1;
- /*采样 ADCINA2*/
- AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x2;
- /*采样 ADCINA3*/
- AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x3;
- /*采样 ADCINA4*/
- AdcRegs.ADCCHSELSEQ2.bit.CONV04=0x4;
- /*采样 ADCINA5*/
- AdcRegs.ADCCHSELSEQ2.bit.CONV05=0x5;
- /*采样 ADCINA6*/
- AdcRegs.ADCCHSELSEQ2.bit.CONV06=0x0;
- AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;
- //bandgap/reference/ADC circuits is POWER ON
- DSP28x_usDelay(5000);//需要至少7MS时间
- AdcRegs.ADCTRL3.bit.ADCPWDN=1;//others is POWER ON
- DSP28x_usDelay(5000);
- AdcRegs.ADCTRL1.bit.CPS = 1;//2分频高速时钟
- AdcRegs.ADCTRL3.bit.ADCCLKPS = 1;//ADCLK=HSPCLK/(2*(CPS+1));此程序中,CPS为1
- AdcRegs.ADCTRL1.bit.ACQ_PS = 3;//Sequential mode: Sample rate = 1/[(2+ACQ_PS)*ADC clock in ns]
- //ACQ_PS为采样窗口的时间,ADCLK=6.25MHZ, //= 1/(3*40ns) =8.3MHz (for 150 MHz SYSCLKOUT)
- //sampling time=ADCCLK*(3+1);
- Delay_us(1000);//稳定时钟
- }
- //start SEQ1
- AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;
-
- while(1)
- {
- if(array_index>512)
- array_index = 0;
- while(AdcRegs.ADCST.bit.INT_SEQ1 == 0);
- SampleTable[array_index] = ((AdcRegs.ADCRESULT1)>>4);
- AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
- array_index++;
-
- AdcRegs.ADCTRL2.bit.RST_SEQ1 =1;
- AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;[img]C:\Users\Administrator\Desktop
- //Delay_us(10);
- }
//这个是采集ADC,虽然是7路采集,但是我只把通道0的数据存入数组中了别的没做处理。
C:\Users\Administrator\Desktop
|