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

[复制链接]
2732|4
 楼主| wkwangke123 发表于 2015-7-13 10:11 | 显示全部楼层 |阅读模式
  最近在学28335的AD模块,根据网上找的视频和资料对照着编程,但是结果却一直为0,希望各位能过帮忙解决一下问题。个人觉得是初始化出现了问题,但是看了很多遍了还是不行,所以请大家帮助一下。
  1. void Init_ADC_control(void)//ADC的初始化
  2. {
  3.        
  4.   extern void DSP28x_usDelay(Uint32 Count);//声明延迟函数
  5.   EALLOW;
  6.   SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;//开启ADC时钟
  7.   ADC_cal();//校准时钟
  8.   EDIS;
  9.    AdcRegs.ADCTRL1.bit.RESET = 1;//复位ADC模块
  10.    DSP28x_usDelay(1);//复位模块需要2个时钟模块才能生效
  11.    AdcRegs.ADCTRL1.bit.RESET=0;//然后恢复使能状态
  12.    
  13.    AdcRegs.ADCTRL1.bit.SUSMOD = 3;//仿真的设置
  14.    //当设置断点时,SUSMOD为10时,完成转换后停止

  15.       
  16.     AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run
  17.     AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0;       // Enable Sequencer override feature
  18.    
  19.     AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;//级联模式
  20.     AdcRegs.ADCTRL3.bit.SMODE_SEL = 0;//顺序采样模式
  21.    
  22.     AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x6;//开7个通道
  23.    
  24.     /*采样 ADCINA0*/
  25.         AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;
  26.         /*采样 ADCINA1*/
  27.         AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x1;
  28.         /*采样 ADCINA2*/
  29.         AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x2;
  30.         /*采样 ADCINA3*/
  31.         AdcRegs.ADCCHSELSEQ1.bit.CONV03=0x3;
  32.         /*采样 ADCINA4*/
  33.         AdcRegs.ADCCHSELSEQ2.bit.CONV04=0x4;
  34.         /*采样 ADCINA5*/
  35.         AdcRegs.ADCCHSELSEQ2.bit.CONV05=0x5;
  36.         /*采样 ADCINA6*/
  37.         AdcRegs.ADCCHSELSEQ2.bit.CONV06=0x0;

  38.     AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;
  39.     //bandgap/reference/ADC circuits is POWER ON
  40.     DSP28x_usDelay(5000);//需要至少7MS时间
  41.     AdcRegs.ADCTRL3.bit.ADCPWDN=1;//others is POWER ON
  42.         DSP28x_usDelay(5000);
  43.    AdcRegs.ADCTRL1.bit.CPS = 1;//2分频高速时钟
  44.    AdcRegs.ADCTRL3.bit.ADCCLKPS = 1;//ADCLK=HSPCLK/(2*(CPS+1));此程序中,CPS为1
  45.    AdcRegs.ADCTRL1.bit.ACQ_PS = 3;//Sequential mode: Sample rate   = 1/[(2+ACQ_PS)*ADC clock in ns]
  46.    //ACQ_PS为采样窗口的时间,ADCLK=6.25MHZ,                      //= 1/(3*40ns) =8.3MHz (for 150 MHz SYSCLKOUT)
  47.    //sampling time=ADCCLK*(3+1);
  48.    Delay_us(1000);//稳定时钟
  49. }


  1. //start SEQ1
  2.    AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;
  3.    
  4.         while(1)
  5.         {
  6.           if(array_index>512)
  7.           array_index = 0;
  8.           while(AdcRegs.ADCST.bit.INT_SEQ1 == 0);
  9.           SampleTable[array_index] = ((AdcRegs.ADCRESULT1)>>4);
  10.           AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
  11.           array_index++;
  12.           
  13.           AdcRegs.ADCTRL2.bit.RST_SEQ1 =1;
  14.           AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;[img]C:\Users\Administrator\Desktop
  15.           //Delay_us(10);
  16.     }
  //这个是采集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口。 ...

谢谢分享   
halou 发表于 2015-7-29 10:02 | 显示全部楼层
我也在学习28335的ADC,楼主这儿不对吧,

/*采样 ADCINA6*/

38.        AdcRegs.ADCCHSELSEQ2.bit.CONV06=0x0;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

25

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部