7、AUTOSAR MCAL入门-实战:I/O驱动组

2023-05-16

在这里插入图片描述

7、AUTOSAR MCAL入门-实战:I/O驱动组

在第三节中有介绍AUTOSARMCAL 抽象分为4个驱动组,分别为:**微控制器驱动组,存储器驱动组,通信驱动组、输入/输出驱动组。**这一节将具体介绍MCAL微控制器驱动组的内容。

在这里插入图片描述

2.4、I/O驱动组

I/O驱动组完成MCU片上以下输入/输出模块的驱动:端口控制(PORT)驱动、数字I/O引脚(DIO)驱动、模式转换(ADC)驱动、PWM驱动、输入捕获(ICU)驱动、输出比较(OCU)驱动。

2.4.1、PORT 驱动

PORT驱动实现片上端口配置和引脚复用的功能,提供配置和初始化MCU所有端口/引脚的服务。如:将引脚配置为通用I/O、ADC、PWM等。

2.4.1.1、PORT常用的API函数

AUTOSAR规范中,PORT模块的常用接口函数有Port_Init(初始化PORT驱动模块)、Port_SetPinDirection(设置引脚输入、输出方向)、Port_RefreshPortDirection(刷新端口方向配置)、Port_GetVersioninfo(返回PORT驱动模块的版本信息)、Port_SetPinMode(设置引脚模式)等。

PORT驱动模块初始化必须在MCU驱动模块初始化之后完成,AUTOSAR MCAL规范给出了初始化PORT驱动模块的标准调用流程:

请添加图片描述

2.4.2、DIO驱动

作为DIO驱动使用的引脚需要先在PORT驱动中配置和初始化,然后才能使用DIO驱动/写引脚上的逻辑状态。

2.4.2.1、DIO常用的API函数

AUTOSAR规范中,Dio模块的常用接口函数有Dio_WriteChannel(写DIO通道状态)、Dio_ReadChannel(读DIO通道状态)、Dio_FlipChannel(变换DIO通道状态)等。

①、Dio_Init()

void Dio_Init(const Dio_ConfigType *ConfigPtr);

功能:初始化DIO驱动模块;

参数:const Dio_ConfigType *,由于Dio模块只有Per Compile模式,所以其传入参数必须为NULL_PTR;

返回值:void。

Dio_Init(NULL_PTR);

②、Dio_WriteChannel()

void Dio_WriteChannel(const Dio_ChannelType ChannelId,const Dio_LevelType Level);

功能:设置DIO 通道值;

参数:const Dio_ChannelType,即传入DIO通道Id号;const Dio_LevelType,即传入DIO通道状态值,STD_HIGH为1;STD_LOW为0;

返回值:void。

注意:

配置完DioChannel后,在生成MCAL配置代码过程中会在Dio_Cfg.h文件中通过宏定义(#define)的方式将DioChannel Name与DioChannelId关联起来。

③、Dio_ReadChannel()

Dio_LevelType Dio_ReadChannel(const Dio_ChannelType ChannelId);

功能:读取DIO 通道值;

参数:const Dio_ChannelType,即传入DIO通道Id号;

返回值:Dio_LevelType,即返回当前通道状态,STD_HIGH为1;STD_LOW为0。

④、Dio_FlipChannel()

Dio_LevelType Dio_FlipChannel( const Dio_ChannelType ChannelId);

功能:返回当前通道状态;

参数:const Dio_ChannelType,即传入DIO通道Id号;

返回值:Dio_LevelType,即返回当前通道状态,STD_HIGH为1;STD_LOW为0。

2.4.3、ADC 驱动

ADC 驱动实现初始化、控制MCU内部的ADC模块的功能,可以使能触发源发起模数转换,以及关闭触发源停止模数转换。此外,ADC驱动还提供通知机制查询模数转换的状态和结构。

ADC驱动在ADC通道(ADC Channel)的基础上进行。ADC通道把模拟信号输入引脚、所需的ADC电路和转换结果寄存器三部分联系成为一个整体,使其能被ADC驱动所控制与访问。此外,属于同一个ADC硬件单元(ADC HW Unit)的一个或者多个ADC通道,可以组成一个ADC通道组(ADC Channel Group),由同一触发源触发。但一个ADC通道组必须至少包含一个ADC通道。

ADC模块支持以下两种转换模式:

①单次转换(One-Shot Conversion):ADC通道组中每个ADC通道只执行一次转换。

②连续转换(Continuous Conversion):在启动转换后,ADC通道组将会自动重复进行转换,而不需要再次触发。

ADC模块可以选择以下两种触发源:

①软件触发(SW-TRIGGER):ADC通道组通过ADC模块提供的服务来启动/停止转换,其可在上述两种转换模式下使用。

②硬件触发(HW-TRIGGER):ADC通道组通过硬件事件(如边沿触发、定时器等)来启动转换,但该方式只能用于单次转换模式。

AUTOSAR MCAL规范中 ADC 驱动模块初始化API的标准调用流程图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dm00dpOX-1683633393234)(E:\1.NXP_AUTOSAR_S32K1X\4.功能说明\3.AUTOSAR-MCAL 架构简介\9.png)]

2.4.3.1、ADC驱动模块常用API函数

①、Adc_Init()

void Adc_Init(const Adc_ConfigType*pConfigPtr);

功能:初始化 ADC 驱动模块;

参数:const adc_ConfigType*;

返回值:void。

②、Adc_SetupResultBuffer()

Std_ReturnType Adc_SetupResultBuffer(Adc_GroupType Group,Adc_ValueGroupType*pDataBufferPtr);

功能:配置结果缓存;

参数:Adc_GroupType和Adc_ValueGroupType*;

返回值:void。

Adc模块有两种转换结果的访问模式,由以下两个接口函数实现:

③、Adc_ReadGroup()

Std_ReturnType Adc_ReadGroup(Adc_GroupType Group,Adc_ValueGroupType*pDataBufferPtr);

功能:读取模数转换通道组最后一轮模数转换的结果,并存入指定的结果缓存指针中;

参数:Adc_GroupType和Adc_ValueGroupType*;

返回值:Std_ReturnType。

④、Adc_GetStreamLastPointer()

Adc_StreamNumSampleType Adc_GetStreamLastPointer(Adc_GroupType Group,Adc_ValueGroupType**PtrToSamplePtr)

功能:获取结果缓存的最后指针;

参数:Adc_GroupType和Adc_ValueGroupType*;

返回值:Adc_StreamNumSampleType。

ADC通道组启动、停止、转换状态回读相关的接口函数:

⑤、Adc_StartGroupConversion()

void Adc_StartGroupConversion(Adc_GroupType Group)

功能:打开模数转换通道组的所有通道进行模数转换;

参数:Adc_GroupType和Adc_ValueGroupType*;

返回值:void。

⑥、Adc_StopGroupConversion()

void Adc_StopGroupConversion(Adc_GroupType Group)

功能:停止模数转换通道组的所有通道进行模数转换;

参数:Adc_GroupType和Adc_ValueGroupType*;

返回值:void。

⑦、Adc_GetGroupStatus()

Adc_StatusType Adc_GetGroupStatus(Adc_GroupType Group)

功能:获取模数转换通道组的状态;

参数:Adc_GroupType;

返回值:Adc_StatusType,有4种状态,即ADC_IDLE、ADC_BUSY、ADC_COMPLETED、ADC_STREAM_COMPLETED。

2.4.4、PWM 驱动

PWM驱动提供MCU芯片内部PWM模块初始化和控制的功能。PWM驱动定义的PWM通道,都与MCU内部模块的PWM硬件通道对应。PWM驱动能产生可变脉冲的脉冲信号,支持设置占空比和周期。但是,AUTOSAR MCAL规范并未对PWM类型(中心对称PWM、左边对称PWM),PWM类型是由驱动提供商的具体实现方案决定的。

2.4.4.1、PWM驱动模块常用API函数

①、Pwm_Init()

void Pwm_Init(const Pwm_ConfigType*ConfigPtr)

功能:初始化 PWM 驱动模块;

参数:const Pwm_ConfigType*;

返回值:void。

②、Pwm_SetDutyCycle()

void Pwm_SetDutyCycle(Pwm_ChannelType ChannelNumber,uint16 DutyCycle)

功能:设置 PWM驱动模块通道的占空比;

参数:Pwm_ChannelType–PWM通道;

​ uint16–占空比设定值,AUTOSAR规范中规定0x0000对应 0%,0x8000对应100%;

返回值:void。

2.4.5、 ICU 驱动

ICU驱动完成MCU内部输入捕获模块的功能,用于调解PWM信号、脉冲计数、测量信号周期和占空比、产生普通中断和唤醒中断等。ICU驱动提供如下服务:

①、信号边沿检测、产生相应通知;

②、唤醒中断控制;

③、周期信号测量;

④、信号边沿时间戳(用于非周期信号);

⑤、边沿计数;

2.4.5.1、ICU驱动模块常用API函数

①、Icu_Init()

void Icu_Init(const Icu_ConfigType*ConfigPtr);

功能:初始化 ICU驱动模块;

参数:const Icu_ConfigType*;

返回值:void。

②、Icu_GetDutyCycleValues()

void Icu_GetDutyCycleValues(Icu_ChannelType Channel,Icu_DutyCycleType*DutyCycleValues);

功能:获取ICU通道的值;

参数:Icu_ChannelType和Icu_DutyCycleType*,前者为ICU通道,后者为采样结果缓存结构体,其定义如下:

typedef struct
{
 /*<@brief Low or High time value.*/ 
	Icu_ValueType ActiveTime; 
 /*<@brief Period time value.*/
 	Icu_ValueType PeriodTime;    
}Icu_DutyCycleType;

返回值:void。

2.4.6、OCU驱动

OCU驱动完成MCU内部输出比较模块的初始化和控制的功能。OCU驱动中定义的软件通道,与MCU内部的输出比较硬件通道对应。当通用计数器的值与预设阈值匹配时,OCU驱动自动做出相应动作。

由于一些MCU并没有专门的OCU驱动,则是使用通用计数器完成输出比较功能。在AUTOSAR MCAL规范中,并没有规定OCU驱动的硬件架构,只定义了参数和用户接口函数,因此,OCU驱动可以用于任何适合的硬件平台。

OCU驱动提供如下服务:

①、开始、停止通用计数器比较;

②、设置比较阈值;

③、使能、关闭通知机制;

④、获取通用计数器当前值;

⑤、改变输出引脚电平状态;

⑥、触发其他硬件资源(ADC、DMA)

printf("请关注微信公众号:Kevin的学习站,阅读更多关于AUTSAR和自动驾驶嵌入式相关的文章!")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

7、AUTOSAR MCAL入门-实战:I/O驱动组 的相关文章

  • 7、AUTOSAR MCAL入门-实战:I/O驱动组

    7 AUTOSAR MCAL入门 实战 xff1a I O驱动组 在第三节中有介绍AUTOSAR 把MCAL 抽象分为4个驱动组 xff0c 分别为 xff1a 微控制器驱动组 xff0c 存储器驱动组 xff0c 通信驱动组 输入 输出驱
  • Adaptive AutoSAR 标准介绍

    关于自适应AutoSAR 平台 自适应autosar 平台实现了adaptive applications的运营环境 它提供了两种接口 xff0c 一种是service 一种是API 平台功能分成两部分 xff1a service部分和ad
  • 一文读懂AUTOSAR SecOC通讯

    为什么用SecOC 在车载网络中 xff0c CAN总线作为常用的通讯总线之一 xff0c 其大部分数据是以明文方式广播发送且无认证接收 这种方案具有低成本 高性能的优势 xff0c 但是随着汽车网联化 xff0c 智能化的业务需要 xff
  • AUTOSAR——AUTOSAR基础

    一 AUTOSAR AUTOSAR全称为 AUTomotive Open System ARchitecture xff0c 译为 汽车开放系统体系结构 二 AUTOSAR核心思想 1 xff09 提倡 在标准上合作 xff0c 在实现上竞
  • AUTOSAR简介

    1 简介 AUTOSAR全称为 AUTomotive Open System ARchitecture xff0c 译为 汽车开放系统体系结构 xff1b AUTOSAR是一家由汽车电子 半导体和软件行业的汽车制造商 供应商 服务提供商等公
  • AUTOSAR架构的故事(干货)

    1 AUTOSAR架构概览 在新世纪 xff0c 汽车产业蓬勃发展 xff0c 欧洲大陆的车企们 xff0c 瞄准了这是一块大蛋糕 xff0c 于是在2002年成立了一个联盟 xff0c 搞了个叫AUTOSAR的标准 xff0c 以期一统天
  • CP AUTOSAR 简介

    嵌入式系统不支持硬件抽象 xff0c 使得我们每次在进行新的处理器更换之后 都需要进行重新进行底层软件的开发 2003年建立autosar 组织 autosar官方文档非常长2万多页 xff0c 从这里可以看出什么 xff1f 1 auto
  • Adaptive AUTOSAR----Adaptive studio

    Adaptive studio Adaptive Studio 是包含在 RTA VRTE SK 中的 AUTOSAR 编辑器 Adaptive studio 通过高级抽象支持所有 adaptives autosar arxml 元素的配置
  • AP AUTOSAR——Update and Configuration Management UCM

    15 Update and Configuration Management 15 1 What is Update and Configuration Management 更新和配置管理是Adaptive Platform Servic
  • AP AUTOSAR——Network Management

    16 Network Management 16 1 What is Network Management 网络管理是Adaptive Platform Services中的一个功能集群 作为AP AUTOSAR平台的服务 xff0c 网络
  • AP AUTOSAR——Security Management

    11 Security Management 11 1 What is Security Management 安全管理是自适应平台体系结构中的一个功能集群 作为一个功能集群 xff0c 安全管理由多个模块组成 xff0c 这些模块向在Ad
  • Adaptive AUTOSAR 文档官方如何阅读

    目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译 xff0c 不如直接看官方文档更全面深入 Adaptive AUTOSAR 文档官方下载地址 Adaptive Platform AUTOSAR https ww
  • AurixDevStudio集成MCAL

    这是Tricore MCAL安装路径 打开ADS新建一个AURIX Project 我手上的是龙邱的TC377最小系统 就这样选 理解下第一个选项 新建好的基础工程是这个样子 删除掉Library文件夹 因为我们这里要使用的MCAL而不是i
  • [Adaptive Autosar]深入理解--Persistency

    目录 1 Per架构 2 Per初始化 3 Per错误处理 4 多进程访问 5 冗余存储 6 安装和更新per数据 7 Key Value 方式 8 file storage 方式 9 典型使用代码 Persistency模块对比 CP 中
  • 【AUTOSAR】【信息安全】SecOC

    目录 一 概述 二 约束和假设 三 依赖模块 四 功能描述 4 1 安全解决方案的规范 4 1 1 安全解决方案的基本实体 4 1 2 安全的I PDU构建 4 1 3 安全的I PDU验证 4 2 与PduR的关系 4 3 初始化 4 4
  • 【AUTOSAR】【通信安全】CRC

    目录 一 概述 二 功能说明 2 1 通用行为 2 2 8位CRC计算 2 2 1 8位SAE J1850 CRC计算 2 2 2 8位0x2F多项式CRC计算 2 3 16位CRC计算 2 3 1 16位CCITT FALSE CRC16
  • PHY- PHY芯片概述

    1 PHY概述 关于Internet Protocal的分层模型可以参考文章 Internet Protocal OSI模型中的网络分层模型 下面我们讲讲底层以太网控制器和收发器的知识 其主要是处理OSI模型中的物理层和链路层的事情 在CA
  • C/C++语言中的注释:功能、符号和使用方法详解

    目录 引言 注释的功能 注释符号 单行注释 多行注释 注释结尾问题 利用预处理实现多行注释 示例代码和解析 结论 引言 在C语言中 注释是一种非常有用的工具 可以帮助程序员在代码中添加说明 解释和备注 本文将深入探讨注释的功能 不同注释符号
  • SOTA机制详解

    1 SOTA的定义 SOTA即软件在线升级 Software updates Over The Air 是指在不连接烧写器的情况下 通过CAN UART或其它通讯方式 实现应用程序的更新 在进行SOTA时 需要把旧的应用程序擦除 把新的应用
  • 数据类型:C++中的基本数据类型

    数据类型 C 中的基本数据类型 在C 中 数据类型是用于存储不同种类数据的变量类型 C 提供了多种基本数据类型 包括字符型和数值类型 本篇博客将详细介绍C 中的基本数据类型 并提供相应的示例代码 目录 引言 字符型数据类型 2 1 char

随机推荐

  • 成都信息工程大学809考研【软件工程】资料笔记真题~

    软件工程考研学长学姐们考研时自己总结的笔记题库 xff0c 不断完善 xff0c 笔记资料齐全 xff0c 取其精华去其糟粕 xff0c 直接只一套到手即可 xff01 包括考前给大家编写的三套模拟押题卷 xff0c 欢迎对比 xff01
  • 【24考研数学找研友】

    24数学考研 听说今年数学考研好难呀 xff0c 有没有同学一起考研一起复习的 大家一起看图交流一下
  • 【24北京交通大学901软件工程考研】

    有没有考北京交通大学901软工的同学 xff0c 一起组个队呀 xff0c 相互监督 xff5e 每日打卡学习
  • 【2024海南大学835软件工程考研笔记】

  • python中的装饰器(基础装饰器)

    文章目录 一 前置知识 高阶函数 xff0c 闭包1 高阶函数2 闭包 二 函数装饰器1 什么是装饰器 xff08 原理 xff09 xff1f 2 装饰器的实现3 何时执行装饰器4 wraps方法 三 类装饰器 一 前置知识 高阶函数 x
  • python中的装饰器二(带参数的装饰器)

    文章目录 前言 一 被装饰函数带参数二 被装饰函数有返回值三 装饰器带参数四 多个装饰器 前言 看大佬们写的代码看的我是眼花缭乱 xff0c 不知所云啊 真是感叹 xff0c 自己还看都看不懂 xff0c 人家就能写出来了 xff0c 人与
  • STlink、Jlink驱动一直安装失败的解决办法

    STlink Jlink驱动一直安装失败的解决办法 STlink驱动安装失败问题详情 Jlink驱动安装的问题也类似 xff0c 总是有一项安装失败 xff01 xff01 xff01 在经过各种尝试完毕之后 xff0c 怀疑是系统的问题
  • 数据可视化--实验四:地理数据可视化

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 文章目录 概要实验过程Pyecharts实验结果 概要 学院 xff1a 计算机科学与技术学院实验日期 xff1a 2020 10
  • 课设-基于51单片机的智能小车(循迹+避障+APP控制)

    51单片机课设 智能小车 一 课设任务二 硬件设计及相关传感器模块1 车模2 51单片机3 红外循迹模块4 电机及驱动5 蓝牙模块6 硬件搭建 三 程序代码1 main c文件2 motor c文件 四 我的大学 造车 史 注 xff1a
  • 课设-基于51单片机+超声波模块的避障小车(源码+原理图+Protel仿真)

    基于51单片机 43 超声波模块的避障小车 xff08 源码 43 原理图 43 Protel仿真 xff09 一 功能二 模块2 1 电机驱动模块2 2 超声波模块 三 程序代码四 PCB原理图 一 功能 设计一辆利用超声波传感器来实现避
  • 路径规划(一):使用Matlab快速绘制栅格地图

    目录 一 Matlab快速绘制栅格地图1 几种常用的地图形式 xff1a 1 1 尺度地图 xff1a 1 2 拓扑地图 xff1a 1 3 语义地图 xff1a 2 栅格地图用于路径规划的优势 xff1a 3 matlab绘制栅格地图的核
  • 2、无人驾驶--路径规划算法:Dijkstra

    目录 2 Dijkstra2 1 算法简介2 2 算法思路具体流程 xff1a 2 3 算法具体实现2 3 1 程序详解 2 Dijkstra 声明 xff1a 本文是学习古月居 基于栅格地图的机器人路径规划算法指南 黎万洪 后写的笔记 x
  • 毕设--基于51单片机的温度报警器设计

    目录 1 简介2 设计要求与方案论证2 1 设计要求2 2 系统基本方案选择和论证2 2 1 单片机芯片的选择方案和论证2 2 2 温度传感器设计方案论证 2 3 电路设计最终方案决定 3 硬件设计介绍3 1 STC89C51介绍3 1 1
  • 基于51单片机的篮球比赛计时器

    目录 基于51单片机的篮球比赛计时器1 PCB原理图2 仿真图3 毕设要求 xff1a 4 总体方案设计5 程序源码6 资源下载 基于51单片机的篮球比赛计时器 注 xff1a 本毕设资源可在微信公众号 xff1a Kevin的学习站 中获
  • 毕设--基于51单片机数字电压表的设计

    目录 基于51单片机数字电压表的设计1 PCB原理图2 Proteus 仿真图3 设计目标3 1 基本功能3 2 主要技术参数 4 总设计框图5 硬件设计分析5 1 电源的设计5 2 单片机最小系统5 3 模数转换 6 软件设计的组成7 元
  • 基于51单片机的智能温控风扇(程序+仿真+原理图)

    目录 基于51单片机的智能温控风扇1 主要功能2 实验结果3 仿真工程4 原理图5 程序源码6 资源获取 基于51单片机的智能温控风扇 1 主要功能 基于51单片机的智能温控风扇 xff0c 通过DS180温度传感器采集温度 xff0c 并
  • 基于51单片机的八路竞赛抢答器设计

    目录 基于51单片机的八路抢答器设计1 主要功能2 仿真图3 测试图4 程序源码5 资源获取 基于51单片机的八路抢答器设计 1 主要功能 利用STC89C52单片机及外围接口实现的抢答系统 xff1b 在抢答过程中 xff0c 只有启动抢
  • 赛灵思-Zynq UltraScale+ MPSoC学习笔记汇总

    Zynq UltraScale 43 MPSoC学习目录 xff1a 1 赛灵思 Zynq UltraScale 43 MPSoCs xff1a 产品简介 2 赛灵思 Zynq UltraScale 43 MPSoC学习笔记 xff1a P
  • 数据可视化--实验五:高维非空间数据可视化

    声明 xff1a 本文CSDN作者原创投稿文章 xff0c 未经许可禁止任何形式的转载 xff0c 原文链接 文章目录 概要实验过程Pyecharts实验结果平行坐标系room1 6房间人员时长饼图 概要 学院 xff1a 计算机科学与技术
  • 7、AUTOSAR MCAL入门-实战:I/O驱动组

    7 AUTOSAR MCAL入门 实战 xff1a I O驱动组 在第三节中有介绍AUTOSAR 把MCAL 抽象分为4个驱动组 xff0c 分别为 xff1a 微控制器驱动组 xff0c 存储器驱动组 xff0c 通信驱动组 输入 输出驱