版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章通用输入输出接口GPIO1思维导图2学习目标1.理解GPIO基本概念;2.掌握Exynos4412芯片特性,熟悉芯片的GPIO分组;3.掌握GPIO寄存器原理。3技能目标41.具有GPIO寄存器配置能力;2能通过直接地址访问或结构体封装方式操作寄存器。CONTENTS目录5.1GPIO概述5.2GPIO特性5.3GPIO分组预览5.4GPIO寄存器5.5GPIO应用实例565.1GPIO概述GPIO功能与应用用于连接和控制各种外部设备,如LED、按钮、传感器、继电器等。其作为嵌入式系统与外部设备交互的桥梁,能够实现从简单电平控制到复杂系统级任务的功能。GPIO结构与编程通过控制寄存器、数据寄存器等,独立设置引脚输入输出,支持位寻址,提供上拉寄存器简化电路设计。GPIO,英文全称General-PurposeInput-Outputports,通用输入输出端口,是嵌入式系统中用于与外部设备进行数字信号交互的通用接口。5.2
GPIO特性Exynos4412芯片的GPIO特性包括以下几点:252个多路复用I/O口;172个外部中断;32个外部可唤醒中断;睡眠模式引脚状态可控(除了GPX0、GPX1、GPX2和GPX3)。75.3
GPIO分组预览Exynos4412芯片上共有304个多功能输入/输出引脚(其中包含164个内存端口引脚),有37个通用端口组和两个内存端口组。可以通过设置寄存器来确定某个引脚用于输入/输出,还是用于其他特殊功能。·GPA0(8个),GPA1(6个):共14个I/O口,还可用于3×UART带控制流、3×UART不带控制流,或2×I2C接口。·GPB(8个):共8个I/O口,2×SPI接口,或2×I2C接口或IEM接口。·GPC0(5个),GPC1(5个):共10个I/O口,2×I2S接口,或2×PCM接口,或AC97接口、SPDIF(Sony/PhilipsDigitalInterfaceFormat)接口、I2C接口,或SPI接口。·GPD0(4个),GPD1(4个):共8个I/O口,可用于PWM、2×I2C、LCDI/F、MIPI。·GPF0(8个),GPF1(8个),GPF2(8个),GPF3(6个):共30个I/O口,还可用于LCDI/F。·GPJ0(8个),GPJ1(5个):共13个I/O口,用于CAMI/F(ImagetoFrameratio,影响/图框比)。·GPK0(7个),GPK1(7个),GPK2(7个),GPK3(7个):共28个I/O口,还可用于4×MMC(4-bitMMC)接口,或2×MMC(8-bitMMC)接口,或GPSdebuggingI/F接口。·GPL0(7个),GPL1(2个):9个I/O口,用于GPSI/F接口。·GPL2(8个):共8个I/O口,用于GPSdebuggingI/F接口,或键盘I/F接口。·GPM0(8个),GPM1(7个),GPM2(5个),GPM3(8个),GPM4(8个):共36个I/O口,用于CAMI/F接口、TSI/F接口、HIS接口或TraceI/F接口。·GPX0(8个),GPX1(8个),GPX2(8个),GPX3(8个):共32个I/O口,用于外部可唤醒中断,或键盘I/F接口。85.4
GPIO寄存器1.引脚控制寄存器GPxCON2.数据寄存器的GPxDAT3.引脚上下拉设置寄存器GPxPUD4.引脚驱动能力寄存器的GPxDRV5.低功耗模式引脚功能控制寄存器GPxCONPDN6.低功耗模式引脚上下拉设置寄存器GPxPUDPDN5.4.1Exynos4412-GPIO常用寄存器分类5.4
GPIO寄存器5.4.1Exynos4412-GPIO常用寄存器分类1.引脚控制寄存器(GPxCON,x=A0~V4)
在Exynos4412中,大多数的引脚都是功能复用,所以必须对每个引脚进行配置。引脚控制寄存器(GPxCON)用来配置每个引脚的功能。2.数据寄存器(GPxDAT,x=A0~V4)如果引脚功能被配置成了输出功能,可以通过向GPxDAT寄存器对应位写入数据,控制引脚输出相应电平。如果引脚被配置为输入功能,则可以从GPxDAT寄存器对应位读出数据,读回的数据就是当前引脚的电平状态。3.引脚上下拉设置寄存器(GPxPUD,x=A0~V4)Exynos4412芯片的内部给引脚设置了上拉电路和下拉电路,通过引脚上下拉设置寄存器控制引脚上拉电阻和下拉电阻的使能和禁止。如果引脚的上拉电阻被使能,则无论在哪种状态(输入、输出、DATAn、EINTn等其他功能)下,上拉电阻都起作用。105.4
GPIO寄存器5.4.1Exynos4412-GPIO常用寄存器分类4.引脚驱动能力寄存器(GPxDRV,x=A0~V4)根据和引脚连接的外设电器特性,设置引脚合适的驱动电流,达到既能满足正常驱动的需求,也不浪费功耗。5.低功耗模式引脚功能控制寄存器(GPxCONPDN,x=A0~V4)该寄存器用来控制Exynos4412芯片在低功耗模式下的引脚功能,类似GPxCON寄存器,部分引脚没有这个功能。6.低功耗模式引脚上下拉设置寄存器(GPxPUDPDN,x=A0~V4)该寄存器用来控制Exynos4412芯片在低功耗模式下的引脚上拉和下拉功能的使能和禁止,类似GPxPUDPDN寄存器,部分引脚没有这个功能。115.4
GPIO寄存器5.4.2Exynos4412-GPIO接口常用寄存器详解GPxCON、GPxDAT、GPxPUD和GPxDRV工作在普通模式,GPxCONPDN、GPxPUDPDN工作在低功耗模式。这种设计使得Exynos4412能够灵活地管理GPIO端口在不同工作模式下的行为,既满足了高性能需求,也兼顾了低功耗要求。
对于GPIO控制寄存器,考虑到GPIO的寄存器很多,这里只列出与后面GPIO应用实例有关的寄存器。GPIO引脚控制寄存器(GPxCON)GPIO引脚数据寄存器(GPxDAT)GPIO引脚上下拉设置寄存器(GPxPUD)12表5-1GPIO引脚控制寄存器(GPX2CON,地址=0x11400C40)5.4
GPIO寄存器13表5-2GPIO引脚数据寄存器(GPX2DAT)GPX2DAT位描述初始状态GPX2DAT[7:0][7:0]设定为输出功能,对应位决定了输出引脚的电平;设定为输入功能,对应位反应了输入引脚的电平;设置为其他功能,读取时电平不确定0表5-3GPIO引脚上下拉设置寄存器(GPxPUD)GPxPUD位描述初始状态GPxPUD[n][2n+1:2n]N=0to70x0=禁止上拉和下拉0x1=使能下拉0x2=保留0x3=使能上拉0x55555.4
GPIO寄存器145.4
GPIO寄存器5.4.3GPIO寄存器封装
特殊功能寄存器英文缩写为SPR,是SpecialPunctionRegister的缩写。特殊功能寄存器是芯片功能实现的载体,可以理解为芯片厂商留给嵌入式开发人员的控制接口,用于控制片内外设,比如GPIO、UART、ADC等。每个片内外设都有对应的特殊寄存器,用于存放相应功能部件的控制命令、数据或者状态。对于特殊功能寄存器的封装是每个嵌入式工程师都应该掌握的。155.4
GPIO寄存器1.Exynos4412芯片的地址引射表
如图5-1所示,可以观察到Exynos4412的特殊功能寄存器绝大部分都放到了0x10000000到0x14000000的地址空间内。5.4.3GPIO寄存器封装图5-1Exynos4412地址映射表165.4
GPIO寄存器2.GPIO模块的寄存器描述表5.4.3GPIO寄存器封装17GPIO模块的基地址是:0x1140_0000。GPA0组的配置寄存器GPA0CON的地址是:基地址+偏移量,即GPA0CON的地址为0x11400000+0x0000=0x11400000。1)封装寄存器方式(1)封装寄存器的第一种方式是直接一对一封装defineGPA0CON(*(volatileunsignedint*)
0x11400000)这里定义了一个宏,宏定义在预处理阶段进行直接替换,为了方便理解,我们可以先把volatile去掉,关键是理解(*(unsignedint*)0x11400000)。0x11400000是一个十六进制的数据,前面用(unsignedint*)修饰,表示把0x11400000强制转换成了一个指向unsignedint型变量的指针。简单地说,(unsignedint*)0x11400000指向了内存中从0x11400000开始的连续的4个字节空间(0x11400000-0x11400003)。(*(unsignedint*)0x11400000)是在(unsignedint*)0x11400000又加了一个指针运算符*,表示取内存单元里的数据。volatile是C语言的32个关键字之一,是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件中断或者线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,每次读取这个变量的值都要从内存单元里读取,而不是直接使用放在高速缓存或寄存器里的备份,从而可以提供对特殊地址的稳定访问。其可以像unsignedint变量一样访问特殊功能寄存器,如下:GPA0CON=(GPA0CON&~(0xf<<4))|(1<<4);1/将GPA0_1引脚设置为输出功能5.4
GPIO寄存器5.4.3GPIO寄存器封装/*GPA0*/typedef
struct{unsigned
intCON;unsigned
intDAT;unsigned
intPUD;unsigned
intDRV;unsigned
intCONPDN;unsigned
intPUDPDN;}gpa0;#defineGPA0
(*(volatilegpa0*)0x11400000)
typedef关键字声明了名为gpa0的结构体类型,结构体内又定义了6个unsignedint类型的变量unsignedint类型变量为32位,在内存空间中占4个字节。#defineGPA0(*(volatilegpa0*)0x11400000)声明了一个gpa0类型结构体的宏,结构体名是结构体首成员的地址,GPA0这个结构体的首成员CON地址为0x11400000,占4个字节,在C语言中结构体内的成员变量是连续的,那么GPA0结构体的第二个成员DAT的地址为:0x11400000+0x04=0x11400004。这个0x04偏移量,正是GPA0DAT寄存器相对于GPIO基地址的偏移地址。结构体内其他成员的偏移量,也和相应的寄存器偏移地址相符。因此,匹配了结构体的首地址,就可以确定各寄存器的具体地址了。如果用访问结构体变量成员的方式,访问寄存器。GPA0.CON=(GPA0.CON&~(0xf<<4))|1<<4;//将GPA0_1引脚设置为输出功能。5.4
GPIO寄存器5.4.3GPIO寄存器封装1)封装寄存器方式(2)封装寄存器的第二种方式是结构体封装2)使用集成开发环境的芯片寄存器封装嵌入式开发中,把常用的寄存器写到一个头文件中,每次使用的时候直接包含就可以,即#include“exynos4412.h”。5.4
GPIO寄存器5.4.3GPIO寄存器封装5.5
GPIO应用实例215.5.1GPIO实验1.GPIO实验目的
将利用Exynos4412的GPX2_7、GPX1_0、GPF3_4、GPF3_5这4个I/O引脚控制4个LED发光二极管,使其有规律地闪烁。2.GPIO实验原理
如图5-3所示,LED2~LED5分别与GPX2_7、GPX1_0、GPF3_4、GPF3_5相连,通过GPX2_7、GPX1_0、GPF3_4、GPF3_5引脚的高低电平来控制三极管的导通性,从而控制LED2、LED3、LED4、LED5的亮灭。
根据三极管的特性,当这几个引脚输出高电平时,集电极和发射极导通,发光二极管点亮;反之,发光二极管熄灭。通过控制GPX1CON、GPX1DAT、GPX2CON、GPX2DAT、GPF3CON和GPF3DAT来控制GPX2_7、GPX1_0、GPF3_4和GPF3_5对应的LED。图5-3
LED接线原理图5.5
GPIO应用实例225.5.2程序设计与代码详解1.寄存器设置为了控制LED,需要通过配置GPX1CON、GPX2CON、GPF3CON寄存器将GPX2_7、GPX1_0、GPF3_4、GPF3_5设置为输出属性。通过设置对应的DAT寄存器实现点亮与熄灭LED。对于本例来说,各个GPIO的上拉寄存器可以不用设置。5.5
GPIO应用实例235.5.2程序设计与代码详解2.程序编写#include"exynos_4412.h"voidmydelay_ms(intms){inti,j;while(ms--){for(i=0;i<5;i++)for(j=0;j<514;j++);}}/*-------------------------MAINFUNCTION------------------------------*/intmain(void){GPX2.CON=(GPX2.CON&~(0xf<<28))|1<<28;//GPX2_7:output,LED2GPX1.CON=(GPX1.CON&~(0xf))|1;//GPX1_0:output,LED3GPF3.CON=(GPX3.CON&~(0xf<<16|0xf<<20))|(1<<16|1<<20);//GPF3_4:output,LED4;GPF3_5:output,LED5 while(1) { //TurnonLED2GPX2.DAT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业现场管理的客户需求分析
- 成都市青白江区八所“两自一包”公办学校2026年公开招聘编外教师(167人)模拟试卷及完整答案详解一套
- 2026江苏有线网络发展有限责任公司仪征分公司公开招聘1人笔试题库附答案详解【培优】
- 温州市教育局直属公办学校公开招聘2026届复硕试点和公费师范毕业生6人笔试题库含答案详解(典型题)
- 2026年蚌埠工业与商贸职业技术学校银龄讲学教师公开招募5人备考题库新版附答案详解
- 公司合同管理基础培训课件
- 护理扎针的肌肉注射技巧
- 工地装饰装修管控方案
- 慢阻肺患者雾化吸入效果评估
- 工厂隐患排查基础流程培训课件
- 微机原理与接口技术课后答案(第五版)
- 病理科安全培训
- 2025届THUSSAT北京市清华大学中学高三一诊考试英语试卷含解析
- 正常分娩课件教学课件
- 加油站综合管理制度
- 三副换证实习报告
- 八年级数学下册 中心对称图形-平行四边形综合压轴(50题12个考点)(原卷版)
- 北京市东城区东直门中学2024-2025学年七年级上学期分班考数学试卷
- JT-T-1185-2018城市轨道交通行车组织规则
- 社会工作实务(初级):就业援助员(三)
- XFT 3004-2020 汽车加油加气站消防安全管理
评论
0/150
提交评论