wkwangke123 发表于 2015-7-13 10:11

求教为何283355内部ADC仿真结果一直是0

最近在学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 = ((AdcRegs.ADCRESULT1)>>4);
          AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
          array_index++;
          
          AdcRegs.ADCTRL2.bit.RST_SEQ1 =1;
          AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;C:\Users\Administrator\Desktop
          //Delay_us(10);
    }   //这个是采集ADC,虽然是7路采集,但是我只把通道0的数据存入数组中了别的没做处理。
C:\Users\Administrator\Desktop

wkwangke123 发表于 2015-7-13 10:12

自己和自己玩一会吧

wkwangke123 发表于 2015-7-13 11:59

好吧,我还是自己回复我自己吧,软件没有什么问题,最主要的是因为ADC模块的参考地悬空了,也就是ADCLO口。希望对大家有帮助。

zhangmangui 发表于 2015-7-13 22:19

wkwangke123 发表于 2015-7-13 11:59
好吧,我还是自己回复我自己吧,软件没有什么问题,最主要的是因为ADC模块的参考地悬空了,也就是ADCLO口。 ...

谢谢分享   

halou 发表于 2015-7-29 10:02

我也在学习28335的ADC,楼主这儿不对吧,

/*采样 ADCINA6*/

38.      AdcRegs.ADCCHSELSEQ2.bit.CONV06=0x0;
页: [1]
查看完整版本: 求教为何283355内部ADC仿真结果一直是0