3. 系统架构设计:模块划分原则、接口定义、电源树与时钟树规划、系统框图绘制
好,咱们进入第三讲。系统架构设计,说白了就是给电路画“骨架”。很多新手一上来就画原理图,结果画到一半发现引脚不够用,或者电源走线绕成蜘蛛网。我个人的习惯是,先花 30% 的时间把架构想清楚,后面 70% 的活儿才能顺风顺水。
3.1 模块划分:别把鸡蛋放一个篮子里
模块划分,核心就四个字:高内聚,低耦合。什么意思?
- 高内聚:一个模块只干一件事,而且干得漂亮。比如电源管理模块,就别把 MCU 的 GPIO 也塞进去。
- 低耦合:模块之间通过标准接口通信,别搞“你中有我,我中有你”的纠缠。
我在项目中遇到过最典型的反面教材:有人把 LED 驱动和温度传感器放在同一个模块里,结果换了个 LED 型号,整个温度采集逻辑都得重写。你想想看,这多折腾?
具体怎么分?我一般按功能域来切:
- 电源域:DC-DC、LDO、电池管理、上电时序控制。
- 主控域:MCU/MPU、DDR、Flash、时钟源。
- 模拟域:ADC、DAC、运放、传感器接口。
- 通信域:UART、I2C、SPI、CAN、以太网。
- 人机交互域:按键、LED、显示屏、触摸。
3.2 接口定义:定好规矩,少吵架
模块之间怎么握手?接口定义就是“法律条文”。我建议用一张表格把接口说清楚:
| 接口名称 | 类型 | 电平标准 | 速率 | 备注 |
|---|---|---|---|---|
| SPI_CLK | 输出 | 3.3V CMOS | 10MHz | 主控→外设 |
| I2C_SDA | 双向 | 开漏,上拉到3.3V | 400kHz | 需加4.7kΩ上拉 |
| UART_TX | 输出 | 3.3V CMOS | 115200bps | MCU→调试口 |
| PWR_EN | 输出 | 3.3V CMOS | DC | 使能信号,低有效 |
嗯,这里要注意:接口定义里一定要写清楚“谁做主,谁做从”。我曾经吃过一次亏,两个模块都以为自己是主设备,结果 I2C 总线直接锁死,排查了整整两天。
3.3 电源树与时钟树:电路的“血管”和“脉搏”
3.4 电源树规划
电源树,就是给每个模块分配“口粮”。你得搞清楚:
- 每个模块需要几伏电压?
- 电流多大?
- 上电顺序有没有要求?
- 纹波噪声容忍度是多少?
举个例子,一个典型的物联网设备电源树:
电池 (3.7V)
├── DC-DC (3.3V) → MCU、传感器、WiFi模块
├── LDO (1.8V) → 模拟电路、ADC参考
└── LDO (1.2V) → 核心电压(如果MCU需要)
我个人的习惯是:先粗后细。先估算总功耗,再逐级分配。比如总电流 500mA,那 DC-DC 至少要选 800mA 的型号,留足余量。
3.5 时钟树规划
时钟是电路的“心跳”。时钟树规划不好,整个系统就像得了心律不齐。
关键点:
- 时钟源选择:晶振、有源振荡器、PLL 倍频。精度要求高的用温补晶振(TCXO)。
- 时钟分配:一个时钟源能不能带多个负载?要看驱动能力。一般晶振只能带 1-2 个负载,多了得加时钟缓冲器。
- 时钟域隔离:不同频率的时钟域之间,一定要用异步 FIFO 或双口 RAM 做同步处理。否则亚稳态会让你怀疑人生。
举个例子:
主晶振 (16MHz)
├── MCU 主时钟 (16MHz)
├── PLL 倍频 (80MHz) → 定时器、PWM
└── 分频 (32.768kHz) → RTC 实时时钟
你想想看,如果 RTC 的 32.768kHz 是从 16MHz 分频得来的,那精度完全取决于主晶振。而主晶振一般误差在 ±50ppm,一天下来可能差好几秒。所以高精度 RTC 必须用独立的 32.768kHz 晶振。
3.6 系统框图绘制:一图胜千言
系统框图,是给所有人看的“地图”。画图时我遵循三个原则:
- 从左到右:信号流向从左到右,电源从上到下。
- 模块化:每个模块用方框表示,框内写功能名称。
- 标注关键信号:比如 SPI、I2C、中断线、电源轨。
我一般用 Draw.io 或 Visio 画,但如果你手头只有纸笔,也完全够用。关键是逻辑清晰。
举个例子,一个温湿度采集器的系统框图:
[传感器] --I2C--> [MCU] --UART--> [WiFi模块]
| | |
3.3V 3.3V 3.3V
| | |
[LDO] <-- [DC-DC] <-- [电池]
嗯,画完框图后,我建议你拿着它去跟软件工程师、结构工程师对一遍。很多时候,硬件觉得没问题的地方,软件那边可能跑不通。比如中断引脚分配,硬件觉得随便一个 GPIO 就行,但软件可能要求固定引脚以优化中断响应时间。
好了,这一讲的核心就是:先想清楚再动手。模块划分、接口定义、电源时钟、系统框图,这四步走扎实了,后面的原理图设计就是“填空”而已。下一讲咱们聊原理图设计规范,到时候见。