一、GPIO的归纳描绘
stm32每一个GPIO端口具有2个32bits的configuraTIon寄存器(GPIOx_CRL,GPIOx_CRH),2个32bits的数据寄存器(GPIOx_IDR,GPIOx_ODR),1个32bits的set/reset寄存器(GPIOx_BSRR),1个16bits的reset寄存器(GPIOx_BRR)和1个32bits的Lock寄存器(GPIOx_LCKR)。
(一)每一个IO引脚都能够运用软件装备为以下几种方法:
1. 浮空输入
2. 带上拉输入
3. 带下拉输入
4. 模仿输入
5. 开漏输出——(此方法可完结hotpower说的真双向IO)
6. 推挽输出
7. 复用功用的推挽输出
8. 复用功用的开漏输出
方法7和方法8需依据具体的复用功用决议。
每一个IO引脚都能够独自编程,可是每一个IO寄存器只能32bits拜访(半字或许字节拜访都被制止)。
(三)每个GPIO口都能够作为外部中止的输入,便于体系灵敏规划。
(四)I/O口的输出方法下,有3种输出速度可选(2MHz、10MHz和50MHz),这有利于噪声操控。
(五)一切I/O口兼容CMOS和TTL,大都I/O口兼容5V电平。
(六)大电流驱动才干:GPIO口在凹凸电平别离为0.4V和VDD-0.4V时,能够供给或吸收8mA电流;假设把输入输出电平别离放宽到1.3V和VDD-1.3V时,能够供给或吸收20mA电流。
(七)具有独立的唤醒I/O口。
(八)许多I/O口的复用功用能够从头映射。
(九)GPIO口的装备具有上锁功用,当装备好GPIO口后,能够经过程序锁住装备组合,直到下次芯片复位才干解锁。此功用十分有利于在程序跑飞的状况下维护体系中其他的设备,不会由于某些I/O口的装备被改动而损坏——如一个输进口变成输出口并输出电流。
二、GPIO的装备
(一) GPIO方法挑选和速度匹配
(1) 浮空输入_IN_FLOATING ——浮空输入,能够做KEY辨认,RX1。
(2)带上拉输入_IPU——IO内部上拉电阻输入。
(3)带下拉输入_IPD—— IO内部下拉电阻输入。
(4) 模仿输入_AIN ——运用ADC模仿输入,或许低功耗下省电。
(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需求外接上拉电阻,才干完结输出高电平。当输出为1时,IO口的状况由上拉电阻拉高电平,但由于是开漏输出方法,这样IO口也就能够由外部电路改动为低电平或不变。能够读IO输入电平改动,完结C51的IO双向功用。
(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是不知道的。
(7)复用功用的推挽输出_AF_PP ——片表里设功用(I 2C的SCL,SDA)
(8)复用功用的开漏输出_AF_OD——片表里设功用(TX1,MOSI,MISO.SCK)
GPIO输出的速度匹配:
GPIO_Speed_10MHz 最高输出速率10MHz
GPIO_Speed_2MHz 最高输出速率2MHz
GPIO_Speed_50MHz 最高输出速率50MHz
I/O口的输出方法下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分组织了多个不同响应速度的输出驱动电路,用户能够依据自己的需求挑选适宜的驱动电路)。经过挑选速度来挑选不同的输出驱动模块,到达最佳的噪声操控和下降功耗的意图。高频的驱动电路,噪声也高,当不需求高的输出频率时,请选用低频驱动电路,这样十分有利于进步体系的EMI功用。当然假设要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
有一点是要害,即GPIO的引脚速度跟运用匹配(引荐10倍以上)。比方:
1) 关于串口,假设最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。
2 )关于I2C接口,假设运用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不行,这时能够选用10M的GPIO引脚速度。
3 )关于SPI接口,假设运用18M或9M波特率,用10M的GPIO的引脚速度明显不行了,需求选用50M的GPIO的引脚速度。
(二) 在STM32中怎么装备片表里设运用的IO端口
①装备输入的时钟;②初始化后即被激活(敞开);③假设运用该外设的输入输出管脚,则需求装备相应的GPIO端口(不然该外设对应的输入输出管脚能够做一般GPIO管脚运用);④再对外设进行具体装备。
对应到外设的输入输出功用有下述三种状况:
①外设对应的管脚为输出:需求依据外围电路的装备挑选对应的管脚为复用功用的推挽输出或复用功用的开漏输出。
②外设对应的管脚为输入:则依据外围电路的装备能够挑选浮空输入、带上拉输入或带下拉输入。
③ADC对应的管脚:装备管脚为模仿输入。
假设把端口装备成复用输出功用,则引脚和输出寄存器断开,并和片上外设的输出信号衔接。将管脚装备成复用输出功用后,假设外设没有被激活,那么它的输出将不确认。
(三) 通用IO端口(GPIO)初始化:
1、 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | B | C, ENABLE):使能APB2总线外设时钟;
2 、RCC_ APB2PeriphResetCmd (RCC_APB2Periph_GPIOA | B | C, DISABLE):开释GPIO复位;
3、装备各个PIN端口(模仿输入_AIN、输入浮空_IN_FLOATING、输入上拉_IPU、输入下拉_IPD、开漏输出_OUT_OD、推挽式输出_OUT_PP、推挽式复用输出_AF_PP、开漏复用输出_AF_OD)和匹配速度。
4 、GPIO初始化完结
附注1:PLL(Phase Locked Loop): 为锁相回路或锁相环,用来一致整合时脉信号,使内存能正确的存取材料。PLL用于振动器中的反应技能。许多电子设备要正常作业,一般需求外部的输入信号与内部的振动信号同步,运用锁相环路就能够完结这个意图。
附注2:STM32的GPIO口的输出:开漏输出和推挽输出
1、推挽输出与开漏输出的差异:
》》推挽输出:能够输出高,低电平,衔接数字器材
》》开漏输出:输出端相当于三极管的集电极。 要得到高电平状况需求上拉电阻才行。 适合于做电流型的驱动,其吸收电流的才干相对强(一般20ma以内)。
推挽结构一般是指两个三极管别离受两互补信号的操控,总是在一个三极管导通的时分另一个截止。
要完结 线与 需求用OC(open collector)门电路。是两个参数相同的三极管或MOSFET,以推挽方法存在于电路中,各担任正负半周的波形扩大使命,电路作业时,两只对称的功率开关管每次只要一个导通,所以导通损耗小,效率高。输出既能够向负载灌电流,也能够从负载抽取电流。
当端口装备为输出时:
开漏方法:输出 0 时,N-MOS 导通,P-MOS 不被激活,输出0。
输出 1 时,N-MOS 高阻, P-MOS 不被激活,输出1(需求外部上拉电路),也就是说此方法下只要 N-MOS对输出起作用;此方法能够把端口作为双向IO运用。
推挽方法:输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。
输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需求外部上拉电路)。
简略来说,开漏是0的时分接GND ,1的时分浮空;推挽是0的时分接GND ,1的时分接VCC。
2、开漏电路特色及运用
在电路规划时咱们常常遇到开漏(open drain)和开集(open collector)的概念。所谓开漏电路概念中说到的“漏”就是指MOSFET的漏极。同理,开集电路中的“集”就是指三极管的集电极。开漏电路就是指以MOSFET的漏极为输出的电路。一般的用法是会在漏极外部的电路增加上拉电阻。完好的开漏电路应该由开漏器材和开漏上拉电阻组成。
组成开漏方法的电路有以下几个特色:
1) 运用 外部电路的驱动才干,削减IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。
2) 能够将多个开漏输出的Pin,衔接到一条线上。构成 “与逻辑” 联系。当PIN_A、PIN_B、PIN_C恣意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判别总线占用状况的原理。
3)能够运用改动上拉电源的电压,改动传输电平。IC的逻辑电平由电源Vcc1决议,而输出高电平则由Vcc2决议。这样咱们就能够用低电平逻辑操控输出高电平逻辑了。
4)开漏Pin不衔接外部的上拉电阻,则只能输出低电平(因而关于经典的51单片机的P0口而言,要想做输入输出功用有必要加外部上拉电阻,不然无法输出高电平逻辑)。
5)规范的开漏脚一般只要输出的才干。增加其它的判别电路,才干具有双向输入、输出的才干。
运用中需注意:
1) 开漏和开集的原理相似,在许多运用中咱们运用开集电路替代开漏电路。例如,某输入Pin要求由开漏电路驱动。则咱们常见的驱动方法是运用一个三极管组成开集电路来驱动它,即便利又节约本钱。
2)上拉电阻R pull-up的 阻值 决议了 逻辑电平转化的沿的速度 。阻值越大,速度越低功耗越小。反之亦然。
责任编辑;zl