rk3399 GPIO的操作方法
-
RK3399 GPIO分为4个大组 0 ~ 4,每个大组分为4个小组(A,B,C,D),比如GPIO0 有 A,B,C,D四个小组,每个小组有A0~A7个gpio
一个GPIO需要三类功能支持:gpio时钟,gpio输入输出,这个pin要设置为gpio功能(复用)
-
GPIO寄存器介绍
数据寄存器,用来设置某一组 (A,B,C,D)的输出高电平还是低电平,Bit0 对应A0,bit7 对应A7,bit8 对应B0,bit16 对应C0,bit24对应D0 以此类推
方向寄存器,用来设置某个引脚方向输入/输出,Bit0 对应A0,bit7 对应A7,bit8 对应B0,bit16 对应C0,bit24对应D0 以此类推
读输入寄存器,用来读取某个寄存器的输入电平。
-
GPIO时钟配置CRU
CRU_CLKGATE_CON31 寄存器第3,4,5为分别设置GPIO2~4时钟
PMUCRU_CLKGATE_CON1 用来设置GPIO0和1的时钟
注意:这些寄存器都有一个 write_mask 位
如果需要设置这个寄存器位0, 要先写入write_mask bit16写入1,才可以给对应的寄存器位写值。如果要设置位3,要先写write_mask位bit19写入1才可以
-
复用设置
先看寄存器图
同样的这些寄存器都有write_enable位。如果要写入bit0,需要先设置bit 16为1
上图设置了GPIO2 A组里面第0个pin,用2位来设置这个引脚的功能