年前做网站的好处,网站 电信已备案 联通,网站建设以哪种销售方式好,重庆建设管理信息网站一、GPIO模块结构 开始来啃手册了#xff0c;打开我们的imx6ull手册。本章我们编写的是GPIO的#xff0c;打开手册的第28章#xff0c;这一章就有关于IMX6ULL 的 GPIO 模块结构。 mx6ull一共有5 组 GPIO#xff08;GPIO1#xff5e;GPIO5#xff09; GPIO1 有 32 个引脚打开我们的imx6ull手册。本章我们编写的是GPIO的打开手册的第28章这一章就有关于IMX6ULL 的 GPIO 模块结构。 mx6ull一共有5 组 GPIOGPIO1GPIO5 GPIO1 有 32 个引脚GPIO1_IO0~GPIO1_IO31 GPIO2 有 22 个引脚GPIO2_IO0~GPIO2_IO21 GPIO3 有 29 个引脚GPIO3_IO0~GPIO3_IO28 GPIO4 有 29 个引脚GPIO4_IO0~GPIO4_IO28 GPIO5 有 12 个引脚GPIO5_IO0~GPIO5_IO11 往下拉就能看到GPIO配置的寄存器功能框架图。 二、寄存器配置分析 根据上文的模块框图我们知道GPIO 的控制涉及 4 大模块CCM、IOMUXC、GPIO 模块本身。
1、CCM
参考资料芯片手册《Chapter 32: IOMUX Controller (IOMUXC)》
功能CCM 用于设置是否向 GPIO 模块提供时钟
①GPIOx 要用 CCM_CCGRy 寄存器中的 2 位来决定该组 GPIO 是否使能。哪组
GPIO 用哪个 CCM_CCGR 寄存器来设置。前面框图就有显示使能对应GPIO组需要配置的寄存器位。 00该 GPIO 模块全程被关闭 01该 GPIO 模块在 CPU run mode 情况下是使能的在 WAIT 或 STOP模式下关闭 10保留 11该 GPIO 模块全程使能 例如GPIO1、GPIO5 时钟控制 2、IOMUXC
参考资料芯片手册《Chapter 32: IOMUX Controller (IOMUXC)》。
功能引脚的模式(Mode、功能)
框图可以看到IOMUXC分为两个部分。对于某个/某组引脚IOMUXC中有2个寄存器用来设置它:SW_MUX和SW_PAD 1SW_MUX(选择功能)。 对于选择寄存器里面可以选择直接配置一个端口也可以直接对一组引脚进行配置这样子对于我们有时候需要配置多个引脚就可以直接配置一整组io。
(1)IOMUXC_SW_MUX_CTL_PAD_PADNAME Mux pad xxx选择某个 pad 的功能。
(2)IOMUXC_SW_MUX_CTL_GRP_GROUP NAMEMux grp xxx选择某组引脚的功能。
某个引脚或是某组预设的引脚都有8个可选的模式(alternate (ALT)MUX_MODE)。 比如 2SW_PAD设置上下拉电阻等参数 对于设置上下拉电阻等参数寄存器也是可以选择直接配置一个端口或者直接对一组引脚进行配置。
1IOMUXC_SW_PAD_CTL_PAD_PAD_NAMEpad pad xxx设置某个pad的参数。
2IOMUXC_SW_PAD_CTL_GRP_GROUP NAMEpad grp xxx设置某组引脚的参数。 比如 3、GPIO 模块
参考资料芯片手册《Chapter 28: General Purpose Input/Output (GPIO)》
框图如下 这里面我们需要关心3个寄存器
1GPIOx_GDIR设置引脚方向。
每位对应一个引脚1-output0-input。 2GPIOx_DR设置输出引脚的电平。
每位对应一个引脚1-高电平0-低电平 3GPIOx_PSR读取引脚的电平。
每位对应一个引脚1-高电平0-低电平 三、GPIO读写寄存器具体分析。
1、读GPIO。 翻译一下具体步骤为 1设置CCM_CCGRx寄存器中某位使能对应的GPIO模块 // 默认是使能的上图省略了 2设置IOMUX来选择引脚用于GPIO 3设置GPIOx_GDIR中某位为0把该引脚设置为输入功能 4读GPIOx_DR或GPIOx_PSR得到某位的值读GPIOx_DR返回的是GPIOx_PSR的值 2、写GPIO 翻译一下 1设置CCM_CCGRx寄存器中某位使能对应的GPIO模块 // 默认是使能的上图省略了 2设置IOMUX来选择引脚用于GPIO 3设置GPIOx_GDIR中某位为1把该引脚设置为输出功能写GPIOx_DR某位的值。 需要注意的是你可以设置该引脚的loopback功能这样就可以从GPIOx_PSR中读到引脚的有实电平你从GPIOx_DR中读回的只是上次设置的值它并不能反应引脚的真实电平比如可能因为硬件故障导致该引脚跟地短路了你通过设置GPIOx_DR让它输出高电平并不会起效果。