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

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

3天内不再提示

YTM32B1x系列MCU中ADC的使用

CHANBAEK 来源:嵌入式修炼手册 作者: Major Lin 2023-07-24 10:01 次阅读

ADC全称Analog Digital Convertor,中文名称是模拟数字转换器ADC的主要功能是将外界的模拟形式的连续信号转换成易于数字处理的,数字形式的离散信号。目前ADC主要是将外界输入的模拟电压信号经过采样保持和内部量化形成数字信号

YTM32B1Lx系列芯片内置12bit采样率1MSPS的ADC,在YTM32B1Mx系列芯片,内置ADC采样频率最高可以到2MSPS,采样精度同样为12bit,可以满足汽车上大部分的模拟信号转换需求。L和M系列中的ADC主要是采样速率上有一定差异,在使用方式上基本是一致的,所以后续都统一介绍。

SAR ADC的基本原理

YTM MCU内部ADC采用逐次逼近结构的ADC, Successive-approximation register ADC(SAR ADC), 这种结构的ADC总体面积比较小,功耗比较低,非常适合MCU中的应用场合,典型的SAR ADC结构如下:

图片
ADC SAR框图 From White Flye

在图中:

  • DAC (digital-to-analog converter):数字模拟转换器
  • EOC (end of conversion):结束转换
  • SAR (successive approximation register):连续逼近寄存器,用于存放转换的中间结果和最终结果
  • S/H (sample and hold circuit):采样保持电路
  • Comparator :电压比较器,对数字模拟转换器输出的电压与输入电压进行比较
  • VIN :输入电压
  • VREF :参考电压

SAR ADC是通过内部DAC重建一个逐次逼近于采样保持电路的电压,经过比较器之后产生数字结果,由寄存器保存该结果,并生成下个周期需要的重建电压。经过多次比较之后,我们就得到了ADC的转换结果。

实际设计中,为了灵活适应各种应用,ADC的输入级一般会有一个MUX模块,用于实现多通道的时分复用。

ADC模块框图

YTM32 MCU ADC模块包含SAR ADC转换核心、ADC输入通道复用模块(Channel MUX)、转换控制数字逻辑几个部分。ADC模块的系统框图如下:

图片
ADC模块框图

ADC的模拟通道复用模块相当于一个多选一的开关,开关选通之后,对应的外部通道和内部ADC转换核心连接,这个时候就可以对该通道进行转换。ADC有一部分外部通道是直接连到一些内部模块的输入。比如说内部的一些参考电压,温度传感器的电压输出等等。ADC可以通过这些通道,实现对芯片内部模块的一些监测。

SAR ADC的结构特性使得ADC完成采样之后,外部信号的输入就可以和ADC断开。这对于ADC的时间计算是比较重要的。比如当使用ADC做电机控制电流采样的时候,我们只需要保证在ADC采样时间内信号是稳定的,而不用将转换时间考虑在内。实际上当ADC完成采样之后,即使外部信号出现波动或者出现噪声,对ADC的转换也是没有影响的。

ADC的数字控制逻辑,主要实现对ADC的转换控制和结果保存等相关操作。在ADC中我们内置了一个FIFO可以用于缓存ADC的转换结果。ADC转换结果的读取有中断、DMA和轮询等几种方式。ADC内部还有一个Watch Dog模块, 可以实现对某个或者所有通道电压的持续监测,当通道电压超出预定范围之后,ADC会产生一个特殊的中断上报系统。

另外这个ADC还支持通过降低转换精度提高采样率的方式。这个实际上也是SAR ADC的一个特性。YTM32 MCU中ADC支持12bit、10bit、8bit几种转换精度。

ADC转换时间计算

嵌入式应用中一般对ADC的转换时间比较敏感,因为涉及到软件的周期调度,如果ADC不能在给定的时间内转换结束,那么整个系统调度可能会出现问题。

决定ADC转换时间的主要因素有ADC的时钟选择、ADC的时钟分频以及ADC采样精度、采样时间等有关系。

从SAR ADC的结构框图可以看出,ADC需要依赖一个时钟基准,ADC模块支持通过IPC来选择转换的时钟和分频。而ADC内部还有额外的分频,所以ADC的实际工作频率为:

这里计算的时候分频均代表模块实际分频。

ADC每次转换所需要的时钟数量=ADC的转换精度+ADC采样时间+2,比如ADC转换精度为12,采样时间为2个时钟周期,那么总共需要的转换时间为 12 + 2 + 2 = 16 个时钟周期,假如ADC的实际工作频率为16MHz,那么一次转换所需要的时间就是1us,对应的采样速率就是1MSPS。

目前产品手册上标的都是在12bit模式下的最高转换速率,实际上针对应用对采样速率要求比较高,而采样精度要求不高的情况,可以通过降低采样精度方式提高采样率,比如采样精度降低为8,那么一次转换之需要12个时钟周期,这种情况下M系列ADC最高转换速率可以到2.67MSPS,L系列则为1.33MSPS。

注意,这里采样速率只适用于ADC连续转换模式,当ADC工作在单次转换或者单序列转换模式下,ADC的Trigger输入还需要3~5个时钟,ADC 开了auto off功能之后还需要一个Startup时间,所以这些情况下ADC的转换速率都是有一定的下降的。

ADC的工作模式

YTM32 MCU中ADC主要有三种工作模式和两种触发方式:

typedef enum
{
    ADC_CONV_STEP = 0x00U,   /*!< One channel convert per trigger. */
    ADC_CONV_LOOP = 0x01U,   /*!< One loop convert per trigger. */
    ADC_CONV_CONTINUOUS = 0x02U    /*!< Continuous convert per trigger. */
} adc_sequence_mode_t;
  • ADC_CONV_STEP: ADC每次触发转换一个通道,转换结果放在FIFO,并等待下次触发。转换的通道按照Sequence中设定的顺序依次转换。
  • ADC_CONV_LOOP:ADC每次触发转换一个Sequence(序列),序列的最高长度一般是8个通道,转换后将结果依次写入FIFO,并等待下一次触发。转换结果通过读取FIFO获得,数据的顺序和序列中配置好的顺序相同。这种模式是ADC最常用的一种工作方式,一般都是将需要采集的ADC通道配置到序列中,需要转换的时候通过硬件或者软件触发开始转换,转换结果通过中断或者DMA直接读取一个序列的结果。
  • ADC_CONV_CONTINUOUS:连续转换模式,ADC在触发之后,按照Sequence连续转换,Sequence转换结束之后会自动重新开始。当ADC连续转换时候要注意及时从FIFO中将结果读走,当开启WAIT模式之后,如果数据没有及时读走,ADC会等待结果读取再继续转换。

ADC的两种触发方式指的是硬件触发和软件触发:

  • 硬件触发:ADC在某些事件发生的时候开始ADC转换,事件来源可以是PTU和TMU,比如电机控制中,eTMR可以通过TMU模块触发ADC采样。PTU和TMU的触发选择位于CIM模块。
    • PTU触发,仅部分模块支持,PTU可以将一次触发事件分解成多个触发,一般配合ADC_CONV_STEP模式使用,可以精确控制ADC每个通道的转换点。
    • TMU触发,常用的硬件触发方式,每次出发可以转换一个STEP(单个通道)或者一个LOOP(一个序列)。
  • 软件触发:通过写入ADC的START位来开始ADC的转换

注意:配置ADC硬件触发模式的时候,需要先配置好ADC的工作模式并开启ADC之后再配置硬件触发(TMU或PTU)。

ADC的转换时只会按照Sequence中配置好的顺序进行转换,结果读取也必须按照sequence读取,不支持单独开启序列中的某一个通道,或者单独读取序列中某一个通道的转换结果。

ADC使用注意事项

为了更好的使用芯片内部的ADC模块,应用软件操作ADC时应该注意以下事项:

  1. ADC模块本身由VDDA供电,但是ADC的参考电压默认是VREFH/VREFL(可以软件改动为VDDA),所以ADC正常工作的必要条件是VDDA和VREFH/VREFL供电正常,VREFH和VREFL都要正确连接。
  2. ADC工作在连续转换模式时,ADC输出结果要及时通过中断或者DMA读走,否则会出现ADC等待数据读取或者ADC转换结果被覆盖的情况。
  3. ADC的两级分频后的时钟不要超频,也就是ADC转换速率不能高于DS中规定的速率,否则ADC虽然可以继续出转换结果,但是结果会有很大的误差。
  4. ADC模块本身支持在低功耗模式下工作,但是如果应用仅需要ADC在RUN模式工作,则进入低功耗模式之前要关闭ADC,或者打开ADC的auto off功能,并在ADC完成当前转换后再进入低功耗模式。ADC在低功耗模式开启情况下,VDDA上会增加1~2mA的电流
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48102

    浏览量

    740093
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16019

    浏览量

    343633
  • 转换器
    +关注

    关注

    27

    文章

    8207

    浏览量

    141838
  • SAR
    SAR
    +关注

    关注

    3

    文章

    358

    浏览量

    45590
  • adc
    adc
    +关注

    关注

    95

    文章

    5651

    浏览量

    539481
收藏 人收藏

    评论

    相关推荐

    带32位MCU和高精度ADC的SoC产品(二)

    带32位MCU和高精度ADC的SoC产品----SD93F系列开发指南(二)
    的头像 发表于 09-22 14:02 2562次阅读
    带32位<b class='flag-5'>MCU</b>和高精度<b class='flag-5'>ADC</b>的SoC产品(二)

    YTM32L系列MCU低功耗模式简介

    YTM32L系列MCU是苏州云途半导体针对车身控制领域推出的入门级32位产品,最高主频达48MHz,内嵌128KB Flash和16KB SRAM,MCU内嵌CAN-FD,LIN等丰富
    发表于 07-24 09:52 779次阅读

    YTM32的模数转换器ADC外设模块详解

    YTM32的ADC转换器外设最多可以集成32个输入通道,最高12b转换精度,最快可以支持2M Sps的12b采样。
    的头像 发表于 10-09 16:35 1208次阅读
    <b class='flag-5'>YTM</b>32的模数转换器<b class='flag-5'>ADC</b>外设模块详解

    MCU系统如何利用ADC技术进行数据采集

    对设计大有帮助,本文将主要关注数据采集系统的捕获阶段。 捕获 复杂的混合信号MCU必须能够从模拟世界捕获某些有用信息,并且能够把连续时间信号转换成离散的数字形式。模数转换器(ADC)是完成这项任务最重
    发表于 12-19 17:10

    基于MSP430x09x系列MCU在电动剃须刀系统的应用

    的情况下,仍继承了MSP430系列单片机原有的优秀特性和丰富外设,并开创性的设计了功能丰富的模拟功能模块—模拟功能池(A-Pool)。本文将介绍MSP430x09x系列MCU在电动剃须
    发表于 07-17 08:25

    微原厂代理CMS89F61x系列/8位RISC内核MCU 带技术支持

    CMS89F61x系列MCU提供完善的触摸库支持,主要应用于面包机、电饭煲、以及移动空调等小家电领域。CMS89F61x系列
    发表于 08-24 17:58

    微一级代理CMS89F23x5B

    CMS89F23x5B系列MCU,内置LED、LCD驱动模块、两路USART通讯模块、高精度12位ADC。广泛应用于家电、厨卫电器、生活电器、个人护理等领域。CMS89F23
    发表于 10-21 17:58

    RH850F1x系列MCU有何区别

    问题背景有些用户在向我买RH850F1x开发板之前会询问F1x各个系列或者某两个系列之间MCU有什么差别,因此博主在此将RH850F
    发表于 11-10 09:27

    微混合信号电磁加热MCU CMS89F52x

    应用领域:CMS89F52x系列MCU主要适用于电磁炉等产品领域CMS89F52x系列MCU为C
    发表于 03-11 15:56

    关于STM32L系列MCU adc 测地信号不为0

    关于STM32L011系列MCU adc 测地信号不为0(Analog模拟adc测试为40或更大)如图所示:之前请教很多工程师说 adc
    发表于 12-09 12:51 7次下载
    关于STM32L<b class='flag-5'>系列</b><b class='flag-5'>MCU</b> <b class='flag-5'>adc</b> 测地信号不为0

    MPC82系列MCUADC(模数转换)采样代码

    MPC82系列MCUADC(模数转换)采样代码文件下载
    发表于 07-01 10:32 0次下载
    MPC82<b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的<b class='flag-5'>ADC</b>(模数转换)采样代码

    AN4629_STM32L0和STM32L4系列MCUADC硬件过采样应用

    AN4629_STM32L0和STM32L4系列MCUADC硬件过采样应用
    发表于 11-21 17:06 10次下载
    AN4629_STM32L0和STM32L4<b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的<b class='flag-5'>ADC</b>硬件过采样应用

    YTM32B1ME0系列MCU时钟模块介绍

    YTM32 M系列芯片基于32位车规级ARM Cortex-M33内核,CPU全温域主频高达120MHz,提供1.25MB嵌入式闪存,符合ISO26262的ASIL-B等级要求,可靠性
    发表于 07-24 09:55 1020次阅读
    <b class='flag-5'>YTM</b>32B1ME0<b class='flag-5'>系列</b><b class='flag-5'>MCU</b>时钟模块介绍

    华芯微特MCU之TIMER触发ADC

    华芯微特MCU之TIMER触发ADC
    的头像 发表于 09-27 16:21 477次阅读
    华芯微特<b class='flag-5'>MCU</b>之TIMER触发<b class='flag-5'>ADC</b>

    HPM系列MCU 高精度ADC之误差分析和设计指南

    电子发烧友网站提供《HPM系列MCU 高精度ADC之误差分析和设计指南.pdf》资料免费下载
    发表于 09-19 15:45 0次下载
    HPM<b class='flag-5'>系列</b><b class='flag-5'>MCU</b> 高精度<b class='flag-5'>ADC</b>之误差分析和设计指南