LED硬件基本知识

首先我们都知道LED的基本操作,通过上拉或下拉电阻的方式实现LED的开关,这里不再介绍。那么怎么知道GPIO地址在那个位置1,也就是如何通过位操作来实现硬件的开关呢?

IMX6ULL 的 GPIO 操作方法

GPIO 的控制涉及 4 大模块:CCM、IOMUXC、GPIO 模块本身,框图如下:

GPIOx为GPIO group,里面包换不同个数的引脚,有芯片手册来看:

 GPIO时钟配置:

GPIOx 要用 CCM_CCGRy 寄存器中的 2 位来决定该组 GPIO 是否使能。哪组 GPIO 用哪个 CCM_CCGR 寄 存器来设置,请看上图红框部分

 00:该 GPIO 模块全程被关闭 ②

01:该 GPIO 模块在 CPU run mode 情况下是使能的;在 WAIT 或 STOP 模式下,关闭

10:保留

11:该 GPIO 模块全程使能 

以CCRG1为例

 

IOMUX Controller:

选择功能:

 IOMUXC_SW_MUX_CTL_PAD_<PADNAME> :Mux pad xxx,选择某个 pad 的功能

IOMUXC_SW_MUX_CTL_GRP_<GROUP NAME>:Mux grp xxx,选择某组引脚的功能

 配置上下拉电阻

IOMUXC_SW_PAD_CTL_PAD_<PAD_NAME>:pad pad xxx,设置某个 pad 的参数

IOMUXC_SW_PAD_CTL_GRP_<GROUP NAME>:pad grp xxx,设置某组引脚的参数

 

当然还有读写功能以及方向配置:

① 设置 CCM_CCGRx 寄存器中某位使能对应的 GPIO 模块 // 默认是使能的,上图省略了

② 设置 IOMUX 来选择引脚用于 GPIO

③ 设置 GPIOx_GDIR 中某位为 0,把该引脚设置为输入功能

④ 读 GPIOx_DR 或 GPIOx_PSR 得到某位的值(读 GPIOx_DR 返回的是 GPIOx_PSR 的值)

 

posted @ 2023-05-21 13:23  嵌入式小白—  阅读(35)  评论(0编辑  收藏  举报