6.2 通用输入输出之GPIO(神舟王207)
- 格式:pdf
- 大小:1.15 MB
- 文档页数:23
gpio的类别
GPIO(General Purpose Input/Output,通用输入/输出)的类别或模式可以根据不同的应用和设计需求进行划分。
以下是一些常见的GPIO类别或模式:
1、输入模式(Input Mode):GPIO端口将读取外部设备发出的信号。
2、输出模式(Output Mode):GPIO端口将向外部设备发出信号。
3、复用模式(Multiplexing Mode):GPIO端口可以同时实现输入和输出功能。
4、高阻模式(High Impedance Mode):GPIO端口被设置为高阻模式,输入端口的输入信号会被抑制。
5、推挽输出模式(Push-Pull Output Mode):GPIO端口可以在输出模式时使用推挽输出模式。
6、中断模式(Interrupt Mode):GPIO端口可以捕捉到外部设备发出的信号。
7、测试模式(Test Mode):GPIO端口可以用于测试外部设备。
8、热插拔模式(Hot-Plugging Mode):GPIO端口可以实现热插拔功能。
9、此外,在Cortex-M3等处理器中,GPIO的配置种类可能还包括模拟输入(AIN)、浮空输入(IN_FLOATING)、下拉输入(IPD)、
上拉输入(IPU)、开漏输出(Out_OD)等。
请注意,这些模式并非全部,具体的GPIO类别或模式可能会因处理器、芯片或开发板的不同而有所差异。
因此,在实际应用中,需要参考相关的硬件文档或数据手册以获取准确的GPIO类别和配置信息。
gpio详细解读-回复GPIO详细解读GPIO,全称为通用输入输出接口(General Purpose Input/Output),是一种在计算机系统中用于与外部设备进行数字通信的接口。
它允许计算机与各种不同类型的外设进行通信,并且可以通过软件控制这些外设的输入和输出。
在本文中,我将逐步回答关于GPIO的各种问题,以帮助读者全面理解和使用GPIO接口。
一、GPIO概述GPIO是计算机系统与外部设备之间的桥梁,它通过引脚(pin)与外设相连,使用数字信号进行通信。
每个引脚可以配置为输入或输出模式,以实现不同的功能。
GPIO接口的灵活性和通用性使其成为计算机系统的核心部分。
二、GPIO引脚GPIO引脚是与外部设备相连的物理引脚,它们通常以数字方式编号,并且可以通过引脚号来识别和访问。
常见的计算机系统通常具有多个GPIO引脚,可以通过软件将它们配置为输入或输出模式。
三、GPIO模式GPIO引脚可以配置为输入或输出模式,取决于与之相连的外部设备类型和应用需求。
在输入模式下,GPIO引脚可以接收来自外设的信号,并将其传递到计算机系统;而在输出模式下,GPIO引脚可以发送计算机系统生成的信号到外设。
四、GPIO寄存器GPIO寄存器是计算机系统中用于配置和控制GPIO引脚的寄存器。
通过读写这些寄存器的值,可以设置GPIO引脚的工作模式、电平状态和其他参数。
使用GPIO寄存器可以实现对GPIO接口的灵活编程控制。
五、GPIO驱动程序为了简化对GPIO的操作,操作系统通常提供了GPIO驱动程序。
通过调用这些驱动程序提供的接口函数,可以更方便地实现对GPIO引脚的配置和控制。
驱动程序隐藏了底层硬件细节,使开发人员能够更专注于应用程序的开发。
六、GPIO使用示例以下是一个简单的GPIO使用示例,以帮助读者更好地理解GPIO接口的工作原理。
1. 引脚配置:首先,需要选择一个GPIO引脚,并将其配置为输入或输出模式。
这可以通过操作GPIO寄存器来实现。
gpio百科名片General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,利用工业标准I2C、SMBus?或SPI?接口简化了I/O口的扩展。
当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。
简介分类:硬件/嵌入开发驱动开发/核心开发每个GPIO端口可通过软件分别配置成输入或输出。
Maxim的GPIO产品线包括8端口至28端口的GPIO,提供推挽式输出或漏极开路输出。
提供微型3mm x 3mm QFN封装。
优点GPIO的优点(端口扩展器)低功耗:GPIO具有更低的功率损耗(大约1μA,μC 的工作电流则为100μA)。
集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作。
小封装:GPIO器件提供最小的封装尺寸―3mm x 3mm QFN!低成本:您不用为没有使用的功能买单!快速上市:不需要编写额外的代码、文档,不需要任何维护工作!灵活的灯光控制:内置多路高分辨率的PWM输出。
可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。
更好的灯光效果:匹配的电流输出确保均匀的显示亮度。
布线简单:仅需使用2条就可以组成IIC总线或3条组成SPI总线。
于ARM 的几组GPIO引脚,功能相似,GPxCON 控制引脚功能,GPxDAT用于读写引脚数据。
另外,GPxUP用于确定是否使用上拉电阻。
x为A,B,,H/J,没有上拉电阻。
ai 寄存器1.GPxCON 寄存器用于配置引脚功能。
ConfigurePORT A 与PORT B~PORT H/J 在功能选择上有所不同,GPACON 中每一位对应一根引脚,共23 个引脚。
当某位被设为0 时候,其为输出引脚。
此时我们可以在GPADAT 中相应的写入1或者0 来让此引脚输出高电平或者低电平。
一般而言GPACON 通常被设为1 ,以便访问外部器件。
gpio的规格
通用输入输出(GPIO,General Purpose Input/Output)是一种数字信号的通用引脚,可以在计算机和嵌入式系统中用于输入和输出数字信号。
不同的硬件平台和芯片厂商可能有不同的GPIO规格,但以下是一些通用的GPIO规格和特性:
1.电压电平:GPIO引脚通常支持不同的电压电平,如3.3V、5V等。
使用时需要根据具体硬件要求选择合适的电压电平。
2.输入阻抗:GPIO的输入阻抗通常在几千到几百千欧姆之间,这取决于具体的硬件设计。
输入阻抗决定了引脚对外部信号的敏感度。
3.输出驱动能力:GPIO的输出驱动能力表示其能够驱动外部负载的能力,通常以毫安(mA)为单位。
较高的输出驱动能力允许连接更大的负载。
4.最大频率:GPIO引脚支持的最大切换频率,即输入和输出信号的变化速度。
这一点在需要快速信号传输时很重要。
5.可配置性:GPIO引脚通常是可配置的,可以通过软件设置为输入或输出,并可能具有其他特殊功能,如中断、上拉/下拉电阻等。
6.标准:一些GPIO规格符合特定的标准,例如CMOS(互补金属氧化物半导体)、TTL (晶体管—晶体管逻辑)等。
这些标准通常影响了电平定义和电气特性。
7.工作温度范围:GPIO的工作温度范围是指它能够可靠工作的温度范围。
需要注意的是,具体的GPIO规格可能因芯片型号、制造商和应用场景而异。
因此,在使用GPIO时,应参考相关芯片手册、数据表或硬件规格说明来获取具体的规格信息。
GPIO输入输出各种模式(推挽、开漏、准双向端口)详解概述能将处理器的GPIO(General Purpose Input and Output)内部结构和各种模式彻底弄清楚的人并不多,最近在百度上搜索了大量关于这部分的资料,对于其中很多问题的说法并不统一。
本文尽可能的将IO涉及到的所有问题罗列出来,对于有明确答案的问题解释清楚,对于还存在疑问的地方也将问题提出,供大家讨论。
概括地说,IO的功能模式大致可以分为输入、输出以及输入输出双向三大类。
其中作为基本输入IO,相对比较简单,主要涉及的知识点就是高阻态;作为输出IO,相比于输入复杂一些,工作模式主要有开漏(Open Drain)模式和推挽(Push-Pull)模式,这一部分涉及的知识点比较多;对于输入输出IO,容易产生疑惑的地方是准双向和双向端口的区别。
下面就按照这样的顺序依次介绍各个模式的详细情况。
输入IO这里所说的输入IO,指的是只作为输入,不具有输出功能。
此时对于input引脚的要求就是高阻(高阻与三态是同一个概念)。
基本输入电路的类型大致可以分为3类:基本输入IO电路、施密特触发输入电路以及弱上拉输入电路。
先从最基本的基本输入IO电路说起,其电路如图1所示。
图1其中的缓冲器U1是具有控制输入端,且具有高阻抗特性的三态缓冲器。
通俗地说就是这个缓冲器对外来说是高阻的,相当于在控制输入端不使能的情况下,物理引脚与内部总线之间是完全隔离的,完全不会影响内部电路。
而控制输入端的作用就是可以发出读Pin状态的操作指令。
其过程如图2所示。
图 2这种基本电路的一个缺点是在读取外部信号的跳变沿时会出现抖动,如下图所示。
图 3于是施密特触发输入电路就是解决了上述这种抖动的问题,其经过施密特触发器后的信号如图4所示。
图 4对于输入电路还存在另外一个问题,就是当输入引脚悬空的时候,输入端检测到的电平是高还是低?当输入信号没有被驱动,即悬空(Floating)时,输入引脚上任何的噪声都会改变输入端检测到的电平,如图5所示。
gpio编程说明-回复GPIO编程是指通过控制树莓派(Raspberry Pi)的通用输入输出端口(GPIO)来实现与外部设备(如传感器、执行器等)的交互。
在树莓派上进行GPIO编程可以让我们通过程序控制硬件,从而实现各种功能,如控制LED灯、读取按钮输入、采集环境数据等。
本文将以中括号内的内容为主题,详细介绍GPIO编程的基本概念、使用方法和注意事项。
一、基本概念1. GPIO引脚GPIO引脚是树莓派上可编程的数字输入输出引脚。
树莓派一般有多个GPIO引脚可供使用,每个引脚都可以通过程序来配置和控制。
GPIO引脚既可以作为输入接口接收外部信号,也可以作为输出接口输出电平信号。
2. 控制IO口电平GPIO引脚的电平即为其上的电压状态,一般有高电平和低电平两种状态。
高电平一般表示为1,低电平一般表示为0。
通过控制GPIO引脚的电平状态可以实现与外部设备的通信和交互。
3. 电平转换电路在实际应用中,外部设备的电平状态和树莓派的GPIO引脚的电平状态可能不一致,因此需要通过电平转换电路来匹配两者之间的电平差异。
常用的电平转换电路有电阻分压电路和三极管电路等,具体根据应用需求选择适当的电平转换电路。
二、GPIO编程方法在树莓派上进行GPIO编程主要有两种方法,一种是使用系统的IO库,如wiringPi库,另一种是使用Python语言的RPi.GPIO库。
下面将详细介绍这两种方法的使用。
1. 使用wiringPi库进行GPIO编程wiringPi是一款广泛应用的树莓派GPIO编程库,提供了丰富的API函数,简化了GPIO的配置和控制过程。
使用wiringPi库,需要先在树莓派上安装该库,然后在程序中包含相关头文件,并链接库文件,最后进行GPIO 的配置和控制操作。
2. 使用RPi.GPIO库进行GPIO编程RPi.GPIO是树莓派上广泛使用的Python GPIO编程库,使用该库可以简便地在Python语言下进行GPIO编程。
6.1 通用输入/输出(GPIO) (1)6.1.1 管脚特性 (1)6.1.2 GPIO应用领域 (1)6.1.3 管脚分配 (1)6.1.4 GPIO管脚内部硬件电路原理剖析 (2)6.1.5 STM32的GPIO管脚深入分析 (6)6.1.6 在STM32中如何配置片内外设使用的IO端口............错误!未定义书签。
6.1.7 例程01 单个LED点灯闪烁程序..................................错误!未定义书签。
6.1.8 例程02 LED双灯闪烁实验........................................错误!未定义书签。
6.1.9 例程03 LED三个灯同时亮同时灭............................错误!未定义书签。
6.1.10 例程04 LED流水灯程序...............................................错误!未定义书签。
6.1通用输入/输出(GPIO)6.1.1管脚特性z STM32F207ZG总共有114个通用输入/输出(GPIO)口z每个I/O端口位可以自由编程z I/O端口寄存器可按32位字被访问(不允许半字或字节访问)6.1.2GPIO应用领域z通用I/O口z驱动LED或其他指示器z控制片外器件或片外器件通信z检测静态输入6.1.3管脚分配表1:端口A GPIO管脚描述管脚名称类型描述PA[12:0] I/O通用输入/输出PA0到PA12表2:端口B GPIO管脚描述管脚名称类型描述通用输入/输出PB1到PB12PB[12:0] I/O表3:端口C GPIO管脚描述管脚名称类型描述通用输入/输出PC0到PC15PC[15:0] I/O表4:端口D GPIO管脚描述管脚名称类型描述通用输入/输出PD0到PD15PD[15:0] I/O表5:端口E GPIO管脚描述管脚名称类型描述通用输入/输出PE0到PE15PE[15:0] I/O表5:端口E GPIO管脚描述管脚名称类型描述通用输入/输出PF0到PF15PF[15:0] I/O表5:端口E GPIO管脚描述管脚名称类型描述PG[15:0] I/O通用输入/输出PG0到PG15表6:时钟晶振GPIO管脚描述管脚名称类型描述PH[1:0] I/O PH0: OSC_IN PH1: OSC_OUT6.1.4GPIO管脚内部硬件电路原理剖析I/O接口是一颗微控制器必须具备的最基本外设功能。
通常在ARM里,所有I/O都是通用的,称为GPIO(General Purpose Input/Output)。
在STM32中,每个GPIO端口包含8个管脚,如PA端口是PA0~PA15。
GPIO模块支持多种可编程输入/输出管脚,GPIO模块包含以下特性:1)可编程控制GPIO中断----- 包括屏蔽中断发生----- 边沿触发(上升沿、下降沿、双边沿触发)----- 电平触发(高电平触发、低电平触发)2)输入/输出管脚最大可承受5V电压3)可通过编程控制GPIO管脚配置:----- 弱上拉或弱下拉电阻----- 2mA、4mA、8mA驱动,STM32芯片管脚驱动最大是25mAGPIO管脚可以被配置为多种工作模式,配置不同的模式实际就是内部的驱动电路有不一样,下面我们分析几种,大家可以从这里了解原理知识:1.高阻输入高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样。
电路分析时高阻态可做开路理解。
你可以把它看作输出(输入)电阻非常大。
他的极限可以认为悬空。
也就是说理论上高阻态不是悬空,它是对地或对电源电阻极大的状态。
而实际应用上与引脚的悬空几乎是一样的。
如上图所示,为 GPIO管脚在高阻输入模式下的等效结构示意图,表示GPIO 管脚;这是一个管脚的情况,其它管脚的结构也是同样的,输入模式的结构比较简单,就是一个带有施密特触发输入(Schmitt-triggered input)的三态缓冲器(U1),并具有很高的阻抗。
施密特触发输入的作用是能将缓慢变化的或者是畸变的输入脉冲信号整形成比较理想的矩形脉冲信号。
执行 GPIO管脚读操作时,在读脉冲(Read Pulse)的作用下会把管脚(Pin)的当前电平状态读到内部总线上(Internal Bus)。
在不执行读操作时,它可以变成高阻抗的状态,使得外部管脚与内部总线之间是隔离的。
为什么会产生这种高阻抗的管脚设计呢?因为是很多管脚都连在同一根总线上,为了不干扰其他管脚,当某一个管脚在传送数据的适合,其他管脚配置成高阻抗,就不会干扰正在传送数据的管脚了,这样可以很多管脚同时共用一根总线,分时复用。
为减少信息传输线的数目,大多数计算机中的信息传输线采用总线形式,即凡要传输的同类信息都在同一组传输线,且信息是分时传送的。
在计算机中一般有三组总线,即数据总线、地址总线和控制总线。
为防止信息相互干扰,要求凡挂到总线上的寄存器或存储器等,它的输入输出端不仅能呈现0、1两个信息状态,而且还能产生一种高阻抗状态,即好像它们的输出被开关断开,对总线状态不起作用,此时总线可由其他器件占用。
三态缓冲器即可实现上述功能,它除具有输入输出端之外,还有一控制端,就像一个开关一样,可以控制使其变成高阻抗状态。
2.推挽输出推挽输出可以提高输出功率,能够更好驱动外部的设备;推挽输出的原理:在功率放大器电路中大量采用推挽放大器电路,这种电路中用两只三极管构成一级放大器电路,两只三极管分别放大输入信号的正半周和负半周,即用一只三极管放大信号的正半周,用另一只三极管放大信号的负半周,两只三极管输出的半周信号在放大器负载上合并后得到一个完整周期的输出信号。
推挽放大器电路中,一只三极管工作在导通、放大状态时,另一只三极管处于截止状态,当输入信号变化到另一个半周后,原先导通、放大的三极管进入截止,而原先截止的三极管进入导通、放大状态,两只三极管在不断地交替导通放大和截止变化,所以称为推挽放大器。
如上图所示,为 GPIO管脚在推挽输出模式下的等效结构示意图。
U1是输出锁存器,执行 GPIO管脚写操作时,在写脉冲(WritePulse)的作用下,数据被锁存到Q和/Q。
T1和 T2构成 CMOS反相器,T1导通或 T2导通时都表现出较低的阻抗,但 T1和 T2不会同时导通或同时关闭,最后形成的是推挽输出。
在推挽输出模式下,GPIO还具有回读功能,实现回读功能的是一个简单的三态门 U2。
注意:执行回读功能时,读到的是管脚的输出锁存状态,而不是外部管脚 Pin的状态。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。
输出既可以向负载灌电流,也可以从负载抽取电流。
推拉式输出级既提高电路的负载能力,又提高开关速度。
推挽放大器的输出级有两个“臂”(两组放大元件),一个“臂”的电流增加时,另一个“臂”的电流则减小,二者的状态轮流转换。
对负载而言,好像是一个“臂”在推,一个“臂”在拉,共同完成电流输出任务。
3.开漏输出开漏输出就是不输出电压,低电平时接地,高电平时不接地。
如果外接上拉电阻,则在输出高电平时电压会拉到上拉电阻的电源电压,如果开漏输出的管脚被上拉了,那么这个管脚将一直默认是输出高电平的。
一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平,比如加上上拉电阻就可以提供TTL/CMOS电平输出等。
如上图所示,为 GPIO管脚在开漏输出模式下的等效结构示意图。
开漏输出和推挽输出相比结构基本相同,但只有下拉晶体管 T1而没有上拉晶体管。
同样,T1实际上也是多组可编程选择的晶体管。
开漏输出的实际作用就是一个开关,输出“1”时断开、输出“0”时连接到 GND(有一定内阻)。
回读功能:读到的仍是输出锁存器的状态,而不是外部管脚 Pin的状态。
因此开漏输出模式是不能用来输入的。
开漏输出的优点是IC内部仅需很小的驱动电流就可以了,因为它主要是利用外部电路的驱动能力,这样可以减少IC内部的驱动,并且外部需要什么样的电压,就上拉到相应的电压,需要多大的电流,也可以通过改变上拉电阻来调节电流,所以开漏输出是非常灵活的一种输出。
4.钳位二极管(用来保护GPIO管脚)GPIO内部具有钳位保护二极管,如下图所示。
其作用是防止从外部管脚 Pin输入的电压过高或者过低。
VDD正常供电是 3.3V,如果从 Pin输入的信号(假设任何输入信号都有一定的内阻)电压超过 VDD加上二极管 D1的导通压降(假定超过VDD电压0.6V的时候,那么二极管D1导通需要0.6V的压降),则二极管 D1导通,这样就会把多于的电流引到VDD,而真正输入到内部的信号电压不会超过3.9V(3.3v+0.6v=3.9v)。
同理,如果从 Pin 输入的信号电压比 GND还低,则由于二极管 D2的作用,会把实际输入内部的信号电压钳制在-0.6V左右。
假设 VDD=3.3V,GPIO设置在开漏模式下,外接 10kΩ上拉电阻连接到 5V电源,在输出“1”时,我们通过测量发现:GPIO管脚上的电压并不会达到 5V,而是在 4V上下,这正是内部钳位二极管在起作用。
虽然输出电压达不到满幅的 5V,但对于实际的数字逻辑通常3.5V以上就算是高电平了。
如果确实想进一步提高输出电压,一种简单的做法是先在 GPIO管脚上串联一只二极管(如 1N4148),然后再接上拉电阻。
参见下图,框内是芯片内部电路。
向管脚写“1”时,T1关闭,在 Pin处得到的电压是 3.3+VD1+VD3=4.5V,电压提升效果明显;向管脚写“0”时,T1导通,在 Pin处得到的电压是 VD3=0.6V,仍属低电平。
以上这节就是主要介绍芯片管脚的基本驱动原理,下面开始剖析具体的STM32芯片管脚。
6.1.5STM32的GPIO管脚深入分析上节我们介绍了芯片管脚实现的硬件原理,以及一个芯片管脚被配置成不同的模式实际是不同的驱动电路,这些驱动电路可以适用于不同的场合。
STM23的每个GPIO引脚都可以由软件配置成输出(推挽或开漏),输入(带或不带上拉或下拉)或复用的外设功能端口。
多数GPIO引脚与数字或模拟的复用外设共用;除了具有模拟输入(ADC)功能的管脚之外,其他的GPIO引脚都有大电流通过能力,这些具体如下8种模式:¾1)输入浮空(这个输入模式,输入电平必须由外部电路确定,要根据具体电路,加外部上拉电阻或下拉电阻,可以做按键识别)¾2)输入上拉(打开IO内部上拉电阻)¾3)输入下拉(打开IO内部下拉电阻)¾4)模拟输入(应用ADC模拟输入)¾5)开漏输出(输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).能驱动大电流和大电压,LED就使用这种模式。