[STM32F1] STM32F103 ADC 遇到奇怪问题

[复制链接]
3220|8
 楼主| liang_ke 发表于 2016-12-13 15:02 | 显示全部楼层 |阅读模式
本帖最后由 liang_ke 于 2016-12-14 09:01 编辑

原因已找到,问题出现在时钟配置方面.

使用DMA通道采集两路ADC,后来改成一路了,同样的问题,这个问题是我在几次断电和上电过程中发现的,

ADC和DMA的配置是在网上找和例程,采用DMA中断方式.

仿真时将监控ADC缓冲区数据,每次点仿真复位按钮后,缓冲区数据就有可能改变一次,最终会在两个数据之间交替切换.
不点复位按钮的情况下,这个数据就一直很稳定,不会乱跳.

如下图,
A1.png A2.png

不同转换结果的情况下我都测量了ADC供电和ADC引脚电压,都是相同的,就是说电压没变,数据确变了.从上图可以看出,大了16个AD值

经过检查,发现问题出现在下面两段程序上,注释掉后就不再出现上电ADC数值交替变换的情况了.
//        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//选择FLASH预取指缓存的模,预取指缓存使能
//        FLASH_SetLatency(FLASH_Latency_2);//FLASH操作的延时周期




 楼主| liang_ke 发表于 2016-12-13 15:05 | 显示全部楼层
本帖最后由 liang_ke 于 2016-12-13 15:28 编辑

再上传一组,这次变了15个AD值
B1.png B2.png


加一路内部1.2V参考电压采集,参考电压 那个没跳,另一路ADC,两次差值还是15
C1.png C2.png
  







yhummqj 发表于 2016-12-13 16:24 | 显示全部楼层
仿真时的ADC值很难讲的。AD十几的变化。假设Verf=3.3V,换算过来也就在十几个mv的变化量。同时MCU的VCC是连接仿真器的,并不是说VCC就能够不收到干扰。想做到iAD一位数值都不变,几乎做不到。
xyz549040622 发表于 2016-12-13 16:57 | 显示全部楼层
看整体变化吧,只要这个值一直是稳定的,就认为读数是正确的。也可能有其他参数的影响,比如温度,电源的纹波。
 楼主| liang_ke 发表于 2016-12-13 17:31 | 显示全部楼层
xyz549040622 发表于 2016-12-13 16:57
看整体变化吧,只要这个值一直是稳定的,就认为读数是正确的。也可能有其他参数的影响,比如温度,电源的纹 ...

一直很稳定,但是每次重启后,AD值不同,但是很稳定,
同事之前也写了一段DMA ADC程序,仿真重启,没这问题,同一块板子测试的
我把他程序全部复制到我的程序里,然而也不行.
mmuuss586 发表于 2016-12-13 20:31 | 显示全部楼层
差15还好啊;
可以程序里再加些算法
 楼主| liang_ke 发表于 2016-12-14 07:46 | 显示全部楼层
mmuuss586 发表于 2016-12-13 20:31
差15还好啊;
可以程序里再加些算法

差之毫厘谬以千里
随机出现的,无法通过算法避免
yhummqj 发表于 2016-12-14 15:23 | 显示全部楼层
LZ能具体说说怎么解决的吗?
Brand2 发表于 2016-12-14 21:12 | 显示全部楼层
这个值整体变化是不是稳定的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

33

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部