【简介】
了解一个芯片对于GPIO 的使用就像学习一门编程语言打印输出"hello world" 一样的入门体验,我们结合芯片手册来了解下GPIO 的配置使用。
S32K3 系列芯片对于GPIO 的管理是通过SIUL2(System Integration Unit Lite2) 模块拉实现的,对应的SIUL2 的框图如下。

从上述框图可以看出S32K3 通过SIUL2 的IOMUX 单元来配置PAD连接至内部的GPIO模块或者其他IP modules,当把某个pad 配置为GPIO功能时,IOMUX 回通过MSCR/IMCR 寄存器配置PAD连接至内部GPIO模块。

从以下 MSCR/IMCR 的寄存器功能框图IMCR 用来输入信号的路由控制(Pin muxing),MSCR 寄存器用来控制PAD 的参数配置(PAD control)

对应MSCR 的寄存器信号控制说明如下:

从寄存器的定义上可以看出MSCR 用于控制PAD 的属性信息,类如上下拉配置

IMCR 用来控制pin 的路由控制输入源的PIN脚

GPIO 功能根据上述的IOMUX 的配置即可将PAD 配置为GPIO引脚,配置为GPIO 功能后软件操作GPIO 的数据寄存器即可控制GPIO 的输出及获取输入的状态。

有了上述的理论基础我们使用S32DS 工具来配置GPIO 输出功能,配置以下PTA22 引脚为输出功能。

S32K3 的GPIO 的驱动是通过DIO 模块来配置加载的,我们在外设中开启DIO 模块。

配置完成后添加如下的测试代码
while(1)
{
volatile uint32_t i = 0x10000,j = 0x20000;
Siul2_Dio_Ip_SetPins(FS26_DEBUG_PORT,1 << FS26_DEBUG_PIN);
while(i--);
Siul2_Dio_Ip_ClearPins(FS26_DEBUG_PORT,1 << FS26_DEBUG_PIN);
while(j--);
}代码与能行后发现GPIO 已经按照预期的被拉高、拉低了

我要赚赏金
