文章目录
- 1. 模块简介
- 2. 主要功能
- 3. 缩略语
- 4. API接口
- 5. 功能介绍
- 5.1. ChannelGroup
- 5.2. Dio_MaskedWritePort
- 6. 序列图
- 6.1.读GPIO电平
- 6.2. 设置GPIO电平
- 7. EB 工具配置
- 7.1.General
- 7.2.DioPort
- 8. 参考资料
1. 模块简介
Dio,全称“Digital Input Output”。Dio模块(Digital Input/Output Driver)是MCAL层(微控制器抽象层)的核心基础驱动,负责对微控制器(MCU)的数字引脚进行标准化、硬件无关的访问与控制。通俗讲就是给Pin和Port做一层抽象,可根据具体功能去命名。
2. 主要功能
- 提供通道(Pin)的读写操作
- 提供端口组(Port)的读写操作
- 提供通道组(一个端口中相邻Pin的组合)的读写操作
- 翻转输出端口状态,周期为T的任务中循环调用,就能得到一个周期2T,50%占空比的方波
备注:Pin相关配置(输入/输出、上拉/下拉、推挽/开漏等配置)均在Port模块完成,Dio模块仅负责数字接口的读写操作
3. 缩略语
4. API接口
备注:除Dio_GetVersionInfo以外,其他函数的参数,均使用Dio_Cfg.h中的宏定义,就不会出现开发错误。
Eg:P00端口的P00.3是LED0的GPIO引脚,对Pin命名时即可考虑端口号 + 功能作为描述。
5. 功能介绍
主要提供数字IO读写相关的操作。此处主要讲一下Dio_ReadChannelGroup、Dio_WriteChannelGroup和Dio_MaskedWritePort三个接口,Channel和Port分别对应硬件的哪个Pin和哪个端口,无特殊讲解。
5.1. ChannelGroup
Dio_ReadChannelGroup、Dio_WriteChannelGroup传入的参数是一个结构体类型地址,而不是简单的某个ChannelId或PortId,此处结构体中包含端口号、掩码、偏移三个参数。通过三个参数去确认具体的哪个Port下的哪些相邻的Pin。
在Ifx的EB配置页面中,偏移固定为0,用户不可配,只能通过掩码确认ID号,例如下面的14对应二进制的1110B,即端口组包括P00.1~P00.3四个引脚。用户使用时同样使用Dio_Cfg.h中的宏定义。
5.2. Dio_MaskedWritePort
非标准接口,作为Dio_WriteChannelGroup的补充,可以同时设置任意不相邻通道的输出电平在工具配置页面只有该功能的使能开关,该接口有PorId、Level、Mask三个参数。
PortId:端口号
Level:uint16类型的变量,bit0bit15分别对应Pxx.0Pxx.15
Mask:需要操作的引脚
6. 序列图
6.1.读GPIO电平
6.2. 设置GPIO电平
7. EB 工具配置
Dio模块简单,只是对Channel、Channel组、Port进行抽象,无太多注意事项。
7.1.General
无特殊讲解,都是针对功能进行裁剪的开关。
7.2.DioPort
根据实际需要增加相应的Port组,一般情况下Port的名字与物理的端口号或某个功能保持一致,增加可读性。
选中某个Port组向下展开后,可配置需要使用的Channel或ChannelGroup。
8. 参考资料
AUTOSAR Mcal Port - 模块介绍 + EB工具配置介绍
General Purpose I/O Ports and Peripheral I/O Lines (Ports)