0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用STM32单片机进行ADC间断转换模式的应用实例说明

茶话MCU 来源:未知 2019-08-03 11:50 次阅读

有时我们可能需要对多个ADC通道进行分组转换,组与组之间希望有可调的时间间隔。比方像下面图示的情形。先转换头2个通道,再转换中间2个通道,之后转换最后的2个通道。

如果我们采样查询或中断方式,每转换完2个通道后,然后做后续通道的切换配置再启动AD模块也是可以的。至于那个时间间隔我们往往会使用定时器来协助。显然,这样做有时会显得有点繁琐。

像上面这种情况,我们还可以考虑使用ADC的间断转换模式。即将一个ADC转换通道序列分成几组,每来一次ADC转换触发事件,就转换一组AD通道,这样依次进行直至整个序列转换完毕。

比方,我们用到某ADC模块的CH1/CH2/CH3/CH4/CH5五个通道,将它们分成3组,使用定时器触发ADC。第一次触发时,进行CH1/CH2两个通道的AD转换,第二次触发时进行CH3/CH4两个通道的AD转换,第三次触发时,完成CH5通道的AD转换。 第四次触发时进行跟第一次触发一样的转换,这样循环下去。

不妨基于上面的描述举一个实际的例子演示一下。使用STM32F411-Discovery开发板来做调试验证。用到ADC1模块的从CH1开始的连续5个AD通道,被分成3组。如下图所示。

我们使用定时器更新事件触发ADC转换,第1组与第2组转换之间的间隔、第2组与第3组转换的间隔通过适时调整定时器的计时长短来控制。

我们使用定时器更新事件触发DMA,通过DMA修改ARR的值来调节相邻两组转换之间的时间间隔。另外,ADC的转换结果通过EOC事件触发DMA,并由DMA将转换结果有序地搬到指定的内存空间。

整个ADC序列的5个通道转换完成后,进入ADC的DMA传输完成中断,在中断回调函数里对各个通道的转换结果进行处理。之后,又可以开始下一轮ADC转换。

将上面提到的整个实现过程稍微整理下:

1、ADC转换依靠定时器的更新事件触发,按照间断模式进行分组转换。

2、开启了两路DMA传输,1路用于ADC结果的搬运,另1路用于定时器ARR值的更新。

第1次定时触发事件发生时,完成第一组AD通道【CH1、CH2】的转换,同时触发定时器的DMA传输,修改ARR的值,由其决定第1次触发事件与第2次触发事件的的时间间隔;当第2次定时触发事件发生时,完成第二组AD通道【CH3、CH4】的转换,同时触发定时器的DMA传输,修改ARR的值,以决定第2次触发事件与第3次触发事件的时间间隔;当第3次触发事件发生时,这里只做第3组AD通道【CH5】的转换,不通过DMA对ARR进行修改,其值将在ADC的DMA传输完成中断的回调函数里由用户指定。

下面将整个配置和代码实现的全过程贴出来,以供参考。使用STM32CubeMx工具进行图形化配置,基于ST公司的STM32Cube库来组织代码。

假设第一组AD通道转换后经过0x7000个时间单位触发第二组AD通道的转换,再过0x5000个时间单位触发第三组AD通道转换。【实际应用时,时基参数视具体情况而定】

一、基于CubeMx的配置【RCC/SYS的配置从略】。

1.1TIM3的配置,TIM3的更新事件触发ADC转换,并触发DMA做ARR的更新。

1.2 ADC的配置。【选择5个ADC通道,间断转换模式,启用ADC的DMA传输】

二、生成初始化代码。

基于STM32Cube库,生成基于ARM KEIL MDK集成开发环境的工程代码。

三、添加用户代码。【代码基于STM32Cube库】

首先介绍下用户代码里用到的2个数组,分别是Adc_Value[5]和Data_Arr[2].

其中Adc_Value[5]用来存放ADC通道的的转换结果,Data_Arr[2]用来存放ARR的数据以改变计时周期。二者分别被不同的DMA流访问。

3.1 在main()里添加如下用户代码。

第1行,清除定时器更新事件标志。

红色方框内的两行分别对ADC/TIM3的DMA传输做启动配置。

第4行使能TIM3更新事件的DMA请求。

4、结果验证。

将硬件连接好,编译代码,运行后可以看到转换结果。5个AD通道分为三组按预定时间间隔被依次触发转换,转换结果被DMA搬到指定的内存空间。通过调试器,我们可以看到ADC结果及定时器ARR的相应变化。

小结:这里主要是抛砖引玉似地介绍下STM32芯片ADC间断转换模式,同时用到了定时器和DMA两个外设。希望能给读者带来些参考或启示,将来在自己的开发中变通使用。这几个外设都是STM32芯片最常用、最基础的外设,掌握之后若能灵活使用,会让我们的STM32开发工作更加得心应手。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6037

    文章

    44558

    浏览量

    635361
  • adc
    adc
    +关注

    关注

    98

    文章

    6498

    浏览量

    544666
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    356062
  • 定时器
    +关注

    关注

    23

    文章

    3248

    浏览量

    114824

原文标题:STM32 ADC间断转换模式应用示例

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32和51单片机使用教程之实例说明资料免费下载

    本文档的主要内容详细介绍的是STM32和51单片机使用教程之实例说明资料免费下载包括了:51单片机12864贪吃蛇游戏的设计精讲,
    发表于 10-17 16:53 31次下载
    <b class='flag-5'>STM32</b>和51<b class='flag-5'>单片机</b>使用教程之<b class='flag-5'>实例</b><b class='flag-5'>说明</b>资料免费下载

    单片机教程之单片机应用系统的设计与实例资料说明

    本文档的主要内容详细介绍的是单片机教程之单片机应用系统的设计与实例资料说明主要内容包括了:1 单片机应用系统的设计方法,2
    发表于 12-18 16:48 49次下载
    <b class='flag-5'>单片机</b>教程之<b class='flag-5'>单片机</b>应用系统的设计与<b class='flag-5'>实例</b>资料<b class='flag-5'>说明</b>

    如何实现STM32F407单片机ADC转换

    ADC转换是把外面输入到引脚的电压值转换成数字信号,单片机里面有一个模拟至数字的转换模块,我们可以控制它采集引脚的电压,
    发表于 12-26 15:08 2.7w次阅读
    如何实现<b class='flag-5'>STM32</b>F407<b class='flag-5'>单片机</b>的<b class='flag-5'>ADC</b><b class='flag-5'>转换</b>

    51单片机与计算机进行异步串行通信的实例说明

    本文档的主要内容详细介绍的是51单片机与计算机进行异步串行通信的实例说明
    发表于 08-08 17:33 2次下载
    51<b class='flag-5'>单片机</b>与计算机<b class='flag-5'>进行</b>异步串行通信的<b class='flag-5'>实例</b><b class='flag-5'>说明</b>

    如何配置minicom与51单片机进行串口通信详细实例说明

    本文档的主要内容详细介绍的是如何配置minicom与51单片机进行串口通信详细实例说明
    发表于 07-10 17:40 0次下载
    如何配置minicom与51<b class='flag-5'>单片机</b><b class='flag-5'>进行</b>串口通信详细<b class='flag-5'>实例</b><b class='flag-5'>说明</b>

    使用STM32单片机进行电能测量的资料说明

    本文档的主要内容详细介绍的是设计使用STM32单片机和CS9505进行电能测量的资料说明
    发表于 04-25 08:00 4次下载
    使用<b class='flag-5'>STM32</b><b class='flag-5'>单片机</b><b class='flag-5'>进行</b>电能测量的资料<b class='flag-5'>说明</b>

    使用STM32F103RB单片机实现ADC实验的资料详细说明

    本文档的主要内容详细介绍的是使用STM32F103RB单片机实现ADC实验的资料详细说明
    发表于 04-07 08:00 7次下载
    使用<b class='flag-5'>STM32</b>F103RB<b class='flag-5'>单片机</b>实现<b class='flag-5'>ADC</b>实验的资料详细<b class='flag-5'>说明</b>

    使用单片机实现ADC0832模数转换与LCD显示的C语言实例程序免费下载

    本文档的主要内容详细介绍的是使用单片机实现ADC0832模数转换与LCD显示的C语言实例程序免费下载。
    发表于 03-30 16:49 56次下载

    使用单片机实现ADC0809模数转换与显示的C语言实例免费下载

    本文档的主要内容详细介绍的是使用单片机实现ADC0809模数转换与显示的C语言实例免费下载
    发表于 03-31 11:20 26次下载

    单片机实例--ADC0809 AD转换器基本应用

    单片机实例--ADC0809 AD转换器基本应用(西工大现代电源技术考试)-该文档为单片机实例-
    发表于 09-22 17:34 25次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>实例</b>--<b class='flag-5'>ADC</b>0809 AD<b class='flag-5'>转换</b>器基本应用

    MSP430单片机F54系列的单片机内部的ADC转换实例

    MSP430单片机F54系列的单片机内部的ADC转换实例(深圳核达中远通电源技术开发有限公司招聘)- 这是MSP430
    发表于 09-22 18:47 9次下载
    MSP430<b class='flag-5'>单片机</b>F54系列的<b class='flag-5'>单片机</b>内部的<b class='flag-5'>ADC</b><b class='flag-5'>转换</b><b class='flag-5'>实例</b>

    STM32单片机雨滴模块

    STM32单片机雨滴模块提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录STM32单片机雨滴模块前言一、设备说明二、
    发表于 11-18 20:36 48次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>雨滴模块

    STM32单片机ADC采集

    STM32单片机ADC采集
    发表于 11-18 20:36 75次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>单片机</b><b class='flag-5'>ADC</b>采集

    STM8S单片机进行的光敏电阻ADC转换功能

    使用STM8S单片机进行的光敏电阻ADC转换功能介绍。
    发表于 04-06 14:27 8次下载

    基于STM32单片机ADC使用库文件设计源代码

    基于STM32单片机ADC使用库文件设计源代码
    发表于 04-26 15:07 6次下载