3. 硬件基础与原理图阅读:认识MCU最小系统、电源树与去耦电容、GPIO与外围接口
做硬件设计这些年,我有个很深的体会:原理图就是硬件工程师的“源代码”。你读不懂它,后面PCB布局、调试、量产就全是坑。这一章,咱们就把IoT开发板上最核心的几个硬件模块拆开揉碎,从MCU最小系统讲到电源树,再到那些天天打交道的通信接口。
本章核心目标:拿到一份原理图,你能一眼认出MCU能不能跑起来、电源供电是否合理、接口有没有接错。
3.1 MCU最小系统:芯片“活过来”的必要条件
什么叫最小系统?说白了,就是让MCU能正常工作的最低硬件要求。少了任何一个,芯片都“醒不过来”。
我遇到过不少新手,画完板子发现芯片不工作,查了半天——原来是复位引脚没拉高。嗯,这种坑踩一次就记住了。
一个典型的MCU最小系统包含以下部分:
- 电源(VDD/VSS):给芯片供电,通常3.3V或1.8V。注意多个电源引脚要全部连接,不能悬空。
- 复位电路(NRST):上电时让MCU内部逻辑初始化。一般用RC复位:10kΩ上拉到VDD + 100nF电容到GND。
- 时钟源(HSE/LSE):外部晶振提供精准时钟。常用8MHz主晶振 + 32.768kHz RTC晶振。
- 启动模式选择(BOOT0/BOOT1):决定MCU从Flash、系统存储器还是SRAM启动。调试时常用BOOT0拉高进ISP模式。
- 去耦电容:每个电源引脚旁边放一个100nF电容,滤除高频噪声。
我的习惯:画原理图时,先把MCU最小系统画完整、检查三遍,再开始画外设。最小系统不稳,后面全是白费功夫。
来看一个实际的STM32F103最小系统原理图片段:
// 复位电路
NRST ----[10kΩ]---- VDD_3V3
|
[100nF]
|
GND
// 8MHz主晶振
OSC_IN ----[8MHz晶振]---- OSC_OUT
| |
[22pF] [22pF]
| |
GND GND
// BOOT0配置(调试用)
BOOT0 ----[10kΩ]---- GND // 正常从Flash启动
// 需要ISP时,通过跳线帽拉高到VDD
3.2 电源树与去耦电容:别让供电成为瓶颈
IoT开发板通常有多个电压域:电池供电、USB 5V、3.3V数字、1.8V内核、模拟3.3V等。电源树就是把这些电压的来龙去脉画清楚。
你想想看,如果传感器需要3.3V,MCU内核需要1.8V,Wi-Fi模块需要3.3V但瞬间电流高达500mA——这些需求不梳理清楚,板子一上电就可能电压跌落、复位重启。
电源树设计原则:
- 分级供电:从输入源开始,逐级降压。例如:USB 5V → LDO 3.3V → DCDC 1.8V。
- 模拟与数字分离:模拟电路(ADC、运放)用独立的LDO供电,避免数字噪声串扰。
- 去耦电容就近放置:每个IC的电源引脚旁边放一个100nF电容,距离不超过5mm。
我曾经踩过的坑:有一块板子,Wi-Fi模块一发射就死机。查了半天,发现3.3V电源走线太细,瞬间压降超过200mV。后来加了一个470μF电解电容 + 把走线加宽到40mil,问题解决。去耦电容不是摆设,它是电源的“蓄水池”。
下面这张SVG图,把IoT开发板的电源树结构画清楚了:
去耦电容的选型与布局:
| 电容类型 | 容值 | 用途 | 放置位置 |
|---|---|---|---|
| 陶瓷电容 | 100nF | 滤除高频噪声(10MHz以上) | 每个IC电源引脚旁 |
| 陶瓷电容 | 10μF | 滤除中低频纹波 | 每个电压域入口 |
| 电解电容 | 100~470μF | 储能、应对瞬态大电流 | 电源输入总端 |
我个人的布局习惯:先放100nF电容,紧贴MCU电源引脚,走线越短越好。然后在电源入口放10μF电容。如果空间允许,再加一个100μF电解电容。别小看这几个电容,它们决定了你的板子抗不抗干扰。
3.3 GPIO与外围接口:UART/I2C/SPI
GPIO是MCU和外界沟通的“手脚”。但光有GPIO还不够,你得学会用协议和外部设备对话。UART、I2C、SPI是IoT开发中最常用的三种接口。
3.3.1 UART:最简单的点对点通信
UART就是串口,两根线(TX、RX)就能通信。异步传输,不需要时钟线。波特率要一致,否则数据全是乱码。
典型应用:调试日志输出、蓝牙模块通信、GPS模块数据读取。
// UART连接方式(交叉连接)
MCU_TX → 模块_RX
MCU_RX → 模块_TX
GND → GND
// 波特率常用值:9600、115200、921600
我曾经犯过的错:画原理图时把TX和RX接反了,结果调试口死活不出数据。后来加了一个跳线帽,方便交叉切换。现在我的所有板子,UART接口都预留TX/RX交换跳线。
3.3.2 I2C:多设备共享总线
I2C只需要两根线:SCL(时钟)和SDA(数据)。所有设备挂在同一条总线上,通过地址区分。速度通常100kHz或400kHz。
关键点:SCL和SDA必须接上拉电阻(典型值4.7kΩ)。没有上拉电阻,总线拉不高,通信失败。
| 参数 | 标准模式 | 快速模式 |
|---|---|---|
| 时钟频率 | 100kHz | 400kHz |
| 上拉电阻 | 4.7kΩ | 2.2kΩ |
| 最大总线电容 | 400pF | 400pF |
| 常用设备 | 温湿度传感器、EEPROM | 加速度计、OLED屏 |
3.3.3 SPI:高速全双工通信
SPI用四根线:SCK(时钟)、MOSI(主出从入)、MISO(主入从出)、CS(片选)。速度可以跑到几十MHz,适合摄像头、显示屏、SD卡等高速设备。
SPI vs I2C 怎么选?
- 速度优先:选SPI。SPI没有地址帧开销,时钟可以跑很高。
- 引脚优先:选I2C。两根线挂一堆设备,省GPIO。
- 距离优先:UART更适合长距离(RS232/RS485)。
我的经验:在IoT开发板上,我通常把调试口用UART,传感器用I2C,显示屏/存储用SPI。这样分工明确,调试和生产都方便。
3.4 本章小结
这一章我们聊了MCU最小系统的构成、电源树的设计思路、去耦电容的选型布局,以及UART/I2C/SPI三种接口的选型要点。你想想看,这些知识其实都是相通的——最小系统保证芯片能跑,电源树保证跑得稳,接口保证能和外设对话。
下次拿到一份原理图,先看最小系统齐不齐,再看电源树有没有分级、去耦电容够不够,最后检查接口连接是否正确。按这个顺序来,能帮你省下大量排查时间。