i.MX6ULL GPIO
主要参照《iMX6ULL参考手册》中第 28 章:Chapter 28 General Purpose Input/Output (GPIO)。
一、概述
GPIO通用输入输出外设提供专用的通用引脚,可以配置为输入或输出。
当配置为输出时,可以写入内部寄存器以控制输出引脚上驱动的状态。当配置为输入时,可以通过读取内部寄存器的状态来检测输入的状态。此外,GPIO外围设备可以产生CORE中断。
GPIO是控制芯片IOMUX的模块之一。
GPIO功能通过八个寄存器、一个边缘检测电路和中断产生逻辑提供。
这八个寄存器是:
- Data register (GPIO_DR)
- GPIO direction register (GPIO_GDIR)
- Pad sample register (GPIO_PSR)
- Interrupt control registers (GPIO_ICR1, GPIO_ICR2)
- Edge select register (GPIO_EDGE_SEL)
- Interrupt mask register (GPIO_IMR)
- Interrupt status register (GPIO_ISR)
这些寄存器在GPIO内存MapRegister定义中有详细描述。每个GPIO输入端都有一个专用的边缘检测电路,可以通过软件配置该电路来检测输入信号的上升沿、下降沿、逻辑低电平或逻辑高电平。通过在中断掩码寄存器(GPIO IMR)中设置相应的位,可以选择性地屏蔽边缘检测电路的输出。这些合格的输出被连接在一起以生成两条1位中断线。
- 组合中断指示为GPIOx信号0 - 15
- 组合中断指示GPIOx信号16 - 31
此外,GPIO1提供了对其8个低阶中断源的可见性(即GPIO1中断n,对于n = 0 - 7)。然而,来自其他GPIOx的单个中断指示是不可用的。
GPIO边缘检测将在中断控制单元中进一步描述。
GPIO的整体功能将在GPIO功能描述中进一步描述。
1、结构图
GPIO子系统包含多个GPIO块,可以产生和控制多达32个通用信号。
GPIO软件的框图如图28-2所示。
2、特点
GPIO包括以下特性:
- 通用输入输出逻辑功能
- 使用数据寄存器(GPIO DR)驱动特定的数据输出
- 使用GPIO方向寄存器(GPIO GDIR)控制信号的方向
- 通过读取pad样本寄存器(GPIO PSR),使核心能够对相应输入的状态进行采样。
- GPIO中断功能
- 支持多达32个中断
- 标识中断边缘
- 向SoC中断控制器生成三个active-high中断
二、外部信号
这里的表格描述了GPIO的外部信号。
三、时钟
这里的表描述了GPIO的时钟源。
请参阅时钟控制器模块的时钟设置,配置和门控信息。
四、GPIO功能描述
本节提供了块的完整功能描述。
1、GPIO 功能
当IOMUX设置为GPIO模式时,GPIO信号可以作为通用输入输出。每个GPIO信号可以单独配置为使用GPIO方向寄存器(GPIO GDIR)的输入或输出。
当配置为输出(GPIO GDIR位= 1)时,GPIO数据寄存器(GPIO DR)中的数据位的值被驱动到相应的GPIO上。当一个信号被配置为输入(GPIO GDIR位= 0)时,可以从对应的GPIO PSR位读取输入的状态。
2、GPIO pad 结构
1、输入驱动
输入驱动特性:
- 可选择施密特触发器或CMOS输入模式。
- 在输入接收端输出到核心的缓冲器结构。
- 当IO供应(OVDD)断电时,接收器是三状态的。(接收输出的Keeper保持它以前的状态)。
2、输出驱动
输出驱动特性:
- 可选择CMOS或开式漏极输出类型
- 可选择的下拉保持器使能信号,使能上拉下拉和输出保持器。
- 可选择的上拉电阻22K, 47K, 100K和一个下拉电阻100KOhm。
- 在输出模式下,上拉、下拉和pad保持器被禁用。
- 每个操作模式有七个驱动强度。
- 额外的2位转换速率控制,可在50、100和200兆赫兹IO单元操作范围内选择,降低开关噪声。
1、驱动强度
驱动强度的选择可以使阻抗匹配,得到更好的信号完整性。
2、输出保持
一个简单的锁存器来保存输入值。
3、PU / PD / Keeper Logic
当Keeper使能时,上拉和下拉将被禁用,pad的输出值取决于Keeper。输出保持器由OVDD提供动力。当核心VDD断电或第一个逆变器为三态时,pad的状态可以保持不变。
Keeper 和 Pull 不能同时启用。
4、开漏
开放式漏极是一种电路技术,它允许多个设备在单线上进行双向通信。开式漏极驱动器通常使用一个外部或内部的上拉电阻来保持信号线高,直到设备吸收足够的电流将信号线拉低,通常用于有多个设备的总线。
3、GPIO编程
1、GPIO读模式
读取输入信号的编程顺序如下:
1、配置IOMUX为GPIO模式。
2、配置输入的GPIO方向寄存器。
3、从数据寄存器中读取值。
2、GPIO写模式
驱动输出信号的编程顺序如下:
1、配置IOMUX选择GPIO模式,如果需要通过PSR读取回环 pad 值,也可以启用SION。
2、配置GPIO方向寄存器输出。
3、将值写入数据寄存器。
4、中断控制单元
除了通用的输入输出功能外,GPIO外设中的边缘检测逻辑还可以反映在配置为输入(GDIR位= 0)的给定GPIO信号上是否发生了转换。中断控制寄存器(GPIO_ICR1和GPIO_ICR2)可以用来独立配置每个输入信号的中断条件(低到高过渡、高到低过渡、低或高)。关于GPIO_ICR1和GPIO_ICR2的设置,请参见GPIO内存映射寄存器定义。
中断控制单元由32个中断控制子单元组成,每个子单元处理单个中断线。
五、GPIO内存映射寄存器定义
有8个32位GPIO寄存器。所有寄存器都可以从IP接口访问。仅支持32位访问。
GPIO的内存映射如下表所示。
i.MX6ULL GPIO相关推荐
- 二、点亮LED(GPIO控制)
二.点亮LED(GPIO控制) 文件状态: [ ] 草稿 [ ] 正在修改 [ √ ] 正式发布 文件标识: 当前版本: V1.1 作 者: Skymixos 完成日期: 2022年10月02日 版 ...
- 【正点原子Linux连载】第四十五章 pinctrl和gpio子系统实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- 迅为IMX6ULL开发板Linux学习教程
1800+页使用手册(持续更新)+入门视频教程+实战视频教程 关注VX公众号:迅为电子 , 回复 :终结者,免费获取产品资料 让教程更细致,终结入门难! 所有教程由迅为原创,是迅为工作多年的工程师 ...
- 【i.MX6ULL】驱动开发3——GPIO寄存器配置原理
前面的两篇Linux驱动文章,介绍了字符设备驱动的两种新旧开发方式,并使用一个虚拟的字符驱动来学习字符设备的开发的流程. 本篇起,就要来操作Linux开发板的硬件,首先当然是通过经典的点亮LED灯程序 ...
- 【北京迅为】i.MX6ULL终结者GPIO时钟
如果使用GPIO,我们必须要使能GPIO的时钟.i.MX6 ULL的每个外设的时钟可以独立的使能,我们可以关闭不使用的外设时钟,可以达到节能的目的.如果使用某个外设,我们必须要打开对应的时钟.< ...
- i.MX6ULL驱动开发 | 22 - 使用PCF8574扩展gpio
一.PCF8574 PCF8574是一个 8 bit IO扩展芯片,使用两线I2C通信接口,提供了8位准双向的IO口(P0-P7),包括具有高电流驱动能力的锁存输出,用于直接驱动led.每个准双向I/ ...
- pinctrl 和 gpio 子系统
内容来自<[正点原子]I.MX6U嵌入式Linux驱动开发指南V1.5.2.pdf> 目录 pinctrl 子系统 pinctrl 子系统简介 I.MX6ULL 的 pinctrl 子系统 ...
- NXP(I.MX6uLL) UART串口通信原理————这个未复习
参考:Linux NXP (I.MX6uLL) UART串口通信原理 作者:一只青木呀 发布时间: 2020-09-20 16:48:33 网址:https://blog.csdn.net/weixi ...
- ARM(I.MX6ULL) EPIT定时器中断实验、定时器按键消抖
参考:Linux之ARM (I.MX6ULL) EPIT定时器详解 作者:一只青木呀 发布时间: 2020-09-20 10:03:37 网址:https://blog.csdn.net/weixin ...
最新文章
- 流数据机器学习平台SAMOA简介
- 模拟电路技术之基础知识(一)
- java 方块_哈工大java实验 移动小方块
- 双时隙的工作原理_智能天线工作原理是什么 智能天线技术发展介绍【图文】...
- java map join_HashMap 常见应用:实现 SQL JOIN
- NETCore Bootstrap Admin 通用后台管理权限 [1]: 前后台分离系统简介
- 教你买虚拟主机不会受骗的九个方法
- win10计算机系统慢,升级Win10后电脑变慢了?老电脑装Win7、Win10流畅性测试
- pycharm报错The directory *** is registered as a Git root与 Can't start Git: git.exe
- 《C语言程序设计》单元总结与练习题
- 点滴记录,与技术无关
- Channel 是什么?
- 计算机word考试试题模板,2017年职称计算机考试Word2003巩固练习题13
- 北京做系统的公司有哪些服务器,北京服务器工控机排名
- 【ViewPager的学习】一、简单使用
- 市场调研-全球与中国FFC和FPC电路板连接器市场现状及未来发展趋势
- 对数与指数操作:pow,log,sqrt,exp
- Drupal theme-1
- 计算机更换桌面图标,Win10系统如何更换桌面图标呢?电脑更换桌面程序图标的操作方法...
- 查成绩啦!2021年上半年软考可以查成绩了
热门文章
- 云计算是什么意思,还是先了解一下云计算技术的基本概念
- 数据库中文字段按拼音排序
- HBuilder 详细使用教程
- idea鼠标放大字体设置
- Java锁Synchronized对象锁和类锁区别(搬运)
- python这个语言值得学吗_python和java哪个更值得学
- 永信至诚成功当选CNCERT网络安全应急服务支撑单位
- 轻松实现网页中通过链接跳转到QQ聊天界面,通过链接加QQ群,自动打开聊天对话框等等,包含电脑版和手机版的实现,示例部分Android和iOS的代码
- 【图文详解】canvas插件安装方法及常用插件推荐
- python椭圆拟合_基于直接最小二乘的椭圆拟合(Direct Least Squares Fitting of Ellipses)...