单片机开发中常用的电路——STM32F103C8T6最小系统及外设接口设计

单片机引脚配置

这张图是 STM32F103C8T6 的“最小系统 + 外设接口”连接:核心是给 MCU 提供稳定 3.3V 供电、可控启动/复位、可下载调试(SWD),以及把板子需要的信号(PWM、串口、I2C、过流保护 BKIN 等)引出来。
结合单片机引脚分配来画原理图,可以使用STM32Cube
电源与滤波
-
VDD_x / VSS_x(数字电源/地):图里有 VDD_1/VSS_1、VDD_2/VSS_2、VDD_3/VSS_3 三组,全部接 3.3V 和 GND,并各自旁边放了 100nF(C35/C37/C36)做去耦,用来给芯片内部高速开关电流提供就近回路、降低电源噪声。
-
VDDA / VSSA(模拟电源/模拟地):这是给 ADC 等模拟模块用的电源域,通常要求比数字电源更干净,ST 的硬件建议里常见做法是 VDDA 旁边至少 100nF(并常再加 1µF),并可用磁珠/电感把 VDDA 从 VDD 隔离以滤掉数字噪声。
-
U18/U19 + C34/C33 这一组:3.3V 先经过 U18/U19(看符号更像电感/磁珠)再VDDA/VSSA 相关供电点,两侧各放 100nF(C34、C33),这是典型的“π型滤波/隔离”思路:让高频噪声在两侧电容处就地回流,同时让磁珠/电感阻断噪声串入模拟电源域。
-
VBAT:VBAT 是给 RTC/备份寄存器等“后备域”供电的引脚,你这里直接接 3.3V,表示没有单独电池供电时让后备域跟随主电源供电。
启动、复位、调试
-
NRST:外部复位脚,用于把 MCU 拉回复位状态;最小系统一般会把它引出来(便于按键/调试器复位),并按数据手册建议做外围保护/RC 处理。
-
BOOT0 / BOOT1:这两个脚与“启动模式(Boot modes)”相关,用来决定上电/复位后从哪块存储器启动(比如正常从 Flash 启动或进入系统引导等),所以一般会用电阻固定默认状态并引出测试点/跳帽位。
-
SWDIO / SWCLK(PA13/PA14):这是 SWD 调试下载接口两根关键线,分别是数据和时钟,常与 3.3V、GND 一起接到调试座用于烧录与在线调试。
-
注意点:PA13/PA14 复位后默认就是 SWD 功能(并且有内部上下拉配置),如果后续想把它们当普通 GPIO 用,需要在软件里显式关闭/重映射调试功能,否则会影响下载调试或引脚使用。
时钟与外设引脚
-
OSC1/OSC2(PD0/PD1,HSE):外部高速晶振/时钟输入输出脚,常接 8MHz 晶振用于更精确的系统时钟与外设时钟;如果不用外部晶振,也可以只用内部 RC 振荡器。
-
PC14/PC15(OSC32):外部 32.768kHz 低速晶振(LSE)引脚,通常用于 RTC 低功耗精确走时。
-
TX / RX:这是串口通信信号(USART),用于与上位机/蓝牙/调试串口模块通信;具体对应 MCU 的哪一路 USART 取决于在 PCB/固件里选用的引脚复用方案。
-
SCL / SDA:I2C 总线两根线,常用来连传感器/EEPROM/扩展 IO 等外设。
-
PWM1 / PWM2、EN1 / EN2:控制功率级(全桥驱动)的 PWM 与使能信号,属于普通 GPIO/定时器复用输出的典型用法。
-
BKIN:这是“过流/故障保护”很关键的一根线,STM32F103 有带“死区与紧急停止”的高级定时器(TIM1),其 Break 输入(BKIN)可用于故障时快速关断 PWM 输出,实现硬件级保护路径。
-
LED1/LED2、KEY、ADD、JIAN、EN:这些都是常见的人机交互/指示/地址设定脚,本质上就是 GPIO 输入输出(可配置上拉/下拉/中断等)
BOOT选择

-
STM32 上电/复位时会采样 BOOT0/BOOT1 的电平来决定从哪里启动:最常用是 BOOT0=0(BOOT1 无所谓)从主 Flash 启动;BOOT0=1 且 BOOT1=0 会进系统 Bootloader(用串口等下载);BOOT0=1 且 BOOT1=1 会从 SRAM 启动(多用于调试/特殊用途)。
-
这里用 1×3 的跳帽座(H1/H2)把 BOOT0、BOOT1 选择接到 3.3V 或 GND,本质是给“启动模式”提供一个简单可靠的硬件开关。
-
使用建议:平时跳到 GND(BOOT0=0)保证正常跑程序;需要串口 ISP 或救砖时再把 BOOT0 拉高进入系统 Bootloader。
Q1:为什么BOOT0/BOOT1 口的3.3V电源没有接地?
BOOT0/BOOT1 跳帽座只是把 MCU 的 BOOT 管脚拉到 3.3V 或 GND 来选择启动模式,它不负责给外设供电,所以不需要做“电源去耦”,更不需要接地。
Q2:什么时候“需要地”?什么时候“需要电容”?
任何接口只要传输电源或信号(UART/I2C/SWD/PWM/模拟量),都需要一个“参考地/回流路径”,否则信号电平没有基准、回流电流会乱走导致干扰大甚至不工作。
建议加电容的情况(尤其是接口供电处)
-
接口要给外设供电(像 OLED 的 +5V)在接口附近放 100nF(甚至再加 1µF/10µF)做去耦,抑制插拔瞬态和外设脉动电流引起的电压跌落/噪声。
-
外设通过线缆连接、线较长、环境噪声大:更建议在接口处加去耦/滤波,让噪声就地回流,不要跑回主板电源网。
复位电路

-
SW5 是手动复位按键:按下把 NRST 直接拉到 GND,MCU 复位;松开后回到高电平,MCU 重新启动。
-
R23(10k 上拉):保证平时 NRST 稳定为高电平,不会悬空乱复位,同时在按下按键时限制电流。
-
C38(10µF 到地):和 R23 形成 RC,使 NRST 上升沿变慢一点,起到“上电复位延时/抗毛刺”的效果——例如电源刚起来或按键弹跳/干扰造成很窄的尖脉冲时,电容会让 NRST 不容易被这种瞬间拉低,从而减少误复位概率。
上面的按键复位电路有一个缺点:当电源因某种干扰瞬间断电时,由于C不能迅速将电荷放掉,待电源恢复时,单片机不能上电自动复位,导致程序运行失控。具体改进可以参考如下链接的讲解单片机开发中常用的电路,盘点详解_电路图-面包板社区
下载口

-
U34 是 2×5 排针,把 SWDIO、SWCLK(以及通常需要的 3.3V 参考电压、GND、可选 NRST)引出来用于 ST-Link/J-Link 下载调试;很多调试器需要看到目标板的供电电压(VCC)来做电平匹配/电源检测,所以 3.3V 和 GND 一般也必须接到调试座。
-
下载口还引出了 TX/RX,用于串口日志/Bootloader 下载(配合上面 BOOT0/BOOT1 就能做 ISP)。
-
C77(100nF):是给下载口附近的 5V(或接口电源)做去耦,减少插拔线缆或外部转换器带来的瞬态干扰通过电源耦合进板子。
晶振

-
X2 是外部晶体,接在 MCU 的 OSC1/OSC2(通常对应 HSE:PD0/PD1)上,给 MCU 提供更准确、温漂更可控的系统时钟(比内部 RC 更适合做精确串口波特率、PWM 频率等)。
-
C39/C40(各 22pF)是晶振的负载电容,和晶振本身、引脚/走线寄生电容一起,决定振荡是否容易起振、频率是否准确;一般按晶振厂家给的“负载电容 CL”并扣除寄生电容来估算,必要时再实测微调。
-
布局要点:晶振和两颗电容必须紧贴 MCU,引线短且对称,地回路干净,否则容易不起振或抖动变大。
按键

每个按键都是:信号线 →(并一个 100nF 到地)→ 按键按下把信号线短接到 GND,属于“按下为低电平”的接法。
这样接的前提是:MCU 端对这根 GPIO 使能上拉(内部上拉或外部上拉),平时为高,按下变低。软件里 GPIO 要配置成“输入上拉”,并按“低电平=按下”的逻辑处理。
OLED

H3 是 OLED 的 4 针接口:供电 + 两根 I2C 线(SCL/SDA)。
-
C84(100nF)是给 OLED 模块供电做就近去耦,抑制插线/屏幕内部开关电流带来的瞬态干扰,这是“外设接口电源旁边放 0.1µF”非常常见的做法。
-
I2C 的 SCL/SDA 按规范通常是开漏/开集输出,需要上拉电阻把总线拉到高电平;
电流采集电路
INA282AIDR是一款基于差分放大器的电流放大器,其工作原理实际上就是将IN+ 和 IN-之间的电压差放大50倍(其它型号的芯片可能为100倍,25倍等)。
8脚功能是固定的:
-
+IN(8脚):接到分流电阻的电源侧(图上接的是 VIN 这一侧)。
-
-IN(1脚):接到分流电阻的负载侧(图上接的是 VCC 这一侧)。
-
OUT(5脚):放大后的模拟电压输出,送到 R24/C80,再到信号 “II”。
-
V+(6脚):INA282 自身供电(图上接 3.3V)。
-
GND(2脚):芯片地。
-
REF1(7脚)与 REF2(3脚):设置输出参考电压 VREF=(REF1+REF2)/2,也就是“0A 时 OUT 的基准点”。
-
若 REF1、REF2 都接地,则 0A→0V(单向电流测量)。
-
若 REF1 接 V+、REF2 接 GND,则 0A→V+/2(便于双向电流,上下都有余量)。
-
-
NC(4脚):不内部连接脚,通常悬空或按手册建议处理即可。
OUT的值实际上就是=放大后的电压值+(REF1+REF2)/2,反馈到AD后,经过微控制器将采集到的值进行处理,处理方式为模数转换器采集到的值-(REF1+REF2)/2,该值即为实际的电流值。
更多接法讲解参考文章(99+ 封私信 / 80 条消息) 【硬件设计】INA282电流采集电路 - 知乎


12A过流保护
使用LM393DR运算放大器,放大器不用的引脚:同相端接地,out引脚接地,反相端接高电平。
1) 设定阈值:R58=20k、R59=30k
-
R58/R59 从 +5V 分压出一个参考电压
-
这个分压值约为
,也就是当“电流对应的电压”超过约 3V 时判定过流。
2) 比较器输出:LM393 是开集电极,必须上拉
-
LM393 的输出是开集电极(open-collector)结构:它自己不能主动输出高电平,只能在“触发时”把输出拉低,所以必须外接上拉电阻才能得到稳定的高电平。
-
用R60=10k 上拉到 3.3V,这样 BKIN 平时为高;一旦比较器触发,LM393 把 BKIN 拉到低电平作为故障信号输出给 MCU/定时器。
3) C96(100nF):比较器供电去耦
-
C96 是 LM393 供电脚旁边的去耦电容,防止比较器翻转瞬间或外部干扰让供电抖动导致误触发。
Q1:为什么既要“采样电流”又要“过流保护”
-
采样电流Ii 给 MCU:让单片机"知道"当前电流是多少,用于显示电流、做控制算法、记录故障前数据等(但它依赖 ADC 采样与软件处理,响应较慢)。
-
过流保护BKIN 给硬件:一旦超过阈值立刻拉动 BKIN(Break Input)让 STM32 的高级定时器硬件关断 PWM,比纯软件反应快得多,能在几微秒内切断全桥输出,避免烧管子/烧负载/烧走线。
Q2:为什么过流保护电流阈值是12A?
假设输入电压是24V,输入电流是10A,那么功率为240W(根据自己电路需求计算)
将单片机ADC引脚的最大电压按照3V来算,放大倍数为50倍,则采样电阻R1上最大电压为3V/50=60mV,采样电阻值为60mV/10A=6mΩ。市面上难以买到6mΩ电阻,我们取用5mΩ电阻,那么输入电流最大就是60mV/5mΩ=12A。
电压采样电路

更多推荐



所有评论(0)