RK3288 的 GPIO 操作方法

来源:百问网
作者:韦东山
本文字数:938 , 阅读时长:3分钟

  • GPIO: General-purpose input/output , 通用的输入输出口
  • CRU: Clock & Reset Unit (时钟和复位单元)
  • PMU: Power Managerment Unit (电源管理单元)
  • GRF: General Register Files (通用寄存器文件)
RK3288 的 GPIO 模块结构
RK3288 的 GPIO 操作方法文章插图
有 9 组 GPIO(GPIO0~8) , 每组分为最多 4 个小组 port A/B/C/D , 每小组最多 8 个 GPIO 。 理论上每组GPIO 的引脚有 32 个 , 但是实际上并没有那么多 。 比如 GPIO0 只有 GPIO0_A0~A7、GPIO0_B0~B7、GPIO0_C0~C2 这些引脚 。
GPIO 的控制涉及 4 大模块:CRU、PMU、GRF、GPIO 模块本身 。
① CRU 用于设置是否向 GPIO 模块提供时钟:
CRU 的内部结构如下图所示:
RK3288 的 GPIO 操作方法文章插图
可以设置寄存器使能 GPIOx 的时钟:
a. CRU_CLKGATE17_CON 用于控制 GPIO0;
b. CRU_CLKGATE14_CON 用于控制 GPIO1~8
② PMU 用于控制电源:
电源管理单元里 , 有多个电源域(power domain , 简称为 PM) , 在一个域下有多个设备 。
比如 PD_ALIVE , 它下面有这些设备:CRU、GRF、GPIO 1~8、TIMER 或 WDT 。
比如 PD_PMU , 它下面有这些设备:PMU、SRAM(4K)、Secure GRF、GPIO0 。
可见 , GPIO0、GPIO1~8 分属不同的 PM 。
GPIO0、GPIO1~8 都是常供电的 , 它们是否工作取决于其时钟是否使能 。
【RK3288 的 GPIO 操作方法】③ 设置引脚的模式(Mode、功能):
GPIO0 比较特殊 , 为了让其引脚用于 GPIO 功能 , 要设置 PMU 里的相关寄存器 。
GPIO1~8 类似 , 为了让其引脚用于 GPIO 功能 , 要设置 GRF 里的相关寄存器 。
④ GPIO 模块内部:
方向:引脚设置为 GPIO 时 , 可以继续设置寄存器 GPIO_SWPORTA_DDR 确定它是输出引脚 , 还是输入引脚 。
数值:对于输出引脚 , 可以设置寄存器 GPIO_SWPORTA_DR 让它输出高、低电平;
对于输入引脚 , 可以读取寄存器 GPIO_EXT_PORTA 得到引脚的当前电平 。
RK3288 的 GPIO 相关寄存器
RK3288 的 GPIO 操作方法文章插图
「新品首发」STM32MP157开发板火爆预售!首批仅300套
点击“了解更多”阅读更多相关章节