概述 本章主要GPIO输出模式下不同配置的说明。 使用STM32CUBEMX生成例程,这里使用NUCLEO-L476RG开发板,因为我这只有这款板子的主频较快。 不同速率对应的波形 以PC3为例,在推挽输出无上下拉情况下,输出速率主要有4种,一般的低端MCU只有3种,没有Very High。 % j: t. S1 P- z$ H4 i9 W4 B 8 b/ |4 a. F7 _: @4 z4 I3 ^ LOW速率' w1 M/ g" `. p8 A Medium速率 1 }7 F3 A* F3 ?7 N7 m, d/ m7 l High速率* ^8 L) J, B7 C Very High速率4 K# l6 p1 p. Q6 ? 1 l3 D7 R! }0 t4 @8 c) z9 `; m. |( O 可以看到,在不同速率下,端口的反应速度不一样,设置最大输出速率越大,响应越快,对应的噪声也就越大。 ) d( [1 y. P6 X( o* g- { 输出方式8 W" q- K3 L+ P6 r* Q- Y7 E' g 在上图中,P-MOS带了一个⚪,说明是低电平导通。 : B$ O: @; e9 M/ s N. n
上图是GPIO的示意图,有输入和输出,如果简化为输出,则如下所示。 推挽输出 推挽输出的内部电路大概是下图这个样子,由一个P-MOS和一个N-MOS组合而成,同一时间只有一个管子能够进行导通。 1 g2 z) t$ [4 A I$ n; m" K / g- N9 p6 J, H: M0 G* M 当输出高电平时候,P-MOS导通,N-MOS截至,此时电源电流入R5。 : H1 `9 U1 q: d$ P: K: I8 C% U" g% P* F 当输出低电平时候,N-MOS导通,P-MOS截至,此时电流流入R5的为0。 线与; _% X0 K/ P, n0 O- D 推挽输出高电平与电源电压基本上没有压差 高低电平的驱动能力较强,推挽输出的电流都能达到几十mA。 但是无法进行线与操作,做进行线与操作,那么电源和地就会短路,因为mos管电阻很小。 看下图可以得知,电流通过Q3的P-MOS流到Q2的N-MOS,最终回到地。 3 i5 o5 `! } ]+ @ 开漏输出 K, W4 D/ M1 x1 Q- u 开漏输出又叫漏极开漏输出简化后可以看作如下的示意图。 - @# ]2 b5 W" O: \" m* C& H. g1 l/ p4 e2 D& q& \ 若还是使用上面推挽的电路图,当N-MOS为低电平时候,那么他的输出就是一个高阻态。 可以看到,R5没有电流通过,电压也是接近于0,所以GPIO无法对外输出高电平。 4 {& ]# o; T1 { 此时需要增加一个上拉,这样的话上拉的电流就会流出去。 所以在开漏输出情况下,需要增加一个上拉才能进行输出高电平。 4 ]3 N2 T( s4 X 对于输出低电平,他和推挽输出差不多,电流通过N-MOS流到地中。 . W# U0 [: ^9 p2 P7 F ]0 f 8 v& i# _: }/ J, y1 x) E 上图是没有增加上拉,但是开漏输出模式都需要增加,增加上拉之后如下图所示。 电流通过N-MOS流回地中。 # D$ k" F* O8 r! B3 `7 Z/ T4 S输出电压 由于推挽输出在输出的时候是通过单片机内部的电压,所以他的电压是不能改变的。 但是开漏输出是通过外部上拉的电压,所以可以改变开漏输出模式下的电压大小。 下图是当上拉为5V时候,也是可以驱动出去的,这个上拉电压最大值需要看单片机的耐压。 转载自:记帖 如有侵权请联系删除 |
实战经验 | 如何修改STM32Cube固件包的存储位置
兔哥的杂谈【002】——如何性价比更高地去编译STM32
IDE删除编译中间文件
STM32CubeIDE 快速入门指南
【NUCLEO-WB09KE评测】BLE创建服务和写特征控制LED
基于STM32CubeIDE+MPU6050做的动量轮平衡自行车(一)
【NUCLEO-WB09KE评测】使用I2C点亮一个OLED
【NUCLEO-WB09KE评测】USART的printf和GPIO的使用
STM32CubeIDE 1.3.0 汉化方法
【STM32H7S78-DK评测】XIP模板问题处理与电机控制