AUTOSAR图解==>AUTOSAR_SWS_ADCDriver

AUTOSAR ADC驱动模块分析

AUTOSAR ADC Driver 规范和实现详解

目录

  1. AUTOSAR ADC驱动概述
    1.1 ADC驱动在AUTOSAR架构中的位置
  2. ADC驱动配置模型
    2.1 配置结构解析
  3. ADC驱动状态机模型
    3.1 状态机基本结构
    3.2 主要状态转换场景
  4. ADC驱动交互序列
    4.1 主要交互场景分析
    4.2 错误处理机制
  5. 总结

1. AUTOSAR ADC驱动概述

AUTOSAR ADC驱动是AUTOSAR微控制器抽象层(MCAL)的一个关键模块,负责初始化和控制微控制器内部的模数转换器单元。ADC驱动提供了标准化的接口,使上层软件能够访问ADC硬件资源,同时屏蔽了底层硬件的复杂性。

ADC驱动模块主要针对逐次逼近型ADC硬件,不包括Delta Sigma ADC转换用例。该模块基于通道组的概念,提供了启动/停止转换、使能/禁用触发源以及转换结果通知和查询机制。

在这里插入图片描述

图1: AUTOSAR ADC驱动模块架构图

1.1 ADC驱动在AUTOSAR架构中的位置

如上图所示,ADC驱动位于AUTOSAR基础软件层的微控制器抽象层。它向上提供标准化的API接口给RTE和应用层软件,向下控制底层的ADC硬件单元。同时,ADC驱动还与系统服务层的模块(如DET、DEM、ECU状态管理)进行交互,用于错误处理和状态管理。

主要关系包括:

  • 上行接口:向上层软件提供标准化的转换控制和结果访问接口
  • 下行控制:向下直接操作ADC硬件单元
  • 错误处理:与DET模块交互报告开发错误
  • 运行时监控:与DEM模块交互报告运行时错误
  • 状态管理:与ECU状态管理模块交互通知状态变化
  • 资源使用:使用MCU驱动的时钟服务
  • 硬件配置:使用PORT驱动配置ADC引脚

2. ADC驱动配置模型

ADC驱动的配置结构是基于通道和通道组的概念。通道代表物理ADC输入引脚和转换电路,而通道组将一个或多个通道组合起来作为一个可控制单元。

在这里插入图片描述

图2: AUTOSAR ADC驱动配置模型类图

2.1 配置结构解析

ADC驱动的配置结构主要包含以下几个部分:

  1. Adc:顶层配置容器,包含一个或多个配置集以及通用配置参数

  2. AdcGeneral:全局配置参数,例如:

    • 功能API的启用/禁用状态(如DeInit、读取组、硬件触发等)
    • 开发错误检测状态
    • 优先级实现机制(无、仅硬件、仅软件、硬件软件结合)
    • 低功耗状态支持
  3. AdcConfigSet:配置集合,包含硬件单元、通道组和通道的具体配置

  4. AdcChannel:ADC通道配置,定义了通道的基本属性:

    • 通道ID和名称
    • 通道分辨率
    • 参考电压配置
    • 采样时间和转换时间
    • 限值检查功能(如果启用)
  5. AdcGroup:通道组配置,定义如何组织和控制通道:

    • 组ID和名称
    • 组包含的通道列表
    • 转换模式(单次/连续)
    • 触发源类型(软件/硬件)
    • 访问模式(单一/流式)
    • 优先级设置
    • 通知函数指针
  6. AdcHwUnit:硬件单元配置,定义了特定ADC硬件的设置:

    • 硬件ID
    • 预分频值
    • 分辨率
    • 转换类型

通过这种配置模型,AUTOSAR ADC驱动可以灵活适应不同的硬件平台和应用需求,同时保持接口的标准化和一致性。


3. ADC驱动状态机模型

ADC驱动采用状态机模型来管理通道组的转换过程。每个通道组都有自己独立的状态,取决于其配置和当前操作。

在这里插入图片描述

图3: AUTOSAR ADC驱动状态转换图

3.1 状态机基本结构

ADC状态机主要包含以下状态:

  1. ADC_UNINIT:ADC驱动未初始化状态
  2. ADC_INIT:ADC驱动已初始化,但通道组未启动转换
  3. ADC_IDLE:通道组就绪但未进行转换
  4. ADC_BUSY:通道组正在进行转换
  5. ADC_STREAM_COMPLETED:通道组的一轮转换已完成,结果在缓冲区中可用
  6. ADC_COMPLETED:流式转换的特定情况,部分结果已可用

状态转换受以下几个因素影响:

  • 转换模式:单次转换(ONE-SHOT)或连续转换(CONTINUOUS)
  • 触发源:软件触发(SW-TRIGGER)或硬件触发(HW-TRIGGER)
  • 访问模式:单一访问(SINGLE-ACCESS)或流式访问(STREAMING-ACCESS)

3.2 主要状态转换场景

根据不同的配置组合,有几种典型的状态转换场景:

  1. 单次转换-软件触发-单一访问模式

    • 通过Adc_StartGroupConversion从IDLE到BUSY
    • 转换完成后自动到STREAM_COMPLETED
    • 通过Adc_ReadGroupAdc_GetStreamLastPointer返回IDLE
  2. 单次转换-硬件触发-单一访问模式

    • 通过Adc_EnableHardwareTrigger从IDLE到BUSY
    • 当硬件触发事件发生并转换完成后,到STREAM_COMPLETED
    • 通过Adc_DisableHardwareTrigger或读取结果返回IDLE
  3. 连续转换-软件触发-流式访问模式

    • 通过Adc_StartGroupConversion从IDLE到BUSY
    • 当流缓冲区填满时到STREAM_COMPLETED
    • 必须通过Adc_StopGroupConversion停止转换返回IDLE

这种状态机设计确保了ADC转换过程的可控性和可预测性,并且能够处理不同应用场景下的转换需求。


4. ADC驱动交互序列

ADC驱动与应用层和硬件层之间的交互遵循特定的序列模式,这些序列确保了转换过程的正确控制和结果获取。

在这里插入图片描述

图4: AUTOSAR ADC驱动交互序列图

4.1 主要交互场景分析

ADC驱动支持多种转换场景,下面详细分析几种典型场景的交互序列:

4.1.1 软件触发的单次转换,带通知

该场景是最基本的使用模式,应用程序通过软件API调用启动转换,并通过通知回调获知转换完成:

  1. 应用程序调用Adc_Init初始化ADC驱动
  2. 调用Adc_SetupResultBuffer设置结果缓冲区
  3. 调用Adc_EnableGroupNotification启用通知机制
  4. 调用Adc_StartGroupConversion启动转换
  5. ADC硬件完成转换并触发中断
  6. ADC驱动保存结果并调用应用程序提供的通知回调
  7. 应用程序可以通过Adc_ReadGroup读取转换结果
4.1.2 硬件触发的单次转换,流式访问

这种场景适用于需要外部事件触发的转换,如定时器溢出或外部输入边沿:

  1. 应用程序启用硬件触发源(Adc_EnableHardwareTrigger
  2. 硬件事件发生时自动启动转换
  3. 转换完成后,结果存储在流式缓冲区中
  4. 应用程序可以通过Adc_GetStreamLastPointer获取最新结果指针
  5. 完成使用后,应用程序禁用硬件触发(Adc_DisableHardwareTrigger
4.1.3 连续转换模式

连续转换模式适用于需要持续监控模拟信号的场景:

  1. 应用程序启动连续转换(Adc_StartGroupConversion
  2. ADC硬件自动重复执行通道组转换
  3. 每轮转换完成后更新缓冲区并可能触发通知
  4. 应用程序可随时读取最新结果
  5. 需要停止时调用Adc_StopGroupConversion

4.2 错误处理机制

ADC驱动实现了两级错误处理机制:

  1. 开发错误:在开发阶段检测到的错误,如无效参数、API使用顺序错误等,通过DET模块报告
  2. 运行时错误:在运行时检测到的错误,如硬件故障等,通过DEM模块报告

常见的开发错误包括:

  • 驱动未初始化就调用API(ADC_E_UNINIT
  • 使用无效的组ID(ADC_E_PARAM_GROUP
  • 组已在转换中再次启动(ADC_E_BUSY
  • 触发源或转换模式配置错误(ADC_E_WRONG_TRIGG_SRCADC_E_WRONG_CONV_MODE

5. 总结

AUTOSAR ADC驱动模块是连接应用软件和ADC硬件的桥梁,它通过标准化的接口和灵活的配置机制,使上层软件能够方便地利用ADC硬件资源,同时屏蔽了底层硬件的差异性。

该模块的核心特性包括:

  • 资源管理:基于通道组的ADC资源管理和访问机制
  • 多转换模式:支持单次转换和连续转换模式
  • 多触发源:支持软件触发和硬件触发源
  • 灵活访问:支持单一访问和流式访问模式
  • 错误管理:完善的错误检测和处理机制
  • 电源管理:可选的低功耗状态管理

通过状态机实现精确的转换控制,通过标准化的序列交互确保正确的操作流程,ADC驱动为AUTOSAR系统提供了可靠的模拟信号采集能力,为各种应用场景提供支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KaiGer666

慧眼~施主!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值