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

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

3天内不再提示

基于STM32多通道ADC综合应用示例

茶话MCU 来源:ST MCU 信息交流 2020-09-08 14:10 次阅读

有人使用STM32芯片产品开发,需用到多个通道的ADC转换。大致需求是这样的:

有2个ADC通道需要每10ms启动一次转换,另外5个通道希望50ms启动一次转换。试问如何实现上述功能比较好。

这里不妨以STM32F302芯片为例,来介绍两种实现上述功能的大致方案以供参考。方案里涉及到ADC规则通道、注入通道的使用、DMA的使用、定时器的灵活使用,具备一定综合性。下面介绍以贴图为主,没法一点一滴做解释了。

第一种方案,我们使用ADC1模块的CH1到CH7连续的7个通通来做AD转换,其中CH6/CH7配置为注入通道【我将其戏称之为插队通道】,另外5个通道配置为规则通道。

其中,规则通道的触发选用TIM1的触发输出信号【TRGO】,注入通道的触发选择TIM1通道4的比较事件。我们将TIM1的计数模式选择向上单向计数模式,计数周期设置为10ms,并开启TIM1_CH4的PWM输出功能,周期也是10ms,这样就可以实现每10ms触发一次注入通道的转换动作。

另外,我们将RCR重复计数寄存器设置为4,即每溢出4+1次则产生一次定时器更新事件,并将其将做为TIM1的TRGO信号,这样就保证了每50ms触发一次规则通道的ADC动作。【注:RCR寄存器只有高级定时器才有】

规则通道的ADC结果通过DMA取走送到指定内存单元,DMA配置为Normal模式。

利用STM32CubeMx进行配置后,添加必要的用户代码。

两个数组分别存放规则通道和注入通道的转换结果。

开启TIM1以及通道4的PWM输出;

开启ADC规则通道/注入通道,只待触发信号。

在规则通道的DMA传输完成中断里重启ADC的转换。

编译运行查看结果【下表中分别为规则通道和注入通道结果】:

一路下来,只要各个环节都弄清楚、做到位了还是挺简单的。

当然,TIM1作为高级定时器有时可能有它用,没法用在这里。我们知道,STM32芯片的定时器往往较多,而且很多都可以产生ADC的触发事件,此时我们不妨稍加调整即可得出新方案。

比方还是开篇的应用需求和STM32F3芯片,我们可将规则通道和注入通道的触发事件分别调整为TIM6的触发输出和TIM15的触发输出,时间参数各种独立配置即可。

好,本示例就介绍到这里,文笔不佳,但求行文简捷。实现方案也不是唯一的,最终要结合具体应用场景和所选择的芯片型号。在此只希望能带给大家一些相关应用方面的启示或借鉴。

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

    关注

    453

    文章

    50312

    浏览量

    421479
  • adc
    adc
    +关注

    关注

    98

    文章

    6420

    浏览量

    543983
  • STM32
    +关注

    关注

    2265

    文章

    10860

    浏览量

    354587

原文标题:基于STM32多通道ADC综合应用示例

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

收藏 人收藏

    评论

    相关推荐

    开发用于将四个ADC通道连接到MCU/MPU的自定义通道SPI

    电子发烧友网站提供《开发用于将四个ADC通道连接到MCU/MPU的自定义通道SPI.pdf》资料免费下载
    发表于 09-02 10:12 0次下载
    开发用于将四个<b class='flag-5'>ADC</b><b class='flag-5'>通道</b>连接到MCU/MPU的自定义<b class='flag-5'>多</b><b class='flag-5'>通道</b>SPI

    领慧立芯LHA5115单电源通道24位ΣΔ ADC产品介绍

    领慧立芯LHA5115单电源通道24位ΣΔ ADC产品介绍
    的头像 发表于 08-28 16:55 439次阅读
    领慧立芯LHA5115单电源<b class='flag-5'>多</b><b class='flag-5'>通道</b>24位ΣΔ <b class='flag-5'>ADC</b>产品介绍

    stm32f302和stm32f103的ADC区别是什么?

    请问stm32f302和stm32f103的ADC除了stm32f103有2个ADCADC1和
    发表于 05-15 08:03

    stm32f303采用LL库,4个ADC连续通道扫描,应该如何设置DMA?

    stm32f303,采用LL库,4个ADC连续通道扫描,应该如何设置DMA?ADC转换完DMA传输后,中断处理函数是哪个?
    发表于 04-30 07:06

    STM32L492 DMA通道复用后速度变慢是什么原因导致的?

    我现在用的是STM32L492 DMA2, 一共支持7个通道,其中ADC1,ADC3已经占用了DMA2 3/5两个通道。UART1之前采用中
    发表于 04-29 07:12

    请问STM32L051K6T6 ADC的内部参考电压通道和其他通道不能共用吗?

    最近使用STM32L051K6T6采集信号,单采集内部参考电压是准的,单采集其它通道时也是准的,通道采集其它通道也是准的,但是当内部参考电
    发表于 04-16 06:32

    stm32cubemx建立通道ADC+DMA,想使用DMA中断要怎么实现?

    各位大神: 我在用stm32 cubemx建立ADC+DMA通道,想使用DMA中断,百度了个设置在DMA里增加ADC1,然后在中断里开启D
    发表于 04-02 07:14

    STM32F030K6T6 ADC连续采样通道切换是否会有延时?

    STM32F030K6T6这款芯片只有一个独立的ADC。在我的设计中,ADC时钟设置为12MHz,双通道采样,来回切换(设想中是每个通道采样
    发表于 04-01 07:53

    关于STM32U575 ADC通道采样配置问题求解

    需求:拟用ADC1的IN1~7进行通道采样,其中IN7通过多路复用开关再扩展七个通道,思路是在单个ADC
    发表于 03-26 06:25

    GD32 ADC规则组通道采样,数据发生错位?

    我们知道,使用ADC规则组(常规组)通道采样时,必须要配合DMA使用,但有的小伙伴遇到这种应用下数据错位的情况,比如预设的转换顺序是通道0->通道
    的头像 发表于 03-14 09:58 1989次阅读
    GD32 <b class='flag-5'>ADC</b>规则组<b class='flag-5'>多</b><b class='flag-5'>通道</b>采样,数据发生错位?

    关于STM32G474 ADC通道数据采集遇到的问题求解

    STM32G474 ADC时钟:168MHz/4=42MHz 分辨率 12bit 单端输入 ADC1 采集6通道数据 采样时间6.5cycle 单端1.65V【0~-10mV左右跳动
    发表于 03-14 08:11

    使用STM32L031F6在hal库下进行ADC+DMA通道采集,采集的电压值始终为0的原因?

    使用STM32L031F6芯片 在hal库下进行ADC+DMA通道采集时候,采集的电压值始终为0是什么原因?
    发表于 03-14 07:06

    STM32L496VG通道ADC采样有串扰的原因?

    STM32L496VGADC1,ADC2,ADC3通道同时采集,ADC1,ADC2采样频率2MH
    发表于 03-13 08:03

    STM32ADC采样与通道ADC采样硬件电路图

    每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,表示这个引脚(PC0)可以配置为ADC1的通道10,或者是
    发表于 03-01 12:34 6130次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>ADC</b>采样与<b class='flag-5'>多</b><b class='flag-5'>通道</b><b class='flag-5'>ADC</b>采样硬件电路图

    带通Σ-Δ型ADC及应用示例

    电子发烧友网站提供《带通Σ-Δ型ADC及应用示例.pdf》资料免费下载
    发表于 11-28 09:37 0次下载
    带通Σ-Δ型<b class='flag-5'>ADC</b>及应用<b class='flag-5'>示例</b>