以前在做有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路及不是长时间工作的产品(几天以上不断电)可以考虑。 单路采样时,这两种方法都很可靠。 上面都是理论,下面发个程序说明一下,见附件。 |
【MCU实战经验】STM32F103的uCOSII详细移植
【我与STM32共成长】+入职项目-基于STM32F103ZET6的麦克风测试...
火哥赠书《STM32库开发实战指南——基于STM32F103》收到
基于 CR95HF 的 RFID/NFC 模块
【Nucleo板开发日志】+用SPI总线构建STM32F1和 F302-NUCLEO的双机处理系统
【我为STM32站台】基于STM32F103VB的功率因数表
【DIY】基于STM32F103的音乐频谱树
【DIY】基于STM32F103的低成本WiFi音乐播放系统
【我要show】++STM32F103+祝愿ST的越来越好
【我要show】++STM32F103+祝愿ST的越来越好
STM32 ADCç¨åº.rar
2015-1-6 18:20 上传
点击文件名下载附件
下载积分: ST金币 -119.25 KB, 下载次数: 9, 下载积分: ST金币 -1
STM32 ADCç¨åº
多谢分享