最近测试时发现STM32的ADC使用DMA方式读到的数据会出现下边的情况
开始怀疑是外界信号产生的高频干扰,经过几天的测试发现这个其实是DMA输出的内存数据中间被插入了额外的数据
通过第二张图可以看的很清楚,把中间的“高频”信号去掉后的波形就会变正常
所以“高频”信号是多出的一部分,不是在原有信号上的叠加
还有一个很奇怪的问题,这一部分多余的数据会和实际信号有某种联系,仔细看,把它低通滤波后好像又和原始信号相同
这个现象并不会经常出现,我发现在输出一个幅度比较小的正弦信号,让这个正弦信号的过零点在vref/2(12位ADC的2048 CODE)处,就会出现这种情况,ADC的采样率或者ADC是不是使用放大器缓冲结果都不太一样
我试过STM32G474和STM32L452都有这个问题,不过有时采样率降的低一些现象就不这么明显,或者看不到这个现象
试过STM32F413,没看到过这种现象
有兴趣的可以试一下,使用STM32本身的DAC可以产生这种信号
stm32g474测试工程,A2是DAC输出,A0是ADC输入,用路线连接A0和A4即可
g474.rar
(9.77 MB, 下载次数: 16)
这个是采集到的几次数据
adc数据分析2.xlsx
(848.05 KB, 下载次数: 5)
如果知道解决办法或者厂家的技术支持也麻烦帮忙看下,这个问题已经困扰我好多天了,多谢
|