IMX6UL/6ULL的GPIO操作方法
CCM
:Clock Controller Module(时钟控制模块)
IOMUXC
:IOMUX Controller , IO 复用控制器
GPIO
:General-purpose input/output, 通用的输入输出口
IMX6UL/6ULL的GPIO模块结构
通过查看手册可以得出;
- 有5组GPIO(GPIO1~GPIO5),每组引脚最多有32个,但是可能实际上并没有那么多。
GPIO1有32个引脚:GPIO1_IO0~GPIO1_IO31;
GPIO2有22个引脚:GPIO2_IO0~GPIO2_IO21;
GPIO3有29个引脚:GPIO3_IO0~GPIO3_IO28;
GPIO4有29个引脚:GPIO4_IO0~GPIO4_IO28;
GPIO5有12个引脚:GPIO5_IO0~GPIO5_IO11; - GPIO的控制涉及4大模块:CCM、IOMUXC、GPIO模块本身
CCM用于设置是否向GPIO模块提供时钟
GPIOx
要用CCM_CCGRy 寄存器中的2位来决定该组GPIO是否使能。哪组GPIO用哪个CCM_CCGR寄存器来设置,可以通过上面的红色框部分知道。
CCM_CCGR寄存器中某2位的取值含义如下:
- 00:该GPIO模块全程被关闭
- 01:该GPIO模块在CPU run mode 情况下是使能的;在 WAIT 或 STOP 模式下,关闭
- 10:保留
- 11:该GPIO模块全程使能
GPIO2时钟控制:
GPIO1、GPIO5时钟控制:
GPIO3时钟控制:
GPIO4时钟控制: