关于AD转换中的数据问题

[复制链接]
1487|12
 楼主| liutongda 发表于 2015-12-19 11:22 | 显示全部楼层 |阅读模式
STM32 ADC中连续转换执行,想问一下,当第1次转换结束的时候,数据是存放到ADC_DR寄存器中,那么此时,如果没有及时把数据读走的话,那么第2次转换结束后,此时,转换得到的AD数据将会放到什么地方?
l科科1987 发表于 2015-12-19 14:39 | 显示全部楼层
不取走就会被覆盖
sepmoon 发表于 2015-12-19 14:45 | 显示全部楼层
寄存器中存放的是转换后的最新数据,也就是说最新的数据会覆盖之前的数据。
为了避免数据被覆盖,一种做法是在转换完成后产生一个中断,在中断函数里将数据存放到自定义的堆栈中,等待其他函数的读取。
jouney316 发表于 2015-12-19 22:18 | 显示全部楼层
标准的操作流程是,只有取走AD值后,才会进行下一次转换
rmbass 发表于 2015-12-20 10:46 | 显示全部楼层
你可以把一定时间内采集到的数据放到数组中,然后进行处理,这样就好多了
haokeer 发表于 2015-12-20 15:31 | 显示全部楼层
多通道多次采集的话,建议用DMA通道,这样就可以避免这个问题了。不过读到的值,还是需要及时处理的。
Classover 发表于 2015-12-20 22:54 | 显示全部楼层
多通道多次采集的话,建议用DMA通道,这样就可以避免这个问题了。不过读到的值,还是需要及时处理的。
manaok12345 发表于 2015-12-21 19:12 | 显示全部楼层
你可以把这些数据存到其他地方,比如SD卡之类的存储器件
tomyoct 发表于 2015-12-23 08:47 | 显示全部楼层
反正是实时的,你可以每次累加,然后取个平均值,这样又好看,又稳定
maninman1981 发表于 2015-12-23 23:00 | 显示全部楼层
建议数据的读取完毕后放到数组中,这样就可以简单的实时保存了。
jouney316 发表于 2015-12-27 11:45 | 显示全部楼层
tomyoct 发表于 2015-12-23 08:47
反正是实时的,你可以每次累加,然后取个平均值,这样又好看,又稳定

实时的滤波是必须的,其实这样速度很快,根本不影响的。
 楼主| liutongda 发表于 2016-1-23 22:15 | 显示全部楼层
jouney316 发表于 2015-12-27 11:45
实时的滤波是必须的,其实这样速度很快,根本不影响的。

用什么滤波方法好点呢?
 楼主| liutongda 发表于 2016-1-23 22:16 | 显示全部楼层
maninman1981 发表于 2015-12-23 23:00
建议数据的读取完毕后放到数组中,这样就可以简单的实时保存了。

我就是准备保存到数组中的,可是内存不够了,保存一个就占4个字节了,好浪费
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

213

帖子

0

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