历史上的今天
返回首页

历史上的今天

今天是:2024年11月01日(星期五)

正在发生

2021年11月01日 | ARM之GPIO介绍(Exynos4412平台)

2021-11-01 来源:eefocus

GPIO

概述:GPIO的英文全称是General-Purpose Input/Output,也就是通用输入输出。在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO.接口至少有两个寄存器,即“通用IO控制寄存器”和“通用IO数据寄存器”。


特性


46个可中断通用控制I/O;

172个外部中断;

32个外部可唤醒中断;

252个多路复用I/O口;

睡眠模式引脚状态可控(除了GPX0,GPX1,GPH2,GPH3);

GPIO常用寄存器

引脚控制寄存器(GPxCON x=A0~V4)

在exynos4412中,大多数的引脚都是功能复用的,所以必须对每个引脚进行配置。引脚控制寄存器(GPxCON)用来配置每个引脚的功能。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

引脚数据寄存器(GPxDAT x=A0~V4)

如果引脚功能被配置为输出功能,可以通过向GPxDAT寄存器对应位写入数据,控制引脚输出相应电平。如果引脚被配置为输入功能,则可以从GPxDAT寄存器对应位读出数据读回的数据就是当前引脚的电平状态。

在这里插入图片描述

引脚上拉下拉设置寄存器(GPxPUD x=A0~V4)

exynos4412芯片的内部给引脚设置了上拉电路和下拉电路,通过引脚上下拉设置寄存器控制引脚上拉电阻和下拉电阻的使能和禁止。如果引脚的上拉电阻被使能,则无论在哪种状态(输入、输出、DATAn、EINTn等其他功能)下,上拉电阻都起作用。

在这里插入图片描述

引脚驱动能力寄存器(GPxDRV x=A0~V4)

根据和引脚连接的外设电器特性,设置引脚合适的驱动电流,达到既能满足正常驱动的需求,也不浪费功耗。

在这里插入图片描述

低功耗模式引脚功能控制寄存器(GPxCONPDn x=A0~V4)

该寄存器用来控制exynos4412芯片在低功耗模式下的引脚功能,类似GPxCON寄存器,部分引脚没有这个功能。


低功耗引脚上下拉设置寄存器(GPxPUDPDN x=A0~V4)

该寄存器用来控制exynos4412芯片在低功耗模式下的引脚上拉和下拉功能的使能和禁止,类似GPxPUDPDN寄存器,部分引脚诶呦这个功能。

注意

GPIO模块的基地址是0x1100_0000

GPx2组的配置寄存器GPx2DRV的地址是:基地址+偏移量

0x1100 0000+0x0c4c=0x11000c4c


GPIO寄存器的封装

直接封装

#define GPx2CON (*(volatie unsigned int *)0x1100 0c40)

1

这里定义了一个宏,宏定义在预处理阶段进行直接替换。0x11000c40是一个十六进制的数据,前面用(unsigned *)修饰,表示把0x11000c40强制转换成一个指向unsigned int型的指针变量。

volatile 是C 语言的 32个关键字之一,是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件中断或者线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,每次读取这个变量的值都要从内存单元里读取,而不是直接使用放在高速缓存或寄存器里的备份,从而可以提供对特殊地址的稳定访问。


结构体封装

和直接封装是相同的道理,在这里就不进行赘述,一般都是使用直接封装的方法,有兴趣的可以将直接封装改写为结构体封装。

推荐阅读

史海拾趣

德旭电子(DEXU)公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,德旭电子深知只有不断创新才能在竞争中立于不败之地。因此,公司始终坚持技术创新和产业升级的战略方向。

德旭电子在产品研发方面不断投入大量人力物力,积极引进国内外先进技术和管理经验。同时,公司还加强与高校、科研机构的合作与交流,共同开展技术研发和人才培养工作。这些举措使得德旭电子在技术创新方面取得了显著成果,不断推出具有市场竞争力的新产品和新技术。

ECS公司的发展小趣事

随着云计算技术的不断发展,ECS公司意识到只有不断创新才能保持竞争优势。他们投入大量研发资源,对ECS服务进行了多次技术升级和产品优化。例如,他们引入了智能调度算法,实现了计算资源的自动分配和负载均衡;同时,他们还加强了数据安全性和隐私保护措施,确保客户的数据安全。这些技术突破和产品升级使得ECS公司的服务更加稳定、可靠和高效。

科达嘉CODACA公司的发展小趣事

科达嘉电子创建于2001年,起初是一家专注于功率电感、共模电感的研发、生产与销售的初创企业。在电子行业激烈的市场竞争中,科达嘉凭借对电感技术的深入研究和不断创新,逐渐赢得了市场的认可。公司团队经过近二十年的努力,从一个小型创业公司发展成为拥有多家子公司的集团企业,员工总数超过900人,厂房总面积达到30000平方米。

电连(ECT)公司的发展小趣事

为了提高公司治理能力和运营效率,ECT在2019年引入并升级了SAP信息化系统。这一系统的引入不仅实现了公司各部门之间的信息共享和协同工作,也提高了公司对市场变化的响应速度和决策效率。通过SAP信息化系统的支持,ECT在保持技术领先的同时,也实现了业务的稳健发展。

以上五个故事概述了电连(ECT)公司在电子行业中的发展历程和关键事实。这些故事展示了ECT在技术创新、市场拓展、国际化战略和信息化建设等方面的努力和成果。

Heraeus公司的发展小趣事

ECT在射频连接器领域取得了显著的技术突破。从2006年到2008年,公司开始研发射频同轴连接器,并在2009年实现精密射频同轴连接器的量产,并成功获得专利。这一技术突破为ECT在射频连接器市场赢得了重要地位,也为公司后续的发展奠定了坚实的基础。

Electro-Term/Hollingsworth公司的发展小趣事

面对全球电子市场的不断变化,Electro-Term公司及时调整了市场布局和战略方向。公司深入分析了不同地区的市场需求和消费者偏好,制定了有针对性的市场推广策略。同时,公司还加强了与国际知名企业的合作,共同开发新技术和产品。这些努力使Electro-Term在全球市场上取得了显著的成绩。

问答坊 | AI 解惑

EDA工具简介

Synopsys工具简介〓 LEDA   LEDA?是可编程的语法和设计规范检查工具,它能够对全芯片的VHDL和Verilog描述、或者两者混合描述进行检查,加速SoC的设计流程。 LEDA预先将IEEE可综合规范、可仿真规范、可测性规范和设计服用规范集成,提高设计者分析 ...…

查看全部问答>

AD/DA??????????

各位能否推荐一8位模数芯片,AD/DA集成到一个片子上的,最好是I2C接口,或spi接口的,我知道一款,但不好买,各位仁兄还知道有没有其他的吗?小弟在此先谢了啊…

查看全部问答>

我用内嵌TCP/IP协议的GPRS模块进行数据传输,其它命令都是正确的回复,但是最后一个上网的命令不正确

大家好,希望能帮帮我。我用西门子公司的MC55进行GPRS中的TCP/IP数据传输,用51单片机控制,现在TCP/IP设置的命令都回复的OK,但是最后一条连网命令不正确,经查证发现连网的命令是发送正确的,就是连不上网,是怎么回事啊?…

查看全部问答>

DS18B20 初始化失败 纠结中

为了单独测试这个DS18B20的初始化,弄了个最小化的电路如下: DS18B20接P1.7,LED接P1.0 如果初始化成功,则LED应该点亮. 程序: #include sbit DQ = P1^7; sbit LED = P1^0; void delay2us(unsigned char t) {      whil ...…

查看全部问答>

说说大家WCE的产品

交流下大家的Windows CE产品,看看目前市场上用到的Windows CE产品有哪些? 注:标明Windows CE版本号、产品名及简要介绍、工资。 先说我自己的: Windows CE 5.0、Windows CE 6.0 终端——类似电脑,主要用户行业的窗口柜台(如银行、邮政 ...…

查看全部问答>

WINCE触摸屏右键无法出现

我的屏幕的分辨率为800*480.那么对应的屏幕坐标为(3200,1920)?。。我现在出现的问题是,平常的操作基本正常,但是无法出现右键,AYGSHELL组件也已经选了。是不是抖动问题?但是我在DdsiTouchPanelGetPoint中保存第一次按下时的坐标,在弹起之前 ...…

查看全部问答>

STM32AD采样信号超过3.3V会怎么样

                                 如题,这样会不会造成AD损坏?…

查看全部问答>

2011大赛B题基于自由摆的平板控制系统 单摆 参考论文

本帖最后由 paulhyde 于 2014-9-15 03:37 编辑 今年大赛做B题基于自由摆的平板控制系统的参赛者有时间可以而看看,这个论文感觉就是我们试题B的出处!由于文件太大。。采用分卷压缩的!将3个附件同时下载下来即可解压!    …

查看全部问答>

求一个AD口暴多的mcu,推荐一下

求一个AD口暴多的mcu,推荐一下…

查看全部问答>

如何按键进休眠模式?请教

想用休眠模式让电机停,执行到寄存器pcon不停? #include #define uchar unsigned char #define uint unsigned int sbit a = P2^6;//电机 sbit k = P3^7;//按键进入休眠 void ex_int0() interrupt 0//外部中断0唤醒函数 { PCON=0; } void ...…

查看全部问答>