1、STM32的GPIO结构图
GPIO共有8中设置形式:输入浮空、输入上拉、输入下拉、模仿输入、开漏输出、推挽式输出、推挽式复用功用,开漏复用功用,共4种输入,2种输入,2种复用功用。
2、形式阐明
①浮空输入
图中施密特触发器是敞开的,IO口的状况能够直接送到输入寄存器中,CPU能够直接读取输入寄存器;
在上图中,暗影的部分处于不作业状况,尤其是下半部分的输出电路,实际上是与端口处于阻隔状况。
黄色的高亮部分显现了数据传输通道,外部的电平信号经过左面编号1的IO端口进入STM32,经过编号2的施密特触发器的整形送入编号3的输入数据寄存器,在输入数据寄存器的另一端编号4,CPU能够随时读出IO端口的电平状况。
②上拉输入
上图是STM32的GPIO带上拉输入形式的装备。与前面的浮空输入形式比较,仅仅是在数据通道上部,接入了一个上拉电阻,依据STM32的数据手册,这个上拉电阻阻值介于30K~50K。
相同,CPU能够随时在输入数据寄存器的另一端,读出IO端口的电平状况。
③下拉输入
④模仿输入
施密特触发器是封闭的,信号直接到ADC输入;
STM32的模仿输入通道的装备则愈加简略,信号从左面编号1的端口进入,从右边编号2的一端直接进入ADC模块。
这儿咱们看到一切的上拉、下拉电阻和施密特触发器,均处于断开状况,因而输入数据寄存器将不能反映端口上的电平状况,也就是说,模仿输入装备下,CPU不能在输入数据寄存器上读到有用的数据。
⑤开漏输出形式
当CPU在编号1端经过“位设置/清楚寄存器”或“输出数据寄存器”写入数据后,该数据位经过编号2的输出控制电路传送到编号4的IO端口。
假如CPU写入的是逻辑1,则编号3的N-MOS管将处于封闭状况,此刻IO端口的电平将由外部的上拉电阻决议,假如CPU写入的是逻辑0,则编号3的N-MOS管将处于敞开状况,此刻IO端口的电平被编号3的N-MOS管拉到了VSS的零电位。
在上图的上半部,施密特触发器处于敞开状况,这意味着CPU能够在“输入数据寄存器”的另一端,随时监控IO端口的状况;经过这个特性,还完成了虚拟的IO端口双向通信,只需CPU输出逻辑1,因为编号3的N-MOS管处于封闭状况,IO端口的电平将完全由外部电路决议,因而,CPU能够在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑1。
GPIO口的输出形式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指GPIO口驱动电路的响应速度,而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在IO口的输出部分组织了多个响应速度不同的输出驱动电路,用户能够依据自己的需求挑选适宜的驱动电路)。经过挑选速度来挑选不同的输出驱动模块,到达最佳的噪声控制和下降功耗的意图。高频的驱动电路,噪声也高,当不需求高的输出频率时,请选用低频驱动电路,这样十分有利于进步体系的EMI功用。当然假如要输出较高的频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。
⑥开漏输出复用功用
⑦推挽输出形式
⑧推挽复用输出形式
GPIO推挽复用输出形式,编号2的输出控制电路的输入,与复用功用的输出端相连,此刻输出数据寄存器被从输出通道断开了,并和片上外设的输出信号衔接。咱们将GPIO装备成复用输出功用后,假如外设没有被激活,那么它的输出将不确认,其它部分与前述形式共同,包含对“输入数据寄存器”的读取。
3、运用场合
①上拉输入、下拉输入能够用来检测外部信号;例如,按键等;
②浮空输入形式,因为输入阻抗较大,一般把这种形式用于规范通信协议的I2C、USART的接纳端;
③一般推挽输出形式一般运用在输出电平为0和3.3V的场合。而一般开漏输出形式一般运用在电平不匹配的场合,如需求输出5V的高电平,就需求在外部一个上拉电阻,电源为5V,把GPIO设置为开漏形式,当输出高阻态时,由上拉电阻和电源向外输出5V电平。
④关于相应的复用形式,则是依据GPIO的复用功用来挑选,如GPIO的引脚用作串口的输出,则运用复用推挽输出形式。假如用在IC、SMBUS这些需求线与功用的复用场合,就运用复用开漏形式。
⑤在运用任何一种开漏形式时,都需求接上拉电阻。