STM32 GPIO口输入/输出模式
在写文章之前备注一个创作小收获,TOC(Topic Of Content)是用于创建目录的语法
0. 输入输出框架图
1. 推挽输出
推挽电路是两个参数相同的三极管或者MOSFET,以推挽方式组合,各自负责正负半周期的波形放大任务,每周期只有一个导通,因此损耗小、效率高。
推拉式电路既可以向负载灌电流,也可以从负载拉电流,提高电路负载能力,提高开关速度。
关于灌电流和拉电流的详细讲解,参考下文:
2. 开漏输出
开漏输出电路如图所示,输出端相当于三极管的集电极,要输出高电平需要加上拉电阻,适合做电流型的驱动,吸收电流能力较强。
Open Drain 漏极开漏
Open Collector 集电极开漏
开漏电路特点:
-
利用外部电路驱动能力,驱动电流从外部VCC流经上拉电阻、BJT/MOSFET,GND,IC内部只需要很小的栅极/基极驱动电流,减小IC内部驱动。
-
开漏引脚需要外部上拉电阻才能输出高电平,改变上拉电源电压可以改变传输电平。上拉电阻阻值决定逻辑电平转换沿速度,阻值越大速度越慢功耗越小,负载电阻阻值选择要兼顾功耗和速度。
-
开漏输出提供了灵活的输出方式,但缺点在于上升沿有延时。上升沿需要外接上拉电阻对负载充电,电阻小延时小、功耗大;反之延时大、功耗小。对延时有要求时需要下降沿输出。
-
可以讲多个开漏输出并行共用一只上拉电阻,构成线与。如果有一个引脚输出0,相对于接地,短路所有并联回路,整体逻辑电平为0,符合与逻辑。
3. 复用推挽/开漏输出
端口复用功能,在STM32芯片中很多片内外设的外部引脚与GPIO复用
复用功能的推挽输出GPIO_AF_PP ——片内外设功能(I2C的SCL,SDA)
复用功能的开漏输出GPIO_AF_OD——片内外设功能(TX1,MOSI,MISO,SCK,SS)
复用端口初始化的步骤:
- GPIO端口时钟使能
- 复用外设时钟使能
- 端口模式配置
4. 浮空输入
floating input,顾名思义,该输入口什么都不接,高阻态,电平处于不确定状态。
-
用于标准的通讯协议,比如IIC、USART的等。
-
用做按键检测等功能时,需外部使用上拉或下拉电阻。
5. 上拉/下拉输入
IO内部上拉电阻、下拉电阻实现,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为高电平/低电平。
拓展 · 施密特触发器
采用电位触发方式,输入电压有两个阀值VL、VH,高于或低于阈值时状态都将反转。
设置两个阈值的好处在于可以防止噪声多次来回穿过临界电压时输出收到干扰,电平不稳定。
详情参考下文:
6. 模拟输入
顾名思义,应用 ADC 模拟输入,或者低功耗下省电
参考与补充