一、前言:从想法走向实物
上一篇《从想法到实物》中,我列出了 SmartDesk V1 的需求清单:一个基于 STM32 的桌面中枢控制器,包含 EC11 编码器、OLED 屏幕和环境传感器。但“想法只是 10%,剩下 90% 都在原理图和 PCB 里”。
这一篇,我将完整复盘我是如何用立创 EDA 把草图变成可打样的板子。从电源模块的设计,到 MCU 最小系统的搭建,再到最终的 PCB 布局布线与 3D 预览。如果你也在学画板,这篇可以作为你的实战参考。
二、原理图设计:模块化拆解与选型确认
为了让电路清晰易维护,我将整个系统拆解为四个核心模块:电源模块、MCU 模块、外设模块、预留模块。
1. 电源模块:Type-C 直供与 3.3V LDO
我选择了 Type-C 接口作为唯一供电入口,板载 AMS1117-3.3V 稳压芯片,确保外设和 MCU 的稳定工作。
-
防倒灌设计:在 VBUS 路径上串联了一个肖特基二极管(D1),防止意外短路或反向供电烧毁 USB 口。
-
LDO 输入滤波:在 AMS1117 的输入端(VIN)并联了 10uF 和 104(0.1uF)电容,输出端(VOUT)同样并联 10uF 和 104 电容,保证电源纹波足够小。
-
保险丝保护:USB 输入端串联了 1206 封装的 0.5A 保险丝(F1),提供过流保护。

2. MCU 模块:STM32F103C8T6 最小系统
主控选用经典的 STM32F103C8T6(U2)。
-
时钟电路:采用了 8MHz 的外部高速晶振(X1),搭配 22pF 的起振电容(C5, C6),为 USB 通信和系统运行提供精准时钟。
-
复位电路:使用了标准的 RC 复位电路(R1, C1)配合复位按键(SW1),确保系统上电稳定复位。
-
下载接口:引出了 SWD 接口(PA13, PA14),方便后续用 ST-Link 调试。
-
USB 引脚:PA11 (USB_DM) 和 PA12 (USB_DP) 预留,用于后续移植 USB HID 协议模拟键盘/鼠标。

3. 外设模块:交互与传感器的桥梁
这一部分是 SmartDesk 的灵魂,负责处理所有的外部交互。
-
编码器与按键:EC11 编码器(SW3)连接在
PA1(A相)和PA2(B相),按下功能接在PA0。独立按键 SW2 和 SW4 分别接在PA3和PC13。 -
OLED 屏幕:0.96 寸 I2C 接口的 OLED(U3)连接在
PB6(SCL)和PB7(SDA),并串联了 4.7K 的上拉电阻(R11, R12)。 -
环境传感器:SHT30(U4)和 BH1750(U5)均通过 I2C 总线挂载,地址区分明确。为了方便后期维护,我在 I2C 信号线上加了 100nF 的滤波电容(C15, C16)。
-
电源控制:为了配合下一篇的低功耗设计,我用了一个 P-MOS 管(Q1, SI2303)来控制外设的供电,通过 MCU 引脚控制通断。

4. 预留模块:为扩展留足空间
为了不让板子显得拥挤,我将未使用的引脚全部引出到了 1x8 的排针(H5-H8)上。这样既方便以后外接电机、风扇,也便于调试时飞线测量电压。

📌 一个小遗憾:
我在设计电源模块时,一开始没考虑到 AMS1117 的压降问题。当输入电压是 5V,输出 3.3V 时,如果负载电流超过 200mA,LDO 会明显发热。虽然 SmartDesk V1 目前功耗不高,但如果未来我要接风扇或 LED 灯带,可能就得换 DC-DC 了。下次设计前,我会先算一下最大负载功耗。
三、PCB 设计:为什么我坚持手动布线
画完原理图,生成网表导入 PCB 后,面对密密麻麻的飞线,我果断放弃了自动布线。
1. 布局策略:核心优先,接口靠边
-
核心区:STM32 芯片放在正中间,周围环绕晶振和去耦电容(C17, C18),保证最短回路。
-
接口区:Type-C 接口放在左下角,编码器(SW3)放在右上角,这样手握旋钮时线材不会硌手。
-
传感器区:SHT30 和 BH1750 放在板子边缘,方便靠近桌面环境采集数据。
2. USB 差分线处理:抗干扰是关键
虽然 STM32F103 做 USB 全速设备对阻抗要求没那么苛刻,但为了稳定性:
-
USB_DM和USB_DP两条线尽量等长、平行走线。 -
周围包地处理,避免被高频信号干扰。
-
走线避开晶振和开关电源的噪声源。
3. 电源与地平面:铺铜的艺术
-
地平面:底层(Bottom Layer)大面积铺地,顶层(Top Layer)也尽量多打过孔连接,形成“地笼”,降低 EMI。
-
电源线:3.3V 和 5V 电源线宽加粗至 20mil 以上,确保载流能力。
-
散热考虑:AMS1117 下方多打过孔,把热量传导到底层铜皮,防止 LDO 在大电流下过热。
📌 一个布局失误:
我把 OLED 屏幕放在了板子右下角,但实际组装时发现——旋钮和屏幕离得太近,手指旋转旋钮时容易碰到屏幕边框。虽然不影响功能,但手感不够优雅。下次我会提前用 cardboard 做个纸模模拟握持姿势。
📌 另一个布线妥协:
为了节省空间,我把 USB 差分线走在了顶层,虽然包地了,但没有完全等长(误差约 0.3mm)。目前测试没问题,但理论上可能影响 USB 稳定性。下次我会用“差分对约束”功能强制等长。
四、DRC 与工厂规范:那些年我踩过的坑
在导出 Gerber 前,必须进行 DRC 检查。这里分享两个我差点翻车的点:
-
安全间距(Clearance):
之前我用默认规则,线距设得太小(0.05mm),提交 JLCPCB 时被工厂驳回。这次我严格设置为 6mil,所有过孔也设为 0.4mm/0.8mm,完美通过。
-
丝印方向:
元件位号和极性标识(如二极管、电解电容)全部调整到统一方向,并且距离焊盘至少 0.2mm,防止焊接时丝印脱落。
五、3D 预览与打样:看到成品的那一刻
立创 EDA 的 3D 预览功能真的太香了!导入封装后,我看到了真实的板子效果。

从 3D 图可以看出:
-
Type-C 接口(USB1)位置合理,插拔顺畅。
-
EC11 编码器的沉孔尺寸精确,正好能嵌入金属旋钮。
-
所有排针和按键的高度都经过计算,装进亚克力外壳时不会顶到盖子。
六、第一次上电:心跳时刻
收到板子后,我手工焊接了关键器件(STM32、AMS1117、Type-C)。
-
上电前:先用万用表测了一下 Type-C 接口的 VBUS 对地阻值,确认没有短路。
-
上电测试:接入 5V 电源,用万用表测得 AMS1117 输出端电压稳定在 3.3V。
-
连接 ST-Link:成功识别到 STM32 芯片,那一刻悬着的心终于放下了。
七、总结与下一篇预告
硬件落地是最枯燥但也最踏实的一步。看着原理图变成一块块真实的电路板,这种成就感无可替代。
在 SmartDesk V1 的硬件设计中,我学会了:
✅ 模块化思维画图
✅ 手动布线的精细把控
✅ DRC 规则的严格遵循
但这只是开始,真正的挑战在固件。 下一篇,我们将进入《SmartDesk V1 固件实战:Keil MDK + 标准库 + FreeRTOS 移植》,看看如何让这块板子真正“活”起来,实现旋转旋钮调节音量、读取温湿度等功能。
如果你对本文有任何疑问,或者想看某个模块的详细放大图,欢迎在评论区留言!
372

被折叠的 条评论
为什么被折叠?



