从今天开始写博客记录一下imx6ull的学习过程(1)
首先确定一下LED灯的电路图
确定 LED0 与 CPU 的GPIO1_3连接。
IMX6ULL IO配置过程:
配置时钟–>配置引脚的复用功能–>配置引脚的电气属性–>设置数据寄存器的数值以改变高低电平
1.参考手册的第十八章介绍了 imx6ull 的时钟树
其中寄存器 CCGR0–CCGR6 的控制着芯片上所有的时钟配置。如下图:
找到GPIO1控制时钟所对应的控制位,将其设置为打开,这里填入11
不同配置代表的含义
2.配置GPIO1_IO03引脚功能复用
参考手册的第三十二章有详细介绍
看第三个关键字,如果是MUX就是配置复用的 如果是PAD就是配置电气属性的
3.设置GPIO1_IO03的电气属性
上图为配置寄存器,阴影部分的位是保留位。
> HYS位(位16)
这个在IO输入时才有效,用作迟滞延时
>PUS位(位15与位14)
选择引脚上拉和下拉,并确定阻值
PUE位(位13)-----图没有给出来
当 IO 作为输入的时候,这个位用来设置 IO 使用上下拉还是状态保持器。当为 0 的时候使用状态保持器,当为 1 的时候使用上下拉。状态保持器在IO 作为输入的时候才有用,顾名思义,就是当外部电路断电以后此 IO 口可以保持住以前的状态。
PKE(bit12)
此为用来使能或者禁止上下拉/状态保持器功能,为0 时禁止上下拉/状态保持器,为 1 时使能上下拉和状态保持器。
ODE(bit11):
当 IO 作为输出的时候,此位用来禁止或者使能开路输出,此位为 0 的时候禁止开路输出,当此位为 1 的时候就使能开路输出功能。
OD模式打开 ------1
OD模式关闭 ------0
SPEED (bit7 :6)
设置IO引脚的电平翻转速度
DSE(bit5:3):
上图 中的 DSE,当 IO 用作输出的时候用来设置 IO 的驱动能力,总共有 8 个可选选项,当设置为111时,驱动能力最强,但是芯片的功耗也就越大了
SRE(bit0):
设置压摆率,当此位为 0 的时候是低压摆率,当为 1的时候是高压摆率。这里的压摆率就是 IO 电平跳变所需要的时间,比如从 0 到 1 需要多少时间,时间越小波形就越陡,说明压摆率越高;反之,时间越多波形就越缓,压摆率就越低。如果你的产品要过 EMC 的话那就可以使用小的压摆率,因为波形缓和,如果你当前所使用的 IO做高速通信的话就可以使用高压摆率。
4.接下来介绍GPIO 设置
IMX6ULL一共有5组GPIO,每组最多32个引脚
GPIO1 | 0-31 |
---|---|
GPIO2 | 0-21 |
GPIO3 | 0-28 |
GPIO4 | 0-28 |
GPIO5 | 0-11 |
IO设置寄存器一共有八个:
DR、 GDIR、 PSR、 ICR1、 ICR2、 EDGE_SEL、 IMR 和 ISR。前面我们说了 I.MX6U 一共有GPIO1~GPIO5 共五组 GPIO,每组 GPIO 都有这 8 个寄存器。我们来看一下这 8 个寄存器都是什么含义。(控制gpio高低电平,只需修改DR ,GDIR)
DR数据寄存器
图中哪一位为1 那么这一位就输出高电平(前提是GDIR相应的位要为1,即为输出状态)
以上寄存器介绍完毕,下一篇介绍如何编写汇编代码!!!