一 STM32的GPIO简述:
GPIO,General-Purpose IO ports即通用输入输出接口。输入模式,其实就是用于对外界信号的识别及捕捉,例如按键的识别、温度的感知、电压的识别等。输出模式,其实就是用于对外界的控制及对外界信息的传送,例如蜂鸣器的控制、风扇的控制、LED的控制等。当然,GPIO还包括协议的应用,如IIC协议、SPI协议、CAN协议等。GPIO的工作模式可分为8种模式:推挽输出、开漏输出、复用功能推挽输出、复用功能开漏输出、上拉输入模式、下 拉输入模式、浮空输入模式、模拟输入模式。这8种模式,可以通过设置GPIO的电气结构(如下图1,通过设定A、B、C、D、E、F、G点)的状态来实现。
图1
二 GPIO工作模式
(1) 推挽输出模式(Push-Pull ,PP),如上图C点是一个P-MOS管,低电平时导通、D点是一个N-MOS管,高电平时导通、这两个管子的逻辑在同一时间内处于相反的状态,简而言之,在同一时间内,上管与下管,只有一个管子导通。C点为“1”,D点为“0”,IO口输出“0”。C点为“0”,D点为“1”,IO口输出“0”,即推挽输出状态,推挽输出的有点是,“推”时能提供更大的拉电流,“挽”时能吸收更大的灌电流。
(2)开漏输出(Open-Drain ,OD),如上图1,C点P-MOS不再受控制,逻辑仅控制D点,即N-MOS管,可暂时认为上管C点不存在,为开路。如2图:
图2
此时,输出电路不能输出高电平,只能通过外置上拉电阻实现高电平输出。外置上拉电阻时,内部逻辑控制输出“1” 时,N-MOS导通,IO口输出“0”,逻辑控制输出“0” 时,N-MOS截止,因外置上拉电阻作用,IO口输出“1”。以上模式即开漏输出模式,开漏输出模式常见用于继电器控制,“与门”逻辑的实现,如IIC就是应用开漏输出模式的“与门”逻辑。
(3) 复用功能推挽输出及复用功能开漏输出,IO口既可以用作普通输入、输出管脚外,还可以用作外设的专用引脚,如IIC、USART、SPI等,即复用功能,但同一时间内,单个IO口只能用于一种模式。如图3,A输出不选通,只选通B,即可实现外设的复用功能输出。除此外,其余原理及设置相对于通用推挽输出、通用开漏输出无区别。
图3
(4)上拉输入模式(Input Pull-up),上拉输入模式即内置高电平输入,如图4,E点开关控制关闭,F点开关控制打开,G点触发器控制导通。IO无输入时默认电平为“1”,常用于低电平“0”识别,如按键输入。按键无 *** 作时,IO口电平为默认“1”,按键按下时,电平为“0”,为有效电平。
图4
(5)下拉输入模式(Input Pull-down),下拉输入模式即内置低电平输入,如图5,F点开关控制关闭,E点开关控制打开,G点触发器控制导通。IO无输入时默认电平为“0”,常用于高电平“1”识别。
图5
(6)浮空输入模式(Floating Input ),浮空输入模式即内置上拉电阻及内置下拉电阻均处于打开状态,此时IO口读取的电平为未知电平,外部输入电平原始状态即为IO读取状态。如图6,F点开关控制打开,E点开关控制打开,G点触发器控制导通,即可设置为浮空输入模式。
图6
(7)模拟输入模式(Analog mode),如图7,F点开关控制打开,E点开关控制打开,G点触发器控制断开,即可设置为模拟输入模式。常见用于ADC采集。
图7
三 STM32 IO口的输出速度:
STM32的IO的输出模式,可配置IO引脚的输出速度。(注:该输出速度不是输出信号的速度,而是I/O口驱动电路的响应速度。)STM32提供三个输出速度:2MHz、10MHz、50MHz。应根据实际工况而选择相应的输出速度,以平衡功耗及性能。设置为高速时,优点:响应速度快;缺点:功耗高、噪声大,EMC效果较差。设置为低速时,优点:功耗低、噪声小,EMC效果较好;缺点:响应度慢。通常简单外设,比如LED灯、蜂鸣器灯,建议使用2MHz的输出速度,而复用为IIC、SPI等通信信号引脚时,建议使用10MHz或50MHz以提高响应速度
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)