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


- 推挽模式(高电平/低电平组合)
- 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结构

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