打印
[仿真]

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

[复制链接]
1872|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wkwangke123|  楼主 | 2015-7-13 10:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  最近在学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

相关帖子

沙发
wkwangke123|  楼主 | 2015-7-13 10:12 | 只看该作者
自己和自己玩一会吧

使用特权

评论回复
板凳
wkwangke123|  楼主 | 2015-7-13 11:59 | 只看该作者
好吧,我还是自己回复我自己吧,软件没有什么问题,最主要的是因为ADC模块的参考地悬空了,也就是ADCLO口。希望对大家有帮助。

使用特权

评论回复
评分
参与人数 1威望 +10 收起 理由
zhangmangui + 10 赞一个!
地板
zhangmangui| | 2015-7-13 22:19 | 只看该作者
wkwangke123 发表于 2015-7-13 11:59
好吧,我还是自己回复我自己吧,软件没有什么问题,最主要的是因为ADC模块的参考地悬空了,也就是ADCLO口。 ...

谢谢分享   

使用特权

评论回复
5
halou| | 2015-7-29 10:02 | 只看该作者
我也在学习28335的ADC,楼主这儿不对吧,

/*采样 ADCINA6*/

38.        AdcRegs.ADCCHSELSEQ2.bit.CONV06=0x0;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

25

帖子

0

粉丝