GPIO通用型之输入输出介绍以及练习

本文介绍了GPIO的基础知识,包括GPIO的作用、优点和寄存器框架。阐述了GPIO功能配置,如输入/输出使用,强调了安全性和正确操作的重要性。探讨了GPIO调试方法,包括使用命令行检查GPIO状态和模拟低速总线协议。同时,文章讨论了GPIO作为中断使用的注意事项和调试技巧。最后,以Ubuntu系统为例,展示了如何通过sysfs接口操作GPIO,并提供了GPIO调试和应用的实践操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验报告--GPIO

1 GPIO基础知识

GPIO (General-purpose input/output),通用型之输入输出的简称,功能类似8051的PO—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI或通用输出(GPO)或通用输入与输出(GPIO),如当clk generator, chip select等。

既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。

GPIO口一是个比较重要的概念,用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。GPIO口的使用非常广泛。

GPIO的优点(端口扩展器)

低功耗:GPIO具有更低的功率损耗(大约11A,C的工作电流则为100uA)。

集成IPC从机接口:GPIO内置IC从机接口,即使在待机模式下也能够全速工作。

小封装:GPIO器件提供最小的封装尺寸—3mm x 3mm QFN!

低成本:您不用为没有使用的功能买单!

快速上市:不需要编写额外的代码、文档,不需要任何维护工作!

灵活的灯光控制:内置多路高分辨率的PWM输出。p

可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。

更好的灯光效果:匹配的电流输出确保均匀的显示亮度。

布线简单:仅需使用2条1C总线或3条SPI总线

1.1 GPI0寄存器框架

一般的ARM SoC都有大概500+的IO,一般情况下会将IO进行分组如GPIOA(GroupA)一般系统作为WAKEUP GPIO ,大概有16个IO口,WAKEUP GPIO的意思就是在系统进入休眠后,这部分的Power Domain是 always ON的。在系统休眠后这部分的是不断电的。举个例子系统进入休眠后,这时候来了一个电话,如果不是使用WAKE UP GPIO作为中断源的话,BP (BASEBAND PROCESS)是无法唤醒CPU进行UI显示,响铃等一系列的操作的。还有一个我们常用的Power key,如果 powerkey所使用的IO不说采用wakeup的GPIO的话也是无法唤醒系统的。

剩下的IO SoC会将SoC按照32个IO为一组分为GPIOB(GroupB),GPIOC-GPIOx这个根据SoC自己的IO数量去划分,为什么使用32个IO为一组进行划分呢?我们仔细想一下,一般 SoC寄存器的位宽是32bit,如果按照32个分组的话刚好一个 bit 代表一个IO的状态。所以我们在进行硬件逻辑设计的时候,也要考虑软件上的便利性。

再介绍一个概念,那就是IO复用,IO复用顾名思义是一个IO可以配置成多个功能,一般SoC在设计的时候为了提升IO的利用率,在内部逻辑门电路设计的时候会进行IO复用,意思就是一个IO可以配置为一般的IO功能,也可以配置成如I2C SDA或者SCL的功能,也可以配置成UART的TX或者RX功能,这样的目的就是为了开发者能够进行灵活的设计和布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值