blues_more 发表于 2015-1-5 20:46

为什么DSP28335ADC采样正弦信号波形失真?

本帖最后由 blues_more 于 2015-1-5 20:48 编辑

一个由信号发生器发出的正弦信号,信号频率为220Hz(模仿交流电信号频率,因为最终要采样交流电),方法是将数据由串口传PC,然后matlab绘图,但是结果波形有失真。主要程序和绘图结果如下。请问是什么原因呢?
Configure ADC
   AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;
   AdcRegs.ADCMAXCONV.all = 0;       // Setup 2 conv's on SEQ1
   AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x3; // Setup ADCINA3 as 1st SEQ1 conv.
   AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;// Enable SOCA from ePWM to start SEQ1
   AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;// Enable SEQ1 interrupt (every EOS)
Assumes ePWM1 clock is already enabled in InitSysCtrl();
   EPwm1Regs.ETSEL.bit.SOCAEN = 1;      // Enable SOC on A group
   EPwm1Regs.ETSEL.bit.SOCASEL = 4;       // Select SOC from from CPMA on upcount
   EPwm1Regs.ETPS.bit.SOCAPRD = 01;      // Generate pulse on 1st event
   EPwm1Regs.CMPA.half.CMPA = 0x0080;
   EPwm1Regs.TBPRD = 0x1D4B;            // Set period for ePWM1
   EPwm1Regs.TBCTL.bit.CTRMODE = 00;                  // count up and start

interrupt voidadc_isr(void)
{
VoltageH = AdcRegs.ADCRESULT0 >>12;
VoltageL = AdcRegs.ADCRESULT0 >>4;

// If 40 conversions have been logged, start over
if(ConversionCount == 127)
{
    for (ConversionCount=0;ConversionCount<128;ConversionCount++)
    {
            scib_xmit(VoltageH);      
            scib_xmit(VoltageL);
    }
    for(;;);
   ConversionCount = 0;
}
else ConversionCount++;

// Reinitialize for next ADC sequence
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;         // Reset SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;       // Clear INT SEQ1 bit
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;   // Acknowledge interrupt to PIE

return;
}




zhangmangui 发表于 2015-1-5 23:12

建议你先在CCS的Graph下看看效果
排除在上传等过程造成的影响

blues_more 发表于 2015-1-7 16:02

zhangmangui 发表于 2015-1-5 23:12 static/image/common/back.gif
建议你先在CCS的Graph下看看效果
排除在上传等过程造成的影响

按照你的说法,用graph看了,依然有畸变,信号发生器的信号应该很光滑的啊,请问是什么其他原因呢。我采样时用epwm触发的,只用一个通道A3,每采一个数,进中断保存一下。下面四我在graph中看的信号。

海中水 发表于 2015-1-7 16:06

采样的电路拿示波器勾一下,看看是什么波形?

blues_more 发表于 2015-1-7 16:36

海中水 发表于 2015-1-7 16:06 static/image/common/back.gif
采样的电路拿示波器勾一下,看看是什么波形?

下面是示波器显示的信号,三个图是一个信号,我调了一下比例,你觉得怎么样,是不是信号发生器的信号本来就有锯齿

海中水 发表于 2015-1-7 17:02

blues_more 发表于 2015-1-7 16:36 static/image/common/back.gif
下面是示波器显示的信号,三个图是一个信号,我调了一下比例,你觉得怎么样,是不是信号发生器的信号本来 ...

信号是OK的,采样的保持时间放长一点,而且采完之后清0。实在不行试一下双缓存吧!

blues_more 发表于 2015-1-7 17:33

海中水 发表于 2015-1-7 17:02 static/image/common/back.gif
信号是OK的,采样的保持时间放长一点,而且采完之后清0。实在不行试一下双缓存吧! ...

改了保持时间,还是不行,请问具体什么是双缓存呢?

海中水 发表于 2015-1-7 17:39

blues_more 发表于 2015-1-7 17:33 static/image/common/back.gif
改了保持时间,还是不行,请问具体什么是双缓存呢?

你上面的那个波形是勾的信号发生器输出的吗?如果是不要勾那里的,勾AD采样引脚的。双缓存我估计也不行。

海中水 发表于 2015-1-7 17:41

双缓存就是读取值的时候有两个缓存值,两个交替转换。一个用来操作数据,一个用来获取AD转换。

blues_more 发表于 2015-1-7 21:10

海中水 发表于 2015-1-7 17:39 static/image/common/back.gif
你上面的那个波形是勾的信号发生器输出的吗?如果是不要勾那里的,勾AD采样引脚的。双缓存我估计也不行。 ...

勾的就是AD采样引脚

blues_more 发表于 2015-1-7 22:22

海中水 发表于 2015-1-7 17:41 static/image/common/back.gif
双缓存就是读取值的时候有两个缓存值,两个交替转换。一个用来操作数据,一个用来获取AD转换。 ...

软件或者硬件矫正一下是不是会好

zhangmangui 发表于 2015-1-7 22:26

blues_more 发表于 2015-1-7 22:22 static/image/common/back.gif
软件或者硬件矫正一下是不是会好

软件矫正肯定有效果

海中水 发表于 2015-1-8 10:23

blues_more 发表于 2015-1-7 22:22 static/image/common/back.gif
软件或者硬件矫正一下是不是会好

AD采样矫正一下应该会好,但是你的是实时的信号。你先试一下吧!这种每个点都要的应用我还真没有做过。

blues_more 发表于 2015-1-8 13:55

zhangmangui 发表于 2015-1-7 22:26 static/image/common/back.gif
软件矫正肯定有效果

请问你说的软件矫正是adc_cal吗,这个我已经声明了,并且我看在例程的init_adc函数中也调用了啊。还是需呀做别的,另外想请教你一个关于adc_cal的问题,我看到在其中是这么写的
_ADC_cal
MOVW DP, #ADCREFSEL_LOC >> 6
MOV @28, #0xAAAA
MOV @29, #0xBBBB
LRETR
我的理解后两句中0XAAAA和0XBBBB是不是需要根据自己情况去修改?

sunpotty 发表于 2015-1-15 15:00

软件应该这样矫正的吧,或者在程序中加个滤波器看看?

blues_more 发表于 2015-1-25 13:10

zhangmangui 发表于 2015-1-7 22:26 static/image/common/back.gif
软件矫正肯定有效果

版主你好,为什么我结贴给分时候一直提示分数未分配或分配错误啊。。。没法给大家分数,实在不好意思

zhangmangui 发表于 2015-1-25 21:49

blues_more 发表于 2015-1-25 13:10 static/image/common/back.gif
版主你好,为什么我结贴给分时候一直提示分数未分配或分配错误啊。。。没法给大家分数,实在不好意思 ...

你说的这种
_ADC_cal
MOVW DP, #ADCREFSEL_LOC >> 6
MOV @28, #0xAAAA
MOV @29, #0xBBBB
LRETR

我也不知道什么原理
软件矫正   我的理解是加各种滤波算法

wang168506 发表于 2015-1-26 14:17

这就不错了不可能百分百还原的 ,硬件上的干扰还是很容易串进来的

去月球读博士 发表于 2015-1-30 15:25

blues_more 发表于 2015-1-25 13:10 static/image/common/back.gif
版主你好,为什么我结贴给分时候一直提示分数未分配或分配错误啊。。。没法给大家分数,实在不好意思 ...

楼主你好,请问你的问题 解决了吗,我用28335 AD 进行采样的时候也遇到类似问题,AD 管脚的电压很好,但是AD 采样出来的数字量 毛刺就很多,百思不得其解

banjinbaliang 发表于 2015-11-2 14:41

blues_more 发表于 2015-1-7 16:02
按照你的说法,用graph看了,依然有畸变,信号发生器的信号应该很光滑的啊,请问是什么其他原因呢。我采 ...

你好,可以说一下你的graph的具体设置吗?
页: [1] 2
查看完整版本: 为什么DSP28335ADC采样正弦信号波形失真?