【CP AUTOSAR】Dio Driver分析和使用


前言

本文介绍CP AUTOSAR 架构下的Dio组件,基于S32K144芯片、NXP提供的MCAL包,使用EB Tresos工具进行配置的经验,不具体介绍芯片GPIO外设的功能。
Dio组件实现MCU的普通IO的读写、翻转,为上层组件IoHwAb提供接口。
Dio组件位于I/O Drivers层里。
在这里插入图片描述


一、原理解析

Dio组件不设置芯片引脚的功能,只提供普通IO读写、翻转功能。
Dio组件所有读写函数是可重入的,可以被上层模块并发访问。
Dio组件支持三种读写:DIO Channles、DIO Ports、DIO Channle Groups,Channle就是某个端口的单个PIN,Port就是整个端口,Channle Group就是某个端口的多个PIN,平常我们使用最多的是DIO Channles。

二、代码架构

Dio组件源文件有Dio.c、Dio_Gpio.c,头文件有Dio.h、Dio_EnvCfg.h、Dio_Gpio.h、Dio_Ipw.h、Reg_eSys_Gpio.h,配置文件有Dio_Cfg.c、Dio_Cfg.h。
其中Dio_Gpio.c实现芯片寄存器的操作,Dio.c封装一层供外部组件使用,Dio_Cfg.h里提供每个Channle、Port ID、Channle Groups的编号。

三、主要变量和类型描述

无。

四、主要代码描述

供外部使用的接口为:
(一)、Dio_ReadChannel、Dio_WriteChannel实现对单个PIN进行读写,入参ChannelId编号在Dio_Cfg.h里,Level为单个PIN的高或低。
(二)、Dio_FlipChannel实现对单个PIN的翻转操作,Channel的ID编号在Dio_Cfg.h里。
(三)、Dio_ReadPort、Dio_WritePort实现对整个Port端口的读写,PortId编号在Dio_Cfg.h里,Level为一组端口的值。
(四)、Dio_ReadChannelGroup、Dio_WriteChannelGroup实现对一组端口里的多个PIN进行读写,ChannelGroupIdPtr在Dio_Cfg.h里,Level为一组端口的值,Dio_ChannelGroupType的port为某个端口的ID号,u8offset为偏移量,mask为Port的掩码。
Dio_WriteChannelGroup和Dio_WritePort最大的区别就是Dio_WritePort对整个端口进行赋值,Dio_WriteChannelGroup则对端口里的多个PIN进行赋值。
.

五、EBTresos配置

主要配置如下:
在这里插入图片描述
主要配置每个端口使用什么PIN脚,Name处填写PIN的名字,Dio Channel Id处填写PIN实际的ID。
PIN的实际ID:
在这里插入图片描述
最后点击生成,Dio_Cfg.h里便有PIN的ID号

六、使用范例

无。

七、参考资料

https://www.autosar.org/fileadmin/standards/R22-11/CP/AUTOSAR_SWS_DIODriver.pdf
https://www.autosar.org/fileadmin/standards/R22-11/CP/AUTOSAR_SRS_DIODriver.pdf
https://www.autosar.org/fileadmin/standards/R23-11/CP/AUTOSAR_CP_EXP_LayeredSoftwareArchitecture.pdf


总结

使用Dio组件之前,必须先使用Port组件对引脚进行初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值