这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【原创】STM32-AD多通道数据采集(非DMA转运)--from不语君子意

共9条 1/1 1 跳转至

【原创】STM32-AD多通道数据采集(非DMA转运)--from不语君子意

工程师
2022-12-05 22:07:57     打赏

AD采样是一种比较常见的功能,可以用于电池电压检测、传感器值读取、信号采集等。STM32的ADC,由于引入了DMA,以及多种触发源,功能自然强大,用法也多种多样。不过在未学习DMA数据转运前,使用AD多通连续转换扫描模式进行数据采集会造成诸如以下问题:

1.在扫描模式下,启动列表且每一个单独的通道转换完成之后,不会产生任何的标志位,也不会触发中断,只有在整个列表都转换完成之后,才会产生一次EOC标志位,才能触发中断。但此时,前面通道的数据已经被覆盖丢失了。

2.AD转换是非常快的(转换一个通道通常只需要几微秒),即如果不能在此时间内成功转运数据,同样也会造成数据丢失的问题,所以在扫描模式下手动转运数据的要求比较高且比较困难。若使用间断模式,在扫描的时候,每转换一个通道就暂停一次,在手动转运数据之后,再继续触发,进行下一次通道转换。此方法仅可通过Delay延时足够长的时间,才可以保证转换完成,但效率较低。

 

那么是不是在没有学习DMA数据转运的情况下就不能进行AD多通道数据采集呢?

答案是能实现,而且非常简单!

我们可以使用AD单次转换、非扫描的模式来实现多通道。即只需要在每次触发转换之前,手动更改一下列表第一个位置的通道就可以了。

比如:第一次转换,先写入通道0,之后触发、等待、读值,第二次转换再把通道0改为通道1,之后触发、等待、读值。以此类推,这样在转换前,先指定通道,再进行转换,便可以轻松的实现AD多通道转换的功能了。

 

程序代码如下所示:

1.png

在OLED上显示AD多通道采样数据:

2.png




院士
2022-12-05 22:44:25     打赏
2楼

看看


专家
2022-12-06 01:33:19     打赏
3楼

感谢楼主的分享,很实用了。


高工
2022-12-06 04:52:41     打赏
4楼

感谢楼主的分享,很实用了。


专家
2022-12-06 06:40:18     打赏
5楼

谢谢分享


专家
2022-12-06 07:24:44     打赏
6楼

谢谢分享


专家
2022-12-06 08:10:54     打赏
7楼

感谢分享,学习了


专家
2022-12-06 08:28:50     打赏
8楼

谢谢分享


专家
2022-12-06 08:37:24     打赏
9楼

感谢分享,学习了


共9条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]