前言
芯片包含数量有限的引脚,其中大多数具有多个信号选项。这些信号到引脚和引脚到信号选项由输入输出多路复用器选择称为IOMUX。IOMUX还用于配置其他引脚特性,例如电压电平、驱动强度和滞后。
imx6芯片利用IOMUX机制来解决引脚复用的问题,其引脚配置方法也有些复杂,它涉及到的寄存器有三类:
PAD控制寄存器:全称SW_PAD_CTL_PAD_GPIO1_IO09,意为GPIO电气参数配置寄存器
MUX控制寄存器:全名是SW_MUX_CTL_PAD_GPIO1_IO09,意为GPIO复用寄存器
Select Input控制寄存器:输入选择寄存器
下面我以GPIO4_IO14这一引脚为例来简单说明:
1.查看原理图:
通过查看IMX6ULLRM.pdf文档,从Chapter 4 External Signals and Pin Multiplexing这一章节中可以看出
GPIO4_IO14这个引脚不止一个功能,因此要使GPIO4_IO14实现读取低电平的功能,需要对其进行配置
从核心板原理图上可以看出,GPIO4_IO14这个引脚默认是配置成NAND_CE1_B引脚(功能不详)。因此需要重新对这个引脚进行配置。
2.查看芯片手册,查找上述三个控制寄存器:
以NAND_CE1_B为索引进行搜索,可以查找到如下信息:
1)MUX控制寄存器为 IOMUXC_SW_MUX_CTL_PAD_NAND_CE1_B,查看descriptions:
可以观察到NAND_CE1_B对应的MUX控制寄存器为IOMUXC_SW_MUX_CTL_PAD_NAND_CE1_B,而ALT0-ALT8则分别对应了这个GPIO可以复用的功能,0x5对应的就是将GPIO4_IO14复用成GPIO4_IO14。
PAD控制寄存器为IOMUXC_SW_MUX_CTL_PAD_NAND_CE1_B,查看descriptions:
可以看到此寄存器是为NAND_CE1_B准备的。
3)Select Input控制寄存器为IOMUXC_UART3_RTS_B_SELECT_INPUT
可以看出GPIO4_IO14也不需要这个寄存器。
I.MX6ULL的IO作为GPIO 使用步骤
①、使能 GPIO 对应的时钟。
②、设置寄存器 IOMUXC_SW_MUX_CTL_PAD_XX_XX,设置 IO 的复用功能,使其复用为 GPIO 功能。
③、设置寄存器 IOMUXC_SW_PAD_CTL_PAD_XX_XX,设置 IO 的上下拉、速度等等。
④、第②步已经将 IO 复用为了 GPIO 功能,所以需要配置 GPIO,设置输入/输出、是否使用中断、默认输出电平等。
一、CCM Clock Controller Module (时钟控制模块)
想要使用GPIO第一步就是使能GPIO了,CCM就是一个时钟控制器在芯片手册下我们可以先找到他的位置如下。
1.先定位到IMX6ULLRM.pdf目录的第18章
2.找到CCM Clock tree
3.找到GPIOn
4.找到GPIOn后查看对应GPIO组