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

SSTM32F103 ADC笔记

[复制链接]
AndyYau-268557 提问时间:2015-1-5 21:08 /
以前在做有AD模块项目的时候遇到几个问题:

1,  ADC配合DMA采样规则是怎样的。

2,  ADC在DMA采可否不连续采样,以提高有效采样使用率和降低功耗。

3,  如何提高有效利用率和降低功耗,并减少CPU的占用时间。

4,  ADC的如何多通道采样。

针对以上几个问题做解答。

ADC的采样模式主要分两个:规则采样和注入采样。规则模式可采样16个通道,注入模式最多只能4个通道。

配合DMA使用时主要是用规则采样模式。在初始化时配置采样端口为规则采样通道即可如下:

列:         ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5);

端口1为规则采样的第一位,239.5的ADC时钟采样周期。

         ADC在DMA下可以不连续采样,既采样一定数据后,关闭ADC及DMA通道。但是这样子存在一些问题。DMA的存储的变量数组中的数据会出现错位问题。

测试过很多方法,包括ADC和DMA一起重新初始化,依然无法解决这个问题。系统只进行一次初始化时,DMA数据无错位现象。 但是对于长时间不关机的产品来说,缺少了几分可靠性。网上也有相关的评测,ADC用DMA工作在强电磁的环境中可能会输出丢失部分数据的可能。

         这里就想到了用中断的方式,进行采样。无法用规则模式,因为只能用单次采样触发中断。由于无法确定第一个通道,这样同样会遇到数据错位的现象。所以这里使用注入模式进行中断出发。



有以下几个优点:

1,  可以最多4路为一组采样,每组采样结束后才产生一次中断,减少了进中断的次数。

2,  在读取数据时几路通道都是预先配置好的。某个变量存放指定某个指定通道。这样永远不可能出现错位现象。

由以总结 在4路及以下通道进行采样时,首选注入模式进行中断采样。超过4路及不是长时间工作的产品(几天以上不断电)可以考虑。

单路采样时,这两种方法都很可靠。

上面都是理论,下面发个程序说明一下,见附件。
收藏 评论7 发布时间:2015-1-5 21:08

举报

7个回答
大器所成 回答时间:2015-1-5 21:45:25
附件呢?
AndyYau-268557 回答时间:2015-1-6 14:53:50
昨晚传不了,网速卡的不行。很抱歉,网络好了立即传。
AndyYau-268557 回答时间:2015-1-6 18:21:27
  抱歉,昨晚网速不好上不去,今晚回家没吃饭先把传上来,谢谢你的关注。

STM32 ADC程序.rar

下载

19.25 KB, 下载次数: 9, 下载积分: ST金币 -1

STM32 ADC程序

490353119 回答时间:2015-1-7 09:34:22

多谢分享
AndyYau-268557 回答时间:2015-1-7 09:57:54
独乐乐不如众乐乐,不客气,帮助别人就是帮助自己。。
vinlumjs 回答时间:2015-1-7 10:07:43
谢谢楼主分享
AndyYau-268557 回答时间:2015-1-7 10:28:19
不客气,请继续关注。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版