STM32芯片IO口工作模式介绍(一)
- IO口常见的配置方式
- 推挽输出模式
- 开漏输出
STM32芯片非常常用,做硬件研发的工程师应该都接触过。但是对其内部IO口的结构以及工作原理可能还是有些朋友“只知其然而不知其所然”当遇到和外设匹配的硬件问题时不知道如何分析。本文主要为大家讲解常用的几种IO口模式的内部原理。本人也是小白一名如有错误请指正。
大家可以先思考以下三个问题
1.IO口常见的配置方式有哪些?
2.上拉电阻、下拉电阻的作用是什么?
3.拉电流和灌电流是什么意思?
IO口常见的配置方式
通常绝大多数CPU的输入和输出走的是两条路径。
推挽输出模式
可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由CPU的电源决定。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通。具有导通损耗小、效率高、输出驱动电流大带载能力强,开关速度快等特点。
IO口输出模式内部结构如下图所示(参考):
输出寄存器上的‘0’将N-MOS激活 P-MOS截止,此时I/O引脚相当于与VSS连接,图上紫色线条为电流流向。
输出寄存器上的‘1’将P-MOS激活 N-MOS截止,此时I/O引脚相当于与VDD连接,图上蓝色线条为电流流向。
开漏输出
输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻。
开漏形式的电路有以下几个特点:
1、利用外部电路的驱动能力,减少IC内部的驱动。当IC内部N-MOS导通时,驱动电流是从外部的VCC流经上拉电阻、N-MOS到GND。IC内部仅需很小的栅极驱动电流。
2、一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的速度。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)
3、开漏输出提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用开露输出。
4、可以将多个开漏输出连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系,即“线与”。可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。
开漏输出常用于IIC总线系统上,如下所示:
当CPU发送器件地址时,对应的IIC器件给出应答,SDA被拉低说明总线上有器件被选定。
IO口输出模式内部结构如下图所示(参考):
输出寄存器上的‘0’将N-MOS激活 P-MOS截止,此时I/O引脚相当于与VSS连接。
输出寄存器上的‘1’使P-MOS和N-MOS截止,此时I/O处于高阻态状态。所以开露模式下要输出高电平时需要加入上拉电阻。