【简介】
了解一个芯片对于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 用来输入信号的路由控制,MSCR 寄存器用来控制输出信号的通路控制
对应MSCR 的寄存器信号控制说明如下:
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 已经按照预期的被拉高、拉低了