完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由于实验需要要对一个电压信号进行采样,采样的值虽然上下有点波动,但是能在接受的范围内。不过,开启ADC之后却发现数值计算居然都算不对了,请问有遇到过这样问题的朋友吗?如图所示
当我把ADC关掉之后这个结果就正常了,请问是什么原因?ADC里面用DMA进行数据传输的,为了滤波开启了DMA2_Channel4_5_IRQHandler,具体代码见图,求大师指教 |
|
相关推荐
5个回答
|
|
可能你在DMA中断里处理数据的时候,后续的ADC-DMA还在进行,数据覆盖了原来的部分数据。使数据运算结果出现错误。
|
|
|
|
可是像我截图中写的那样,我是写了一个数值的乘法运算,这样应该不存在覆盖什么的吧(一开始我没有在中断里面操作voltage这个变量,只在主程序里面写了一个类似voltage=3.14*10;这样的赋值,但是发现不对) |
|
|
|
qwe043 发表于 2018-11-28 08:26 你在中断里做乘法运算有考虑耗时多少?是否出现未做完运算,下一次中断又来了,影响了数据完整性。 |
|
|
|
数据类型不一致吧,导致数据溢出了。不建议在单片机进行浮点数的运算,
|
|
|
|
看不懂。
“采样的值虽然上下有点波动,但是能在接受的范围内。不过,开启ADC之后却发现数值计算居然都算不对了” 怎么有种病句的赶脚? 不妨简化下代码,先别DMA了。先保证ADC转换正确后再启动DMA传输。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
621 浏览 1 评论
1962 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1068 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1487 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1924 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 08:29 , Processed in 1.564175 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号