打印
[MCU]

ADC问题

[复制链接]
256|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pangb|  楼主 | 2020-3-15 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ADC, se, ADCc, ni, pc
我的28335 AD采集的代码为:
void Ad_init(void)
{
      InitAdc();        
   
       AdcRegs.ADCTRL1.bit.ACQ_PS =1;
       AdcRegs.ADCTRL1.bit.CPS = 0;
       AdcRegs.ADCTRL3.bit.ADCCLKPS =0;  //25Mhz
       AdcRegs.ADCTRL1.bit.SUSMOD=3; //3:仿真器停立即停

       AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  级联
       AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0; //不(覆盖由MAX_CONV1设置的最大通道数,在整个模块通道内循环转换 )
       AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run

      AdcRegs.ADCCHSELSEQ1.all = 0x0;  //初始化所有的ADC同通道到A0
      AdcRegs.ADCTRL3.bit.SMODE_SEL=1;    //同步采样
       AdcRegs.ADCMAXCONV.bit.MAX_CONV1=1;
       AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;//采样 ADCINA0
       AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;      
}
void InitAdc(void)
{
    extern void DSP28x_usDelay(Uint32 Count);
    EALLOW;
         SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
         ADC_cal();
     EDIS;
     AdcRegs.ADCTRL3.all = 0x00E0;  // Power up bandgap/reference/ADC circuits
     DELAY_US(ADC_usDELAY);         // Delay before converting ADC channels
}
void main(void)
{
    InitSysCtrl();
    EALLOW;
     SysCtrlRegs.HISPCP.all = 0x3;
     EDIS;
    Ad_init();
    while(1)
    {
                ADResult0 = (AdcRegs.ADCRESULT0 >>4);
                  ADResult1 =  (( ADResult0  * 3) / 4096);
                DELAY_US(5000L);
              AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
    }
}
我把第一通道接了GND。调试时,在主程序的while中的 AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;加了断点,发现前两次采集到的ADResult为0,后面再采集时,值逐渐增到,直到为2.99999V。

使用特权

评论回复

相关帖子

沙发
wenfen| | 2020-3-15 15:46 | 只看该作者
会不会是其他通道的影响?

使用特权

评论回复
板凳
juventus9554| | 2020-3-15 15:48 | 只看该作者
其他通道怎么接的?

使用特权

评论回复
地板
houcs| | 2020-3-15 15:51 | 只看该作者
悬空吗?

使用特权

评论回复
5
pangb|  楼主 | 2020-3-15 15:53 | 只看该作者
ADResult1 =  (( ADResult0  * 3) / 4096);你这个地方/是整数,前两次的分母要是小于分子的话,相除(/)的结果肯定为零

使用特权

评论回复
6
yinxiangh| | 2020-3-15 15:55 | 只看该作者
那应该怎么计算它的值?

使用特权

评论回复
7
kangzj| | 2020-3-15 15:59 | 只看该作者
你说的问题实际上是取余了,所以会是0对吧?

使用特权

评论回复
8
huwr| | 2020-3-15 16:01 | 只看该作者
应该除以4096.0,这样的结果会包含小数的,这是c语言中"/"的基本的用法

使用特权

评论回复
9
songqian17| | 2020-3-15 16:09 | 只看该作者
加大一下延时呢

使用特权

评论回复
10
juventus9554| | 2020-3-15 16:11 | 只看该作者
你是不是接错了IO了?

使用特权

评论回复
11
dingy| | 2020-3-15 16:13 | 只看该作者

你使用定位器呢?

使用特权

评论回复
12
xxrs| | 2020-3-15 16:16 | 只看该作者
后面怎么可能连续增加呢?

使用特权

评论回复
13
xxmmi| | 2020-3-15 16:18 | 只看该作者
使用中断触发呢?

使用特权

评论回复
14
yufe| | 2020-3-15 16:21 | 只看该作者

数值增大应该是你的电路问题。

使用特权

评论回复
15
pangb|  楼主 | 2020-3-15 16:24 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

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

本版积分规则

701

主题

7643

帖子

6

粉丝