can使能上拉 gpio_RK3288 的 GPIO 操作方法

本文介绍了RK3288 SoC的GPIO模块结构,包括9组GPIO,涉及CRU、PMU、GRF和GPIO模块本身。详细阐述了如何通过CRU设置时钟,PMU控制电源,以及GPIO模式设置和内部寄存器的使用,如GPIO_SWPORTA_DDR和GPIO_SWPORTA_DR等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源:百问网

作者:韦东山

本文字数:938,阅读时长:3分钟

  • GPIO: General-purpose input/output,通用的输入输出口
  • CRU: Clock & Reset Unit (时钟和复位单元)
  • PMU: Power Managerment Unit (电源管理单元)
  • GRF: General Register Files (通用寄存器文件)

RK3288 的 GPIO 模块结构

f3f710ac5b0683b3f711d5e72ebbeca5.png

有 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 的内部结构如下图所示:

37421244f1cd5153e02f7d8d36f82400.png

可以设置寄存器使能 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 都是常供电的,它们是否工作取决于其时钟是否使能。

③ 设置引脚的模式(Mode、功能):

GPIO0 比较特殊,为了让其引脚用于 GPIO 功能,要设置 PMU 里的相关寄存器。

GPIO1~8 类似,为了让其引脚用于 GPIO 功能,要设置 GRF 里的相关寄存器。

④ GPIO 模块内部:

方向:引脚设置为 GPIO 时,可以继续设置寄存器 GPIO_SWPORTA_DDR 确定它是输出引脚,还是输入引脚。

数值:对于输出引脚,可以设置寄存器 GPIO_SWPORTA_DR 让它输出高、低电平;

对于输入引脚,可以读取寄存器 GPIO_EXT_PORTA 得到引脚的当前电平。

RK3288 的 GPIO 相关寄存器

2521dcbc6689fd76d55c6def584c4360.png

「新品首发」STM32MP157开发板火爆预售!首批仅300套

点击“了解更多”阅读更多相关章节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值