工程实践:STM32F103Cx最小系统设计
工程实践导航
说明
STM32F103Cx 最小系统的设计。文章内容主要包含:设计指南、器件选型、实际设计、制作测试、归纳总结等。
STM32F103Cx 最小系统的设计原则是模块化,目的是方便验证、方便手动焊接、以及批量机器焊接、方便拆装更换,方便维修查找 PCB 的故障。相比于传统的最小系统设计,将传统的最小系统分化为两块板子,分别命名为最小系统核心板和最小系统底板,最小系统核心板,集成了最核心的部分,以及小型化、模块化,仅包含微控制器、晶振电路、控制器滤波电容电路、电源指示灯、全引脚板对板微型连接器;其中本来包含 LDO 电源电路,但是研究发现,对于不同的电源,LDO 的需求不同,无法找到通用合适的 LDO,尤其在电源容量紧张的场景,所以电源模块单独成模块设计,方便更换,但是最小系统核心板必须用独立的电源模块供电,即某电源模块给该核心板供电后,不能给其他模块使用。最小系统底板,也是必须配套的,和一般的底板有所不同,底板包含一些直插的器件和模块,主要是:核心板底座、USB接口、程序下载接口 JTGA、电源模块底座、2.54mm排插排母座、电源接线口等。最小系统底板提供对核心板核心功能的验证或使用:供电、下载程序、兼容洞洞板排针或排母等功能。即核心板和最小系统底板,以及电源模块构成市面上常见的最小系统。这样缺点当然是多了板对板连接器,尺寸和重量会些微增加,增加连接器等成本,但是用的都是手机电脑主板级别的连接器,尺寸和重量均很小。反而带了很多好处:1. 降低设计复杂度,小模块小模块的设计,比整板设计更容易。2. 缩短周期、提振信心。3. 方便焊接、维修。不用再重新做一整块板子,用哪个焊哪个,坏哪个修哪个。4. 降低成本,方便更换以及复用。5. 便于升级,可以重新设计某一个模块,以此增加它的性能。
最小系统核心板
设计指南和器件选型
主要依据元器件的手册、网上资料和个人经验总结设计指南,依据设计指南,选择合适低价的元器件。
板对板连接器
电流要求:
- 单片机最大电流为 150mA
- led 最大电流为 20mA
所以连接器应该选择电流能力大于等于 0.3A的。
- 板对板连接器 SGD-05-M/F-020P-2X-G21 单个引脚的最大电流为 0.5A。同时 3mm 的高度是最低的,价格最便宜的,只在淘宝卖,嘉立创无,不可用其他连接器替代,但是客服提供图纸和 3D 模型。2024年4月23日,单个的价格为 1 元。
双晶振
STM32微控制器通常外接两个晶振,分别是低速晶振(32.768 kHz)和高速晶振(通常为8 MHz)。这两个晶振的作用如下:
- 低速晶振(LSE):提供外部低速时钟,通常用于实时时钟(RTC)电路的时钟源,以及为低功耗模式下的计时提供服务。如果设计中不需要RTC功能,可以选择不焊接此晶振。低速晶振的启动时间比高速晶振短,但在校准之后的时钟频率精度相对较差。
- 高速晶振(HSE):提供外部高速时钟,用于生成更精确的系统时钟。这个时钟源对于需要高稳定度时钟的应用来说是非常重要的。高速晶振的频率通常为8 MHz,但可以根据产品需求选择其他频率,只需注意倍分频的设置。
结论:两个晶振都要
晶振选型可参考本博客文章无源晶振详解。
低速晶振选型
设计无源晶振,手册第54页要求如下:
- CG 和 CL 选用高质量陶瓷电容,容值在 5pF-15pF。
- 晶振的选择上,频率为负载电容要小于等于 7pF,不要选择 12.5pF。
- 电路板典型的杂散电容值为:2-7pF,我们用 4pF 计算。
晶振选型方案如下:
典型的,常见 MC-306、MC-405、MC-406 的这种 32.768 kHz 晶振不是不能选择,负载电容典型值为:12.5 pF,但是需要定制,常见为 6pF、7pF、9pF 和 12pF,所以要注意选择合适的负载电容值。尺寸还有更小的 MC-146、MC-146,以及更小的 FC-135、FC-145、FC-255。还有更小的 FC-12M,但是不是主流。
最终选择 FC-135 32.768KHz ±20ppm 7pF,因为在淘宝和嘉立创上常见,同时 AN2867 手册中也推荐了 FC-135。2024年4月23日价格为 0.5元,运费 2 元。
电容计算得到典型值是 6pF,范围是 0 - 10 pF。选择精度高的:5%。预留一个电阻位,控制驱动电流,默认先焊接 0 Ω。
高速晶振选型
8MHz,需要查看 AN2867 手册。具体设计还挺麻烦的,这里进行简化:
- Load capacitance 负载电容。(控制震荡频率)
- 这个晶振是工作晶振,不需要低功耗,手册对负载电容的大小无限制,这样 CG 和 CL 相比之前的低速晶振设计,容值就大一点,拉升频率能力更弱(期望和实际负载电容偏差时,频率变化越小)。
- 手册要求电容 CG 和 CL 容值在 5pF-25pF之间。
- 取杂散电容为 4pF,则匹配晶振的负载电容范围是 6.5-16.5 pF。
- Oscillator transconductance 振荡器跨导。(控制震荡稳定)
- 为了使振荡开始并达到稳定相位,振荡器必须提供足够的增益来补偿回路损耗并为振荡积累提供能量。
- 振荡回路临界晶体增益 \(g_{mcrit}\)。\(g_{mcrit} = 4 \cdot ESR \cdot (2πF)^2 \cdot (C0 + CL)^2\)。ESR 值查看手册。
- 最大临界晶体跨导 \(g_m\) 由芯片 STM32 手册给出。
- 最后计算收益边际公式:\(gain_{margin} = g_m / g_{mcrit}\),设计要求确保该值大于 5。
- 暂不继续深入。暂不考虑本点要求。
- Drive level and external resistor calculation
驱动电平和外部电阻的计算
- 预留一个电阻位,控制驱动电流。焊接 0 Ω 电阻即可,具体计算暂不了解。
- Crystal pullabilty 晶体的波动性,也被称为晶体灵敏度
- 暂不考虑。
- PCB design guidelines PCB设计指南
- 离芯片近,具体是什么近呢?中间不要有其他元器件,即芯片-晶振电路-其他元器件。
- 电容对称
- 电容还是晶振更靠近芯片,无这种说法。
- 不能太多测试点
- 正面 GND 包裹晶振电路,并通过多过孔连接 PCB 背后的 GND。背后的 GND 要求完全覆盖晶振电路,且不连接总 GND,而是通过正面的包裹的 GND 线条一个端点连接总 GND。
- 强烈建议晶振电路 PCB 区域应用保形涂层。特别是石英下方,以防止可能导致启动问题的潮湿,灰尘,湿度和极端温度。
- 如果使用金属封装的晶体,请勿将其连接到振荡器地。
- 高速信号线离晶体管电路保留间距,如 30 mils。
- 焊接
- 谨慎焊接,焊接是一个敏感的过程,特别是对于低频晶体。
- 温度过高会损坏 ESR。
晶振选型方案如下:
- 扬兴科技 YSX321SL 3225 8M 12PF 10PPM。价格最便宜,2024年4月23日单价0.5,无运费。
- 计算 CG 和 CL 容值电容为:16pF。
LED
LED 没有什么电气的特殊要求。选择价格便宜的、有规格书的。 LED 注意额定电压和额定电流即可。XL-1608 系列电阻价格最便宜,在嘉立创上可购买。
型号 | 颜色 | 100+价格 | 1000+价格 | 链接 | 额定参数 | 3.3V限流电阻 | 5V限流电阻 |
---|---|---|---|---|---|---|---|
XL-1608UWC-04 | 白 | 0.035 | 0.028 | 链接 | 5mA 2.6-3.0V | 60-140Ω | 400-400Ω |
XL-1608SURC-04 | 红 | 0.029 | 0.023 | 链接 | 20mA 2.0-2.4V | 65-133.3Ω | 130-150Ω |
XL-1608UYC-04 | 黄 | 0.043 | 0.035 | 链接 | 20mA 1.9-2.3V | 50-70Ω | 135-155Ω |
XL-1608UBC-04 | 蓝 | 0.024 | 0.019 | 链接 | 20mA 2.7-3.3V | 0-30Ω | 85-115Ω |
XL-1608UGC-04 | 翠绿 | 0.027 | 0.022 | 链接 | 20mA 2.7-3.3V | 0-30Ω | 85-115Ω |
2024年4月24日。其中 1608 代表封装尺寸,最后 04 或者 06 代表高度。C 前面的字母代表颜色。限流电阻计算的是理论值,电阻也是有额定最大功率的,在几十W到几百W之间,不同型号功率不一样。工作电流不用满额定值上运行,这样太亮了,一般可以是几 mA 的电流,所以电阻计算的在几百 Ω,常用默认选择最大 1KΩ 即可。另外考虑芯片 IO 引脚最大电流驱动力:25mA,电压 4v,所以用芯片控制 LED 的,也要用电源为 3.3V 的,不要用 5V 的驱动电压,以免LED损坏短路时,损坏芯片。电阻选择大于 200Ω,先默认 1 KΩ。
电源模块
查阅手册:
- 单片机的最大工作电流为 150mA。
- 单片机电源电压范围为 2.4-3.6V,典型值为3.3V。
- 普通 I/O 接口输入电压范围为 0-5V,能充分兼容 5V 传感器。
- LED 最大电流为 20mA,按照 20mA 计算。
所以核心板按照负载 200mA电流计算。常见的电源电压为 5V 和 3.3V,输入和输出电压压差为 0 - 1.7V,开关稳压的稳压压差一般大于 2V,所以我们选择一款线性稳压 LDO,希望能在电源电压为 5V 和 3.3V时均能输出合适的电压供核心板工作,对于 LDO,我们的需求是:
- LDO 压降不能超过 3.3 - 2.4 = 0.9V。越小越好,越小效率越高。
- LDO 最大电流不能低于 300mA。
- 5V输入,3.3V输出的情况下,温升不能超过50℃。计算温升系数要低于 50 ÷ ((5-3.3)*0.2) = 147.06 ℃/W 左右。
- 满足以上前提下选择尺寸更小的 LDO 型号和封装。
这很难筛选,经常调查,LDO 的电流能力越大,对散热要求越高,尺寸越大,大一点常见的封装为 SOT-223-3,压降也随之增大,常见至少为 1.1V,无法适应 3.3V 的工作电压;LDO 尺寸越小,常见最小封装为 SOT-23-5,压降随之减小仅有几百 mV,但是电流能力大大降低,散热能力大大减弱,温升系数达到 200℃/W 以上,无法适应 5V 的工作电压,在该电压下发热将超标,甚至损坏电器。
虽然这个设计电源只供核心板使用,本想集成在核心板上,不得已单独执着电源模块。这样反而有好处:1. 适应不同的电源,不同的电源用不同的电源模块。2. 类似其他的核心板电源需求,也可以使用这种电源模块。
- 5V 电源
- AMS1117-3.3,满足要求,为
150 ℃/W。2024年4月24日且价格便宜为 10+:0.24/个
100+:0.21/个。压降典型值为 1.3V。
- 满足 3.8 - 5V电源的需求。
- AMS1117-3.3,满足要求,为
150 ℃/W。2024年4月24日且价格便宜为 10+:0.24/个
100+:0.21/个。压降典型值为 1.3V。
- 3.3V 电源
- 可以直连
- 2.5V - 3.5V 的电压可以直连
- ME6211C33M5G-N,最大压降为 260mV,满足设计要求,具体参考本博客文章基础元器件-LDO。2024年4月24日价格:10+:0.3 100+:0.25。
- 可以直连
后面会分为两个电源模块进行设计,5V的可以用在最小系统底板上,3.3V的可以用在 1S 锂电 3.7V 电压电源的四旋翼上。
原理图
查阅手册:
- STM32F103Cx 总共 48 个引脚,其中电源正极和电源负极总共 4 对,即 8 个引脚;晶振占用 4 个引脚;因此最少引脚数为 48-8-4+2=38个,两个2x10pin的板对板连接器即可。
- 除了 USB 以外全是低速信号线,PA11 和 PA12 固定作为 USB的引脚。
- 除了 BOOT0 还有 BOOT1。BOOT1 的引脚名为 PB2,PB2 固定作为 BOOT1 功能。
- 正好空了两个引脚,和 3.3V、GND 对应,防止板子插反方向,插反的话,核心板不工作,电源指示灯不亮。
PCB
- 准备好元器件手册
- 每个元器件都应该有 3D 模型
布局、走线设计思路:
- 查看芯片手册,了解各个引脚的功能。
- 引脚复用,多个引脚构成一组功能,应该连续走线,不要分开成两个底座走线
- 上下拆分较为合理分配:29-7一组,8-28一组。
- 区分高速信号线和低速信号线。优先走高速信号线,只有 USB 是高速信号线。
- 引脚复用,多个引脚构成一组功能,应该连续走线,不要分开成两个底座走线
- 晶振电路设计,额外增加 GND 包裹,用来屏蔽干扰。
- 对于晶振走线等长,并没有很严格的要求,可以先更改网络名,跳过电阻,等长后在直线处替换电阻。
要求
- 打板过孔最小内径为 0.3mm,最小外径为 0.4mm。
- 电源防呆设计。
- 要么反插,插不进去。
- 要么正反插效果一样。
- 要么反差电源脚留空,无法工作。该板采用此设计。
设计过程:
- 布局
- 联通走线
- 调整布局、更改线序
- 联通走线
- 调整丝印
- 设置原点,设置板子外形,更改板子形状
- 标注尺寸
检查:
- 是否 100% 联通
- 走线是否规范
- 电源检查、GND检查
- 特别是线宽和过孔大小。
- 元器件模型高度检查
- 间距检查,方便焊接
额外工作
- 添加丝印,如 logo、二维码
- 添加测试点
- 电源正负极,加丝印
- 晶振输出(对于芯片是输入),加丝印
元器件 BOM
分类 | 描述 | 标号 | 封装 | 数量 | 供应商1 | 供应商2 | 价格 | 购买数量 | 支出 |
---|---|---|---|---|---|---|---|---|---|
贴片电容 | 100nF (104) 10% 50V | C1, C2, C3, C4 | 0603_C | 4 | 嘉立创0.014 | 0.056 | 0 | 0 | |
贴片电容 | 6pF (6R0) 0.25pF 50V | C5, C6 | 0603_C | 2 | 嘉立创0.017 | 0.034 | 0 | 0 | |
贴片电容 | 16pF (160) 5% 50V | C7, C8 | 0603_C | 2 | 嘉立创0.017 | 0.034 | 0 | 0 | |
发光二极管 | 红灯 0603 | D1 | 0603_LED_S1 | 1 | 嘉立创0.035 | 淘宝0.02+3 | 0.035 | 100 | 5 |
板对板连接器 | M 20p 2x10p 0.5mm 7.2-3.62-2.2mm 3mm 50V 0.5A 50mΩ -30-80℃ | H1, H2 | SGD-05-M-020P-22 | 2 | 淘宝1+0.88 | 2 | 8 | 8.88 | |
贴片电阻 | 0Ω (0R0) ±1% | R3, R4 | 0603_R | 2 | 嘉立创0.0067 | 0.0134 | 0 | 0 | |
贴片电阻 | 1KΩ (1001) ±1% | R5 | 0603_R | 1 | 嘉立创0.0063 | 0.0126 | 0 | 0 | |
ARM | STM32F103CBT6 | U1 | LQFP-48_19.6_393_58X11_SMD | 1 | 嘉立创9.83 | 淘宝3.6 | 3.6 | 5 | 18 |
贴片晶振 | 32.768KHz ±20ppm 7pF | Y1 | SMD-3215_2P FC - 135 | 1 | 嘉立创1.56 | 淘宝0.5+2 | 0.5 | 10 | 7 |
贴片晶振 | 8MHZ 12PF 10PPM | Y2 | SMD-3225_4P | 1 | 嘉立创0.88 | 淘宝0.5 | 0.5 | 10 | 5 |
总计:0.56 + 0.034 + 0.034 + 0.02 + 2 + 0.0134 + 0.0126 + 3.47 +0.5 +0.5 + 0 = 7 元。
其他颜色也得买,白、红、黄、蓝、绿,都买一百个:5 * 2 + 3 = 13。母座也得买,12个共12元。13 + 12 + 8.8 + 18 + 7 + 5 + 0 = 63.8 元。
打板:20 元。总计:83.8 元。2024年4月25日打板,并购买元器件。
检查入库
元器件已经检查入库。
X32258MOB4SI 事物的引脚和手册以及参考图片引脚有出入:
解决方法:
- 直接焊接。先不管,直接焊接、有问题再拆焊。
- 浪费时间,先放着,没有急切的必要,也不是这件事儿卡着。
- 飞线。
- 翻转,订书钉法。翻转以后正好引脚对应得上。紧急情况下尝试。没必要尝试,浪费时间、可能短路、难操作、无意义。
- 飞线。麻烦、丑陋、浪费时间、无意义。
- 询问卖家。等消息。
- 在嘉立创买新的。有运费一起买。
PCB检查
PCB外观没有问题。
焊接顺序
3D 模型确定焊接顺序、实物确定焊接顺序:
U1、H1、H2、C1、C2、 C3、C4、Y2、Y1、R4、 C6、R3、C7、R5、C5、 D1、C8。
焊接方向:
U1:正面点对丝印点。 Y2:背面斜角对应丝印点。 D1:背面横杠远离丝印横杆。背面三角指向丝印横杠。
焊接问题
- 对于电烙铁手动焊接,所有焊点都应该是均匀的在焊盘和引脚之间有肉眼可见的焊锡,如同雪一样包裹引脚、覆盖焊盘,引脚和焊盘之间的连接处,不再阶梯,而是平滑,即焊接上了。否则应该重焊、补焊。
电源模块
AMS1117-3.3
这个要用 22uf 的钽电容,最小的钽电容 A 系列 就有 1.6 mm 高。连接器就用之前的。之前的更新了,出 10p的了。但是没有资料,给了参数:
10P A=4.7 B=2 C=4.1 D=3.1