I.MX6ULL IO初始化流程
以LED0的IO来对应进行初始化,查看原理图对应IO是GPIO1_3
1. 使能时钟
查看I.MX6ULL参考手册
CCM使能时钟管理
查看CCM_CCGR0-6这7个寄存器能够对每一个位的外设时钟进行单独使能,每一个IO用两个位来表示
00为所有模式都不使能,01运行模式时使能,10保留,11所有模式使能。
方便快捷可以直接全部配置为11.
2. IO复用
查看I.MX6ULL参考手册,查看寄存器IOMUXC_SW_MUX_CTL_PAD_GPIO1_I003,第五位为0按模式配置使用,这里默认就行了,低4位为复位,配置为0101就是IO复用了
3. 设置电气属性
IOMUXC_sw_PAD_CTL_PAD_GPIO1_IO03寄存器
查看IMX6ULL参考手册
每一位都有详细说明,对于电气属性寄存器,会有一些其他我们不认识的位,这些位是为一些特殊的应用场合准备的,一般没有相应的工作经验的话可能看不懂,所以只用基础功能即可,包括压摆率、速度、驱动能力、开漏、上下拉等。
4. 配置GPIO功能
设置输入输出。查看I.MX6ULL参考手册
查看IMX6ULL参考手册
DR数据寄存器:此寄存器是32位的,一个GPIO组最大只有32个IO,因此DR寄存器中的每个位都对应一个GPIO。当GPIO被配置为输出功能(由方向控制寄存器配置)以后,向指定的位写入数据那么相应的IO就会输出相应的高低电平。也可以直接向DR寄存器的指定bit写输入1/0来实现GPIO输出高/低电平。
GDIR方向控制寄存器:设置为输入或者输出
PSR:状态寄存器
ICR:和中断有关的寄存器
IMR:中断使能或关闭寄存器
ISR:中断状态寄存器
EDGE_SEL:设置边沿中断,这个寄存器会覆盖ICR1和ICR2的设置,同样是一个GPIO对应一个位。如果相应的位被置1,那么就相当与设置了对应的GPIO是上升沿和下降。
对应只需要设置方向寄存器和数据寄存器即可控制LED0