小猫爪:i.MX RT1050学习笔记4-IO系统

本文详细介绍了i.MXRT1050微控制器的GPIO系统,包括IOMUX、IOMUXC和IORING的概念及其作用。IOMUX作为多路复用器,控制每个引脚的功能切换;IOMUXC是IO系统的核心,管理IOMUX和电气属性;IORING涉及GPIO的模拟硬件部分,如驱动能力、压摆率、带宽和开漏输出等配置。此外,文章还提及了GPIO的配置步骤和应用实例。
摘要由CSDN通过智能技术生成

小猫爪:i.MX RT1050学习笔记4-IO系统

1 前言

在介绍GPIO之前,不得不先提一下IOMUX和IOMUXC,先简单的介绍一下IOMUX和IOMUXC的关系,简单的来说就是IOMUXC控制着IOMUX,两者相当于是RT1050的两个部件。

2 PAD

因为i.MX RT1050与i.MX6ULL源自一个平台,所外设基本上相同,所以在GPIO上也是沿用了i.MX6ULL一个机制。下图为IO的结构图。
在这里插入图片描述
从上图可以看出整个GPIO结构主要有三个部分,分别是IOMUXC、IOMUX、IORING三个部分,下面我们具体来介绍一下三个部分分别代表着什么。

2.1 IORING

这个部分可以理解成为GPIO的模拟硬件部分,接收来自其他模块的控制数据以及具体通道信号。除了我们常见的方向控制、输出控制等,具体还包括其他的各种电气属性配置,具体包括有 :
①输出部分
a) DSE 驱动能力
DSE 可以调整芯片内部与引脚串联电阻R0 的大小,从而改变引脚的驱动能力。例如,R0 的初始值为260 欧姆,在3.3V 电压下其电流驱动能力为12.69mA,通过DSE 可以把R0 的值配置为原值的1/2、1/3…1/7 等。
b) SRE 压摆率配置
压摆率是指电压转换速率,可理解为电压由波谷升到波峰的时间。增大压摆率可减少输出电压的上升时间。RT1052 的引脚通过SRE 支持低速和高速压摆率这两种配置。
c) SPEED 带宽配置
通过SPEED 可以设置IO 的带宽,分别可设置为50MHz、100MHz 以及200MHz。带宽的意思是能通过这个IO 口最高的信号频率,通俗点讲就是方波不失真,如果超过这个频率方波就变正弦波。但是这个带宽要区别于IO 的翻转速率,IO 的翻转速率的信号来自于GPIO 这个外设,而IO 的带宽只是限制了IO 口引脚的物理特性,IO 口的信号可以来自于内部定时器输出的PWM信号,也可以来自于GPIO 翻转输出的信号,两者相比之下,PWM信号的频率是远远高于GPIO 翻转输出的信号频率。
d) ODE 开漏输出配置
通过ODE 可以设置引脚是否工作在开漏输出模式。在该模式时引脚可以输出高阻态和低电平,输出高阻态时可由外部上拉电阻拉至高电平。开漏输出模式常用在一些通讯总线中,如I2C。
②输入部分
a) HYS 滞后使能
RT1052 的输入检测可以使用普通的CMOS 检测或施密特触发器模式(滞后模式)。施密特触发器具有滞后效应,对正向和负向变化的输入信号有不同的阈值电压,常被用于电子开关、波形变换等场合。
b) 上下拉、保持器的功能。
芯片内部的上拉和下拉电阻可以将不确定的信号钳位在高、低电平,或小幅提高的电流输出能力,上拉提供输出电流,下拉提供输入电流。注意这些上下拉配置只是弱拉,对于类似I2C 之类的总线,还是必须使用外部上拉电阻。RT1052 芯片的电源模块中包含转换器,当转换器停止工作时,保持器会保持输入输出电压。上下拉、保持器可以通过如下属性配置:
PUS 上下拉配置
PUS 可配置项可选为100K 欧下拉以及22K 欧、47K 欧及100K 欧上拉。
 PUE 上下拉、保持器选择
上下拉功能和保持器功能是二选一的,可以通过PUE 来选择。
 PKE 上下拉、保持器配置
上下拉功能和保持器还通过PKE 来控制是否使能。

2.2 IOMUX

IOMUX是RT1050的多路复用器,它控制着每个引脚的信号通道切换。RT1052 的芯片每个GPIO 都通过IOMUX 支持多种功能,例如一个IO 可用于网络外设ENET 的数据接收引脚,也可以被配置成PWM外设的输出引脚,这样的设计大大增加了芯片的适用性,这样可选的功能就是由IOMUX 实现的。IOMUX 相当于增加了多根内部信号线与IO 引脚相连,最多有8 根,也就是说一个IO 最多可支持8 种可选的功能。

2.3 IOMUXC

IOMUXC是整个IO系统的核心部分,不仅控制着IOMUX的信号通道开关,而且还控制着IORING中的各种电气属性。不同于一般MCU,一个寄存器可能控制很多IO口, 对于RT1050,每一个IO口都有两个寄存器,分别是负责配置复用功能的MUX寄存器和负责配置IO电气属性的PAD寄存器。命名规则如下:

控制类型寄存器名称
MUX ModeIOMUXC_SW_MUX_CTL_PAD_XXXX
Pad SettingsIOMUXC_SW_PAD_CTL_PAD_XXXX

上表中,XXXX代表具体IO的引脚名字,例如在NXP官网DEMO板中,使用引脚GPIO_AD_B0_09驱动LED灯,我们则可以在参考手册的IOMUXC 章节中找到它的这两个寄存器:IOMUXC_SW_MUX_CTL_PAD_ GPIO_AD_B0_09 以及IOMUXC_SW_PAD_CTL_PAD_ GPIO_AD_B0_09。
下面以这两个寄存器为例说明一下每个寄存器的作用。
①IOMUXC_SW_MUX_CTL_PAD_ GPIO_AD_B0_09
在这里插入图片描述
在这里插入图片描述
可以看到,该寄存器主要有两个可配置项,分别是SION 和MUX_MODE,其中SION
用于设置引脚在输出模式下同时开启输入通道;MUX_MODE 可配置该引脚为ALT0~ALT7 这8 个复用功能,其中就包括了接下来我们所用的GPIO1_IO09功能,也就是GPIO功能。
②IOMUXC_SW_PAD_CTL_PAD_ GPIO_AD_B0_09
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看出通过配置PAD寄存器就可以配置这个IO的具体电气属性,也就是之前说到的各种属性。

3 GPIO

GPIO就是RT1050众多外设中的其中一个外设,这也是所有MCU最为常见的一个外设,相比较于其他MCU也是相差无几,无外乎配置GPIO的方向、控制GPIO输出电平以及读取GPIO状态,相关寄存器有:

名称描述
GDIR(方向寄存器)GDIR 寄存器的每一个数据位代表一个引脚的方向,对应的位被设置为0 时该引脚为输入模式,被设置为1 时该引脚为输出模式
DR(数据寄存器)DR 数据寄存器直接代表了引脚的电平状态,它也使用1 个数据位表示1 个引脚的电平,每位用1 表示高电平,用0 表示低电平
PSR(引脚状态寄存器)DR 数据寄存器直接代表了引脚的电平状态,它也使用1 个数据位表示1 个引脚的电平,每位用1 表示高电平,用0 表示低电平

4 应用实例

下面我们结合官方的DEMO来介绍一下使用RT1050 GPIO功能的步骤(因为官方DEMO的使用的SDK库操作,封装层较多,在这里就不贴代码了)。
①配置GPIO时钟。(关于GPIO使用的时钟分支大家可以参考官方文档《i.MX RT1050 Processor Reference Manual》中的“Table 14-4. System Clocks, Gating, and Override”查阅,然后进行时钟配置,时钟相关知识大家可参考我的上一篇文章:小猫爪:i.MX RT1050学习笔记3-CCM
②配置IO复用,NXP官方SDK包提供函数IOMUXC_SetPinMux来进行配置,实际操作的是MUX寄存器。
③配置IO电气属性,NXP官方SDK包提供函数IOMUXC_SetPinConfig来进行配置,实际操作的是PAD寄存器。
④配置IO方向以及状态等。

END

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猫爪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值