你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

开启ADC之后数值计算出错

[复制链接]
Seven_S 提问时间:2017-1-18 15:22 /
由于实验需要要对一个电压信号进行采样,采样的值虽然上下有点波动,但是能在接受的范围内。不过,开启ADC之后却发现数值计算居然都算不对了,请问有遇到过这样问题的朋友吗?如图所示

计算结果明显不正常

计算结果明显不正常

当我把ADC关掉之后这个结果就正常了,请问是什么原因?ADC里面用DMA进行数据传输的,为了滤波开启了DMA2_Channel4_5_IRQHandler,具体代码见图,求大师指教

2.png
3.png
收藏 1 评论5 发布时间:2017-1-18 15:22

举报

5个回答
wenyangzeng 回答时间:2017-1-18 17:11:42
可能你在DMA中断里处理数据的时候,后续的ADC-DMA还在进行,数据覆盖了原来的部分数据。使数据运算结果出现错误。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

Seven_S 回答时间:2017-1-19 09:57:14
wenyangzeng 发表于 2017-1-18 17:11
可能你在DMA中断里处理数据的时候,后续的ADC-DMA还在进行,数据覆盖了原来的部分数据。使数据运算结果出现 ...

可是像我截图中写的那样,我是写了一个数值的乘法运算,这样应该不存在覆盖什么的吧(一开始我没有在中断里面操作voltage这个变量,只在主程序里面写了一个类似voltage=3.14*10;这样的赋值,但是发现不对)
wenyangzeng 回答时间:2017-1-19 10:30:31
Seven_S 发表于 2017-1-19 09:57
可是像我截图中写的那样,我是写了一个数值的乘法运算,这样应该不存在覆盖什么的吧(一开始我没有在中断 ...

你在中断里做乘法运算有考虑耗时多少?是否出现未做完运算,下一次中断又来了,影响了数据完整性。
ts2000 回答时间:2017-1-19 14:06:56
数据类型不一致吧,导致数据溢出了。不建议在单片机进行浮点数的运算,

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

xmshao 回答时间:2017-1-19 17:03:44
看不懂。
“采样的值虽然上下有点波动,但是能在接受的范围内。不过,开启ADC之后却发现数值计算居然都算不对了” 怎么有种病句的赶脚?

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

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版