MCAL系列介绍03-ADC

1. 前言

ADC即Analog-to-Digital Converter 模数转换器,属于MCU IO控制中一种常用的通信方式,通过将变化的模拟信号转换成数字信号,不同的MCU对应的AD采集精度有差别,例如对于12位的变化范围为0-4095,也有支持八位的,精度相对自然就低一些。

在汽车上可能的应用场景如下:
1)采集某些开关、传感器的信号;
2)采集某些输出通道的电压反馈值,并通过该反馈值去做输出通道的诊断,进而判断是否有开路、短路等故障

ADC在Autosar MCAL的位置:
在这里插入图片描述

2. 基本概念

ADC HW Unit:硬件转换单元,即在MCU中具备所有模数转换所需组件的一个单元;
ADC Group:ADC转换组,所有Group中的AD通道触发源相同,且ADC的转换也是以Group为单位进行;
Channel:AD通道,每个AD通道采集的AD值可对应单个或多个Port口。

ADC HW Unit、ADC Group、Channel及Port的对应关系总结如下:
MCU中包含一个或多个ADC HW Unit;
每个HW Unit包含一个或多个ADC Group;
每个ADC Group包含一个或多个Channel;
一个Channel可能对应一个或多个输入Port。

Single-Access:在Buffer中只能保存最近一次的转换结果;
Streaming-Access:在Buffer中可以保存多次采样的结果;

2.1 触发方式

2.1.1 软件触发

即通过调用软件中API直接实现的ADC触发采集,相对简单。

2.1.2 硬件触发

通过ADC硬件触发器如基于ADC定时器或触发器,边缘信号在ADC硬件中内部生成。触发硬件紧密耦合或集成在ADC硬件中,在检测到硬件触发之后,不需要软件来启动ADC信道组转换。例如可以使用PWM上升或下降沿信号来触发ADC转换及采集。

2.2 转换模式

2.2.1 One-shot模式

One-Shot模式及触发ADC采集后只能完成一次转换,转换完成后即进入相应的Notification函数。
在这里插入图片描述

2.2.2 Continuous模式

Continuous模式为:只需要触发一次就可以连续进行AD采集,不需要二次或多次触发。
在这里插入图片描述

2.3 ADC状态机

ADC驱动的状态包括:ADC_IDLE,ADC_BUSY,ADC_COMPLETED,ADC_STREAM_COMPLETED,其中:

ADC_IDLE:即ADC空闲状态,只有在IDLE状态才能开启转换,且在ADC触发下一次ADC采集前需要调用Adc_StopGroupConversion()停止之前未完成的转换,将ADC的状态机回到ADC_IDLE;
ADC_BUSY:即ADC已经启动转换且转换未完成的状态;
ADC_COMPLETED:ADC Group中的所有Channel转换完成后会变成Completed状态,
ADC_STREAM_COMPLETED:该ADC Group中的所有Channel转换完成后会变成Completed状态,全部Buffer缓存完成后变为ADC_STREAM_COMPLETED,此时可调用Adc_ReadGroup()读取转换结果。

以One-Shot HW Trigger StreamAccss转换为例状态机切换过程:
在这里插入图片描述

3. ADC采集过程

以软件触发连续采集及硬件触发单次采集为例,看下ADC转换需要调用的API及其对应的时序关系:

3.1 软件触发连续采集

在软件连续触发采集中其主要过程:
1)调用Adc_EnableGroupNotification()使能对应的中断函数;
2)调用Adc_StartGroupConversion(),开始ADC转换;
3)转换完成后会进中断,在中断中调用Adc_ReadGroup()读取对应的转换结果
4)在连续转换模式中在进入本次中断后会再自动使能下次转换,进下一次中断;
5)采集结束后调用Adc_StopGroupConversion()结束ADC转换。
在这里插入图片描述

3.2 硬件触发单次采集

在硬件单次触发采集中其主要过程:
1)调用Adc_EnableGroupNotification()使能对应的中断函数;
2)调用Adc_EnableHardwareTrigger(),开始硬件触发ADC转换;
3)转换完成后会进中断,在中断中调用Adc_ReadGroup()读取对应的转换结果
4)调用Adc_DisableGroupNotification()关闭对应的中断函数;
5)采集结束后调用Adc_DisableHardwareTrigger()结束硬件触发。
在这里插入图片描述


版权声明:本文为initiallizer原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。