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

  • 1 前言
  • 2 PAD
    • 2.1 IORING
    • 2.2 IOMUX
    • 2.3 IOMUXC
  • 3 GPIO
  • 4 应用实例

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 Mode IOMUXC_SW_MUX_CTL_PAD_XXXX
Pad Settings IOMUXC_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

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

  1. 小猫爪:i.MX RT1050学习笔记3-CCM

    小猫爪:i.MX RT1050学习笔记3-CCM 1 前言 2 RT时钟的管理 3 CCM的结构 4 CCM的时钟树 5 时钟模块的具体功能 5.1 生成时钟 5.1.1 时钟源 5.1.2 7个PL ...

  2. 小猫爪:i.MX RT1050学习笔记2-下载

    小猫爪:i.MX RT1050学习笔记2-下载 1 前言 2 Flashloader和FLASH算法 2.1 FLASH算法 2.2 Flashloader 3 下载方式 END 1 前言 在前面介绍 ...

  3. 小猫爪:i.MX RT1050学习笔记7-Power Supply

    小猫爪:i.MX RT1050学习笔记7-Power Supply电源设计 1 前言 2 与电源相关的引脚 3 上电和掉电序列 4 关于片内DCDC模块 5 特殊引脚的处理 6 RT系列芯片由于电源波 ...

  4. 小猫爪:i.MX RT1050学习笔记5-中断NVIC

    小猫爪:i.MX RT1050学习笔记5-中断NVIC 1 前言 2 中断号 3 中断优先级分组和中断优先级 4 相关操作函数 5 应用实例 5.1 RT1050 GPIO中断 5.2 中断配置过程 ...

  5. 小猫爪:i.MX RT1050学习笔记20-安全启动4-实现HAB签名和HAB加密

    小猫爪:i.MX RT1050学习笔记20-安全启动4-实现HAB签名和HAB加密 1 前言 2 准备工作 2.1 下载Flashloader 2.2 下载CST 2.3 安装OpenSSL 3 实战 ...

  6. 小猫爪:i.MX RT1050学习笔记15-FlexSPI-FLASH使用3-KEIL FLASH算法中的使用

    小猫爪:i.MX RT1050学习笔记15-FlexSPI-FLASH使用3-KEIL FLASH算法中的使用 1 前言 2 FLASH算法解析 2.1 初始化Init 2.2 写操作 END 1 前 ...

  7. 小猫爪:i.MX RT1050学习笔记23-FreeRTOS移植之宇宙最详细

    小猫爪:i.MX RT1050学习笔记23-FreeRTOS移植之宇宙最详细 1 前言 2 准备 2.1 下载FreeRTOS源代码 2.2 准备一个RT1050的普通工程 3 移植 3.1 添加文件 ...

  8. 小猫爪:i.MX RT1050学习笔记22-eLCDIF

    小猫爪:i.MX RT1050学习笔记22-eLCDIF 1 前言 2 结构 3 初始化结构体 4 开启一次简单的传输过程 5 PXP END 1 前言 RT1052 系列芯片内部自带一个增强型液晶P ...

  9. 小猫爪:i.MX RT1050学习笔记16-启动流程(Boot Flow)

    小猫爪:i.MX RT1050学习笔记16-启动流程(Boot Flow) 1 前言 2 bootROM的流程 2.1低功耗唤醒启动 2.2 正常启动 2.2.1 Serial Download 2. ...

最新文章

  1. 7714天,王小川正式卸任搜狗CEO!用一瞬间定格永恒
  2. 使用Hexo 搭建 blog过程
  3. like效率 regexp_Oracle 中like效率 正则表达式 浅析
  4. matlab学习-线性规划
  5. mysql备份服务器中的_使用 Shell 备份远程服务器上的 MySQL 数据库到本机
  6. hdu 3836 Equivalent Sets
  7. linux下的setenv使用
  8. 案例集锦|科技赋能,华为云GaussDB助千行百业数字化转型
  9. 神经网络之文本情感分析(四)
  10. 深度学习pytorch基础入门教程(1小时)-自动梯度
  11. vscode源码分析【一】从源码运行vscode
  12. C语言 完数问题求解
  13. matlab 蜗杆轮廓,基于MATLAB的直廓环面蜗杆的可视化
  14. 基于单片机的空气质量监测
  15. iOS苹果内购(详细步骤)
  16. 昨天晚上看了冰川时代三
  17. IPv6技术精要--第12-13章 ICMPv6和邻居发现协议(ND协议)
  18. 这几个用 Pyecharts 做出来的交互图表,领导说叼爆了!
  19. 分享9款“神器级”的网站,你值得拥有!不收藏简直是巨大的损失
  20. java 版本区别,java SE是什么,下载JDK时各个名称的含义

热门文章

  1. 判断用户输入的是否是正确电话号码
  2. git 修改历史信息
  3. Unity获取摄像头权限
  4. 《ClickHouse原理解析与应用实践》读书笔记(1)
  5. Velocity模板语言(VTL):说明
  6. 一阶零输入响应例题_一阶电路的零输入响应的特征方程
  7. ffmpeg 截取视频片段 - python
  8. ant design pro v2 - 权限控制
  9. 微型计算机usb接口工作方式,一种微型计算机的制作方法
  10. Redis Zadd 命令