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的触发输出,时间参数各种独立配置即可。

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

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

    关注

    446

    文章

    47705

    浏览量

    408873
  • adc
    adc
    +关注

    关注

    95

    文章

    5643

    浏览量

    539299
  • STM32
    +关注

    关注

    2239

    文章

    10665

    浏览量

    348518

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

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

收藏 人收藏

    评论

    相关推荐

    请问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

    关于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 519次阅读
    <b class='flag-5'>STM32</b>的<b class='flag-5'>ADC</b>采样与多<b class='flag-5'>通道</b><b class='flag-5'>ADC</b>采样硬件电路图

    基于STM32片内信号的ADC应用演示案例

    很多STM32芯片里往往内置了专用的ADC通道,比方用来测量Vrefint,VBAT的分压或温度传感器的输出电压信号。
    的头像 发表于 01-13 13:42 1099次阅读
    基于<b class='flag-5'>STM32</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>

    51内部ADC通道输出时,输出的都是最后一个通道的值是为什么?

    15的单片机,用内部ADC通道输出,所有通道都是输出最后一个通道的值?是什么原因,哪个寄存器吗 前面的
    发表于 10-27 06:44

    STM32开发板之ADC功能框图讲解

    STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC
    发表于 08-14 12:42 874次阅读
    <b class='flag-5'>STM32</b>开发板之<b class='flag-5'>ADC</b>功能框图讲解

    详解STM32中的ADC

    STM32F103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC
    的头像 发表于 06-26 17:09 4356次阅读
    详解<b class='flag-5'>STM32</b>中的<b class='flag-5'>ADC</b>

    请问M451 ADC如何设置通道依次转换?

    M451,ADC如何设置通道依次转换?比如我想让ADC_CH0,ADC_CH1,ADC_CH5
    发表于 06-26 06:52

    M451系列ADC如何设置通道连续转换?

    M451系列,ADC如何设置通道连续转换?有手册吗?
    发表于 06-25 09:40