GPIO(General Purpose Input/Output)指通用输入/输出,IMX51的GPIO模块提供32位双向的、通用输入和输出的信号,下图是GPIO的框图:

图1

1.      GPIO概述

GPIO模块提供专用的且可以配置为输入或是输出的通用pin。当GPIO配置为输出,用户可以通过向内部寄存器(DR)写数据来控制输出引脚的状态。当GPIO配置为输入,用户可以通过读取内部寄存器(PSR)来检测输入引脚的状态。

图2

GPIO模块提供8个寄存器、边沿检测电路和中断产生逻辑。

2.      GPIO寄存器描述

GPIO的8个寄存器用下面的结构体描述:

typedef struct

{

UINT32 DR;

UINT32 GDIR;

UINT32 PSR;

UINT32 ICR1;

UINT32 ICR2;

UINT32 IMR;

UINT32 ISR;

UINT32 EDGE_SEL;

} CSP_GPIO_REGS, *PCSP_GPIO_REGS;

2.1  DR数据寄存器

如果IOMUX把对应的PIN设置为GPIO模式,且设置为输出,写到DR中的数据驱动PIN的状态。如果配置为输入,可通过读取DR寄存器来获取响应PIN的状态。为确保同步读取此寄存器,需要两个等待状态。

读取DR寄存器的得到的值取决于IOMUX输入模式设置和相应GDIR位,如下图:

图3

2.2  GDIR数据方向寄存器

GDIR寄存器每一位可以指定每个具体PAD的方向,设置为0表示输入,设置为1表示输出。

图4

2.3  PSR引脚采样寄存器

PSR是只读寄存器,每一位存储了相应PAD的值。此寄存器的值只有在访问的时候才能读取到。

图5

2.4  ICR(ICR1,ICR2)中断控制寄存器

ICR寄存器每2位指定每个相应中断引脚的中断配置,比如低电平触发、高电平触发、上升沿触发和下降沿触发,其中ICR1和ICR2寄存器都支持16个中断,分别对应中断引脚15到0和31到16。

图6

图7

2.5  IMR中断屏蔽寄存器

每一位用于屏蔽中断引脚,当设置为0表示禁用此中断,设置为1表示使能此中断。

图8

2.6  ISR中断状态寄存器

每一位指示中断是否发生,当一个中断产生,也就是ICR寄存器设置的中断条件满足的时候,此寄存器对应位被设置为1。当此中断被处理后,可以通过软件对此位写1来清零。

图9

2.7  EDGE_SEL边沿选择寄存器

支持32个中断的设置,当设置为1,此寄存器的值覆盖ICR寄存器的配置,也就是当设置为1后,GPIO忽略ICR功能及其配置的中断条件,只要有跳变沿,就产生中断。

图10

3.      GPIO编程说明

3.1  读取PAD的值

读取PAD值的编程顺序如下:

⑴配置IOMUX选择GPIO模式。

⑵配置GPIO的GDIR寄存器,使对应的PAD作为输入。

⑶通过读DR寄存器或是PSR寄存器来获取PAD的值。

在GPIO配置为输入时,读取DR寄存器返回的不是DR数据,相反,而是返回PSR数据,对应相应PAD的值。

3.2  向PAD写值

设置PAD值的编程顺序如下:

⑴配置IOMUX选择GPIO模式。

⑵配置GPIO的GDIR寄存器,使对应的PAD作为输出。

⑶向DR寄存器对应位写入需要控制的值。

在GPIO设置为输出时,只能通过读取PSR寄存器来验证PAD的值。

3.3  中断控制单元

除了通用输入/输出功能,GPIO模块中的边沿检测逻辑能够反映出输入GPIO引脚电平的跳变。中断控制单元有32个子中断控制单元,每个子单元处理一个单独的中断引脚。

IMX51---GPIO相关推荐

  1. WINCE6.0下的 IMX51 AC97驱动 简述

    AC97驱动接说明 本驱动使用IMX51的 SSI接口支持的AC97接口,对外接支持AC97 2.0协议的UCB1400芯片. 本驱动能够实现全双工的PCM码率的播放.录制,同时支持多种采样率的PCM ...

  2. STM32 GPIO的原理、特性、选型和配置

    目录 1.基本结构 2.4种输入模式 3.4种输出模式 4.GPIO选型和配置 1.基本结构 STM32 GPIO是通用输入/输出端口的英文简称,其可实现输入.输出.驱动.通信等功能,STM32的I/ ...

  3. STM32低功耗模式下GPIO如何配置最节能?

    目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...

  4. 【驱动】GPIO 作为按键时的 设备树 配置

    #[驱动]GPIO作为按键时的 设备树 配置 0.设备树 0.0 别名 imx6ul.dtsi 什么作用??? /*************开始/ / { aliases {- gpio0 = &am ...

  5. 【驱动】GPIO寄存器配置总结

    #[驱动]GPIO寄存器配置总结 0.设置复用功能为GPIO 1.设置引脚特性,与硬件匹配 2.配置寄存器举例 字段解释: 2.0.SRE 数据位:0 SRE(Slew Rate Field):转换速 ...

  6. linux驱动:设备-总线-驱动(以TI+DM8127中GPIO为例)

    一:说明:这次学习设备-总线-驱动是以TI+DM8127的GPIO为例 1.GPIO资源注册到omap_hwmod链表中 2.初始化GPIO 3.将GPIO注册到plarform层 4.将GPIO注册 ...

  7. linux驱动:TI+DM8127+GPIO(五)之plarform

    五.[GPIO驱动框架>平台platform] (一)设备找驱动 1.drivers/base/platform.c中 int platform_device_register(structpl ...

  8. linux驱动:TI+DM8127+GPIO(四)之设备

    四.[GPIO驱动框架>设备device] arch/arm/mach-omap2/gpio.c中 1.static int __init omap2_gpio_init(void) { ret ...

  9. linux驱动:TI+DM8127+GPIO(三)之omap_hwmod中添加GPIO资源

    三.[GPIO驱动框架>向omap_hwmod中添加GPIO资源] ***将GPIO硬件信息添加到注册到omap_hwmod_list列表中 Arch/arm/plat-omap/include ...

  10. linux驱动:TI+DM8127+GPIO(二)之驱动

    二.[GPIO驱动框架>驱动driver] 重要结构体 gpio_chip:管理一组GPIO gpio_desc:描述每个GPIO gpio_bank:封装了gpio_chip加入GPIO控制的 ...

最新文章

  1. IDEA添加maven并添加阿里镜像
  2. useradd 命令详解 - [命令操作]
  3. Linux - 查看、修改、更新系统时间(自动同步网络时间)
  4. 全国计算机技术与软件专业技术资格(水平)考试基础知识
  5. java数组深拷贝和浅拷贝_java中的深拷贝与浅拷贝(值类型 vs 引用类型)
  6. Python数据类型与运算符号
  7. 荣耀20 PRO差评太多?原来是这个原因,回应:差评不冤
  8. 3从控制台输入三个数,并输出最大值
  9. MySQL 5.6 for Windows 解压缩版配置安装(转)
  10. DB2 常用的SQL
  11. 猫头鹰的深夜翻译:JAVA中异常处理的最佳实践
  12. iis php 知乎,设置 | WeCenter创建你的知乎
  13. T-test检验中的P,α理解
  14. Stata数据处理: 面板数据填充和补漏
  15. php Spreadsheet Csv,使用 PhpSpreadsheet 实现读取写入 Execl
  16. pvsyst 7.1使用教程
  17. 使用 adb logcat 显示 Android 日志
  18. bmp图片的格式详解
  19. Cassandra 简介(一)
  20. 浅谈:为什么vue和react都选择了Hooks?

热门文章

  1. python中定义字符串_python中的字符串
  2. idea maven中的profiles是干什么的
  3. 007_Spring Data JPA JPQL
  4. Magento 安装后台登不上的解决方法
  5. 数据库——高级匹配条件
  6. python解析数据包时出现问题_MySQL Connector / Python InterfaceError:“解析EOF数据包失败”...
  7. python特征选择relieff图像特征优选_ReliefF与QPSO结合的故障特征选择算法
  8. Day1-java基本类型
  9. php中的static,php中的static
  10. ios 绘制线框_iOS 绘制虚线框