【CP AUTOSAR】Port Driver分析和使用


前言

本文介绍CP AUTOSAR 架构下的Port组件,基于S32K144芯片、NXP提供的MCAL包,使用EB Tresos工具进行配置的经验,不具体介绍芯片端口外设的功能。
Port组件实现MCU的端口的设置,可以设置端口的方向、初始化电平、端口属性、可以设置端口模式为普通IO、ADC、SPI、SCI、PWM等。
Port组件为上层组件IoHwAb提供接口。
Port组件位于I/O Drivers层里。
在这里插入图片描述


一、原理解析

端口组件实现PIN脚的初始化,初始化时可以设置PIN脚的方向、初始电平、是否允许在运行中改变PIN脚方向、是否允许在运行中改变PIN脚模式等。
在端口组件执行初始化后就可以调用Dio组件的函数来对普通GPIO进行读写操作。

二、代码架构

Port组件里有Port_Ipw.c、Port.c、Port_Port_Ci.c源文件,其中Port_Port_Ci.c实现底层寄存器的操作,Port.c实现最后的封装供外部组件使用。

三、主要变量和类型描述

实现端口初始化的就是Port_PBcfg.c里的Port_aPinConfigDefault,Port_aPinConfigDefault的类型就是Port_Port_Ci_PinConfigType:

在这里插入图片描述
在这里插入图片描述
结构体成员Pin为本芯片引脚的实际ID号,可以从芯片原理图看出,从PTA0开始ID号为0,一直到PTE16ID号为144。
在这里插入图片描述
结构体成员u32PCR为实际PCR寄存器的值,PCR寄存器可以设置PIN脚的上下拉、复用功能、IO中断等。
结构体成员u8PDO为本PIN脚设为输出时的初始电平,值为PORT_PIN_LEVEL_LOW_U8便是低电平,值为PORT_PIN_LEVEL_HIGH_U8便是高电平,值为PORT_PIN_LEVEL_NOTCHANGED_U8便是不动作,设置的前提是bGPIO值为TRUE。
结构体成员ePDDir为本PIN脚的方向,值为PORT_PIN_DISABLED不设置,值为PORT_PIN_IN设置输入,值为PORT_PIN_OUT设置输出,值为PORT_PIN_HIGH_Z设置高阻状态,设置的前提是bGPIO值为TRUE。
结构体成员bGPIO为本PIN脚是否进行初始化,值为TRUE,那么初始化本PIN脚的方向、初始电平。

四、主要代码描述

Port_Init()设置引脚的初始化,一般在程序开始便调用进行引脚初始化了。
Port_SetPinMode()设置引脚的模式,入参Pin、Mode的宏定义选择可以在Port_Cfg.h里选择。

五、EBTresos配置

主要配置如下:
在这里插入图片描述
在EB里的配置,选择添加引脚,添加后PortPin Id处填索引号,PortPin Pcr处填芯片引脚的ID号,其他填是否上下拉、引脚方向、初始电平。

六、使用范例

无。

七、参考资料

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


总结

EB里没看到有关于IO中断的配置,但是可以通过手动修改Port_PBcfg.c里的Port_aPinConfigDefault的u32PCR的值来实现IO中断的设置,u32PCR的值就是最终给PORTx_PCRn寄存器赋予的值。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值