模电基础

  • 二极管:PN结正向导通,反向阻流
  • 若电流可以两个方向流,且需要限制一个方向不能流时,可以用二极管限制电流流向

  • 三极管:电流控制的开关

  • MOS管:电压控制的开关
  • 保护二极管:防止反向电流
  • 上拉电阻(连接VDD)
  • 将电路这一段的电压拉高,拉高多少由上拉电阻的阻值决定
  • 场景1:对于外接浮空时,给一个默认的高电压
  • 场景2:上电时电压不确定,MOS管栅极可能会被误打开。上拉电阻可在上电时确定一个VDD电压
  • STM32一般为弱上拉:电阻连3.3V,使得外部输入的高电压>上拉电压,不会干扰输入输出(由外部决定)
    • 上拉输入=浮空输入+外部上拉
  • 下拉电阻(连接GND,即VSS)
  • 将电路这一段的电压拉低,拉高多少由下拉电阻的阻值决定
  • 场景1:对于外接浮空时,给一个默认的低电压
  • 场景2:关电时电容可能未放完电,导致下次上电时栅极误打开。下拉电阻可在关电时将电容的电引导至GND
  • STM32一般为强下拉:电阻连GND,使得外部输入的低电压>下拉电压,不会干扰输入输出(由外部决定)
    • 上拉输入=浮空输入+外部下拉
  • 滤波电容(连接GND)
  • 比较器:正>负,则输出高电压;反之,则输出低电压。

  • 两个MOS管的工作模式

图 7‑2 推挽等效电路

image-20251225141442797

  • 推挽模式(高电平/低电平组合)
    • Q1打开,Q2关闭时,VDD电流通过Q1推出给OUT,电压为VDD
    • Q1关闭,Q2打开时,OUT电路通过Q2挽入到GND,电压为0
    • 高低电压均可驱动:外接低电压pin则输出低电压,外接高电压pin则输出高电压
    • 电压不匹配时不能驱动
    • 无法实现线与:GPIO不能相连、不能同时实现输入输出
  • 开漏模式(低电平/高阻态组合)

    • Q1关闭,Q2打开时,OUT电路通过Q2挽入到GND,电压为0
    • Q1关闭,Q2关闭时,电压不定(浮空)
    • 高电压无法驱动,低电压可以驱动
    • 电压不匹配时可以驱动:实现用低压GPIO驱动高压元件/用高压GPIO驱动低压元件
    • 实现线与:GPIO可以相连、可以同时实现输入输出
    • 外部需要接入一个上拉电阻,电压为V
    • 实现与门:多个开漏模式的GPIO相连,GPIO均高阻时,电压结果被上拉到V
    • 实现输出:GPIO主动置高阻,电压被外部上拉=输出1;GPIO主动置低电平,电压内部下拉=输出0
    • 实现输入:GPIO主动置高阻,输入1=上拉电压;GPIO主动置高阻,输入0=GND电压
  • 电机驱动模块中的H桥(共两组,每组有两个MOS管)

  • 用4个MOS管实现电流方向的改变,起到直流变交流的作用

GPIO结构

图 7‑1 GPIO结构框图

  • 输出控制电路
  • 由“输出数据寄存器”作为输出,即GPIOx_ODR
  • 由“复用功能输出”作为输出
  • 输入控制电路
  • 由”输入数据寄存器“作为输入,即GPIOx_IDR
  • 由“复用功能输入”作为输入
  • 由“模拟输入”作为输入
  • GPIO输入模式(禁止输出)
  • 模拟(电压不会经过ADC)、浮空(不确定电压)、上拉(STM32内部提供一个上拉电阻,当外接浮空时,默认弱上拉)、下拉(STM32内部提供一个下拉电阻,当外接浮空时,默认强下拉
  • 特殊:开漏(仅线与)
  • GPIO输出模式(禁止输入)
  • 推挽(通用)、开漏(电压不匹配/线与)
  • GPIO复用模式(可设定外设输出速度,可读取IDR,不可写入ODR)
  • 复用推挽、复用开漏
  • 作用:大多数GPIO端口可复用为其他外设的端口
  • GPIO对应的pin脚
  • 分为ABCDE系统,GPIOA对应PA0-15,其余同理

GPIO输出流程

  • 设置全局的外设时钟RCC
  • 设置GPIO输出配置(推挽输出模式、输出速度)
  • 设置GPIO输出数据(写入ODR)