打印
[DSP编程]

DSP28335级联模式两路采集都会对另一路产生影响,解决办法

[复制链接]
3118|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renchaopeng|  楼主 | 2014-8-28 10:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我声明了AD初始化的程序。在中断中实现AD采样。我设定的是级联模式,AINA0采集一路,AINA1采集另一路,但是两路采集都会对另一路产生影响。该怎么办。
下面是我AD初始化的程序,还有中断服务函数程序。
void AD_Init(void)
{

   EALLOW;
   SysCtrlRegs.HISPCP.all = ADC_MODCLK;        // HSPCLK = SYSCLKOUT/ADC_MODCLK
   EDIS;

  InitAdc();         // For this example, initializes the ADC

// Specific ADC setup for this example:                  
  AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;  // Sequential mode: Sample rate   = 1/[(2+ACQ_PS)*ADC clock in ns]
                       //                     = 1/(3*40ns) =8.3MHz (for 150 MHz SYSCLKOUT)   //ADC_SHCLK为1
                                            //                     = 1/(3*80ns) =4.17MHz (for 100 MHz SYSCLKOUT)
                                            // If Simultaneous mode(同时处理模式) enabled: Sample rate = 1/[(3+ACQ_PS)*ADC clock in ns]
  AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;  // 预分频用                      //ADC_CKPS为0,表示不分频                      //P144
  AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode  ////  1 级联模式   ,SEQ为16通道  ////   0双排序模式SEQ1和SEQ2各为8通道
  AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;          //选择通道ADCINA0
  AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1;          //选择通道ADCINA1
  AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run   连续模式      

  AdcRegs.ADCTRL1.bit.SEQ_OVRD = 1;       // Enable Sequencer override feature            
                                          
  AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0x01;  // convert and store in 8 results registers   因为只有A0转换//转换次数为1+1=2次
                                               //一个序列内所完成的转换次数为MAX_CONVn+1

}



interrupt void ISRTimer0(void)//中断服务程序(Interrupt Service Routine)                                                             //中断服务程序,清零标志位,重新计时,//采样
{

    CpuTimer0.InterruptCount++;
    AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;/////打开AD采样//////不加的话,就不行,while(AdcRegs.ADCST.bit.INT_SEQ1 == 0);看不到执行//////

                            while(AdcRegs.ADCST.bit.INT_SEQ1 == 0);//为0表示没有INT_SEQ1,为1表示有INT_SEQ1,才能执行后面的程序
  //                          AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0;   
                            AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;//置位表示清除INT_SEQ1。

                          a= ((AdcRegs.ADCRESULT0)>>4);//AdcRegs.ADCRESULT0右移4位
                        b= ((AdcRegs.ADCRESULT1)>>4);


                                                      j++;
                                                      sum1=sum1+a;
                            sum2=sum2+b;

                                              if(j>=512)      //采样20次
                                              {
                                                      dianya1=(sum1/512/4096)*2.94985;//i
                                                      dianya2=(sum2/512/4096)*2.94985;//u
                                                      sum1=sum1/512;//i
                                                      sum2=sum2/512;//u
                                                      sum_pwm_caiyang_i=sum1;//i       ////////////AD0寄存器中的值,即采样值(0-4095)///////////
                                                      sum_pwm_caiyang_u=sum2;//u        ////////////AD1寄存器中的值,即采样值(0-4095)///////////
                                                      sum_lcd1=sum1/2100/2;//实际的电流值
                                                      sum_lcd2=dianya2;//实际的电压值
                                                      AD0=sum1;//i          ////////////AD0寄存器中的值,即采样值(0-4095)///////////
                                                      AD1=sum2;//i           ////////////AD1寄存器中的值,即采样值(0-4095)///////////
                                                      j=0;
                                                      sum1=0;
                                                      sum2=0;
                                              }
}
谢谢了,在线等。

相关帖子

沙发
wangch_sh| | 2014-8-28 17:34 | 只看该作者
用非级联模式试下

使用特权

评论回复
板凳
renchaopeng|  楼主 | 2014-8-28 18:13 | 只看该作者
我知道问题了,因为我测量一个管脚时,另一个是悬空的,会有很大影响。如果在我测量一个管脚时,另一个管脚接个高电平或者地,就不变化了。

使用特权

评论回复
地板
renchaopeng|  楼主 | 2014-8-28 18:14 | 只看该作者
谢谢了。

使用特权

评论回复
5
zhangmangui| | 2014-8-28 23:20 | 只看该作者
renchaopeng 发表于 2014-8-28 18:13
我知道问题了,因为我测量一个管脚时,另一个是悬空的,会有很大影响。如果在我测量一个管脚时,另一个管脚 ...

如果要使用并行采样  也就是级联同时采样两路信号  
可定需要送入两路信号   悬空有些不妥  
问题解决了就好   谢谢你的分享

使用特权

评论回复
6
renchaopeng|  楼主 | 2014-8-29 10:25 | 只看该作者
恩,谢谢了。

使用特权

评论回复
7
闵大| | 2019-7-20 17:09 | 只看该作者
感谢楼主分享。我今天也遇到了和楼主一样的问题,其次我还遇到另一个问题。我使用的是DSP28335,配置好ADC模块后,A0引脚未接入电压就已经有1V的电压值。请问这是什么问题?非常感谢!

使用特权

评论回复
8
闵大| | 2019-7-20 17:32 | 只看该作者
zhangmangui 发表于 2014-8-28 23:20
如果要使用并行采样  也就是级联同时采样两路信号  
可定需要送入两路信号   悬空有些不妥  
问题解决了 ...

大神您好!
      我想请问您两个问题,望不吝请教。小弟使用DSP28335的ADC模块采集两路电压值(A0和A1)。
      问题1:A0和A1引脚悬空,从采样窗观测已有1V电压值。
      问题2:把A0引脚和AGND短接,悬空的A1引脚电压值下降为0.43V。
      非常感谢!

使用特权

评论回复
9
zhangmangui| | 2019-7-22 23:56 | 只看该作者
闵大 发表于 2019-7-20 17:32
大神您好!
      我想请问您两个问题,望不吝请教。小弟使用DSP28335的ADC模块采集两路电压值(A0和A1) ...

悬空一般会采集到2000多的数字量   
如果把A0接到地上  测到0.43V   你的所有采集值可以与实际对比一下
应该需要减去一个固定值  比如0.43V

使用特权

评论回复
10
闵大| | 2019-7-25 08:55 | 只看该作者
zhangmangui 发表于 2019-7-22 23:56
悬空一般会采集到2000多的数字量   
如果把A0接到地上  测到0.43V   你的所有采集值可以与实际对比一下
...

感谢您的回复,问题已解决。我配置了A0、A1两路ADC通道,如果只用其中一路则把另外一路接地避免引脚悬空产生干扰。

使用特权

评论回复
11
zhangmangui| | 2019-7-29 20:59 | 只看该作者
闵大 发表于 2019-7-25 08:55
感谢您的回复,问题已解决。我配置了A0、A1两路ADC通道,如果只用其中一路则把另外一路接地避免引脚悬空 ...

好的   这种硬件设计很重要

使用特权

评论回复
12
蒋博1026| | 2019-7-30 20:09 | 只看该作者
闵大 发表于 2019-7-20 17:32
大神您好!
      我想请问您两个问题,望不吝请教。小弟使用DSP28335的ADC模块采集两路电压值(A0和A1) ...

悬空的话,应该是随机噪声会产生影响吧,就是输入值会不固定

使用特权

评论回复
13
蒋博1026| | 2019-7-30 20:09 | 只看该作者
闵大 发表于 2019-7-20 17:32
大神您好!
      我想请问您两个问题,望不吝请教。小弟使用DSP28335的ADC模块采集两路电压值(A0和A1) ...

如果输入值不固定的话,那么输出值肯定也是不固定的了

使用特权

评论回复
14
蒋博1026| | 2019-7-30 20:10 | 只看该作者
闵大 发表于 2019-7-20 17:32
大神您好!
      我想请问您两个问题,望不吝请教。小弟使用DSP28335的ADC模块采集两路电压值(A0和A1) ...

第二个问题的话,建议你可以看看这个数据是不是固定的

使用特权

评论回复
15
蒋博1026| | 2019-7-30 20:11 | 只看该作者
闵大 发表于 2019-7-20 17:32
大神您好!
      我想请问您两个问题,望不吝请教。小弟使用DSP28335的ADC模块采集两路电压值(A0和A1) ...

再者就是改变输入值,看看输出是不是线性的变化,如果是线性变化,可以用软件修正一下这个0.43

使用特权

评论回复
评论
闵大 2019-7-31 19:42 回复TA
感谢您的回复。问题已解决,确实引脚不能悬空,否则会有噪声干扰。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝