开启ADC之后数值计算出错

2019-07-14 15:40发布

由于实验需要要对一个电压信号进行采样,采样的值虽然上下有点波动,但是能在接受的范围内。不过,开启ADC之后却发现数值计算居然都算不对了,请问有遇到过这样问题的朋友吗?如图所示
当我把ADC关掉之后这个结果就正常了,请问是什么原因?ADC里面用DMA进行数据传输的,为了滤波开启了DMA2_Channel4_5_IRQHandler,具体代码见图,求大师指教


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
qwe043
1楼-- · 2019-07-14 20:49
ctwewer 发表于 2018-11-28 08:13
可能你在DMA中断里处理数据的时候,后续的ADC-DMA还在进行,数据覆盖了原来的部分数据。使数据运算结果出现错误。

可是像我截图中写的那样,我是写了一个数值的乘法运算,这样应该不存在覆盖什么的吧(一开始我没有在中断里面操作voltage这个变量,只在主程序里面写了一个类似voltage=3.14*10;这样的赋值,但是发现不对)
ctwewer
2楼-- · 2019-07-15 01:32
qwe043 发表于 2018-11-28 08:26
可是像我截图中写的那样,我是写了一个数值的乘法运算,这样应该不存在覆盖什么的吧(一开始我没有在中断里面操作voltage这个变量,只在主程序里面写了一个类似voltage=3.14*10;这样的赋值,但是发现不对)

你在中断里做乘法运算有考虑耗时多少?是否出现未做完运算,下一次中断又来了,影响了数据完整性。
60user189
3楼-- · 2019-07-15 03:47
数据类型不一致吧,导致数据溢出了。不建议在单片机进行浮点数的运算,
huazhe
4楼-- · 2019-07-15 07:35
看不懂。
“采样的值虽然上下有点波动,但是能在接受的范围内。不过,开启ADC之后却发现数值计算居然都算不对了” 怎么有种病句的赶脚?

不妨简化下代码,先别DMA了。先保证ADC转换正确后再启动DMA传输。

一周热门 更多>