STM32知识总结–ADC

  • STM32的ADC模块采用了逐次逼近型,速度快,最高可达几十MHz工作频率。一般,为了获得较为准确的采样结果,ADC采样速率建议6分频,不要超过14MHz。

    通常情况下,芯片包括3个12bit的ADC模块,每个模块具有1个ADC控制器,ADC1和ADC2均有16个外部采样通道和2个内部采样通道,ADC3有8个外部通道和5个内部采样通道。3个模块复用16个外部采样输入引脚,也就是说同时最多支持16路外部采样输入。

STM32知识总结--ADC
  • 规则通道的转换顺序由三个寄存器控制:SQR1、SQR2、SQR3

其中SQL[3:0]用来设定使用的通道数,SQn[4:0]代表第n个转换通道,设置顺序时需按顺序,不能跳过。

STM32知识总结--ADC

ADC工作

除了上面讲的规则模式和注入模式外,还有单次模式和连续模式,以及触发源的选择都可通过配置ADC控制寄存器进行设定,同时可以通过控制寄存器的ADON位置位来开启转换。
需要注意的是,规则模式下每个采样通道采样转换数据共用一个数据寄存器ADC_DR,在单ADC模式下,数据存储在寄存器的低16bit,双ADC模式下ADC2的数据存储在寄存器的高16bit。注入模式下有4个数据寄存器ADC_JOFRx,分别对应4个注入通道,存储在寄存器的低16bit。读取寄存器数据可以采用中断响应的方式,或者规则模式下的数据可以直接通过DMA进行存储,需要时调用。

– 几种模式的说明

  • 单次模式:ADC_CR2:ADON=1 & CONT=0 & ADC_CR1_SCAN=0;

    表示某一个ADC通道执行一次转换后停止。

  • 连续模式: ADC_CR2_ADON=1 & CONT=1 & ADC_CR1_SCAN=0;

    表示某一个ADC通道执行一次转换后停止。

  • 单次扫描模式: ADC_CR2_ADON=1 & CONT=0 & ADC_CR1_SCAN=1;

    表示按照规则通道+注入通道设定的顺序依次执行一次转换后停止。

  • 连续扫描模式:ADC_CR2:ADON=1 & CONT=1 & ADC_CR1_SCAN=1;

    表示按照规则通道+注入通道设定的顺序依次循环执行。

    以上模式中,如果ADC_CR1:JAUTO=0即注入通道采用触发模式,则当满足触发条件时,正在实行的规则转换立即复位,插入注入通道的ADC转换,然后继续执行未完成的规则转换;如果ADC_CR1:JAUTO=1即注入通道采用自动模式,则执行完所有规则通道转换后顺次执行注入通道的ADC转换。
    扫描模式下,多通道数据采集必须使用DMA才能获取每个通道的转换值,非DMA时只能采用单通道或者间断模式,使每次转换后都有标志位产生或暂停转换。

  • 规则组间断模式:ADC_CR1:DISCEN=1 & ADC_CR1_JDISCEN=0;

    表示将规则序列中的通道按照ADC_CR1:DISCNUM[2:0]设定的子组通道数分多次执行,每次执行都需要一个触发源触发,当规则序列中所有通道都执行完时才产生一次中断信号。再次触发时从头开始。

  • 注入组间断模式:ADC_CR1:DISCEN=0 & ADC_CR1_JDISCEN=1 & ADC_CR1_JAUTO=0;

    表示将注入序列中的通道按照1次1通道分多次执行,每次执行都需要一个触发源触发,当注入序列中所有通道都执行完时才产生一次中断信号。再次触发时从头开始。不能同时使用自动注入和间断模式。
    必须避免同时为规则和注入组设置间断模式。间断模式只能作用于一组转换。

来源:Fred.弓

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月7日
下一篇 2021年5月7日

相关推荐