Initial: knowledge base

This commit is contained in:
2026-08-05 17:25:09 +08:00
parent bfabe83832
commit 5700eb4115
35 changed files with 5140 additions and 11 deletions
+109
View File
@@ -0,0 +1,109 @@
# 电容选型与保护电路踩坑
> **类别:trap** | **芯片:cross-platform** | **主题:电容选型与保护电路踩坑 (MLCC偏压降容 / TVS钳位)**
>
> 代价:偏压降容导致实际电容远低于标称值,ADC纹波偏大;保护电路"超标"却无需修改
## 坑1:MLCC偏压降容——标称≠实际(2026-07-26)
### 案例:电子宠物V1.0 C24
- 位号:原选型=C24(IP5306充电模块外围), 终审升级=C24
- 标称值:原选型=22µF 10V 0603 C59461, 终审升级=22µF 16V 0805 C45783
- 问题:原选型=10V额定在5V工作点偏压降容严重,实际容量可能只剩标称的40-60%, 终审升级=16V额定在5V工作点偏压影响小,0805封装同容量偏压特性更优
### 核心规则
1. **额定电压留2倍余量** — 5V工作点选10V额定已经偏紧,选16V才稳。MLCC的DC偏压曲线是非线性的,工作电压越接近额定电压,容量掉得越狠
2. **同容量大封装偏压特性更好** — 0805的22µF比0603的22µF在相同偏压下实际容量更高,因为大封装介质层更厚更稳定
3. **充电IC外围电容尤其敏感** — IP5306等充电芯片的外围电容直接影响充电稳定性和纹波,偏压降容会导致充电异常
### 选型速查
- 3.3V:最低额定=6.3V, 推荐额定=10V, 推荐封装=0402/0603
- 5V:最低额定=10V, 推荐额定=16V, 推荐封装=0603/0805
- 12V:最低额定=25V, 推荐额定=25V/35V, 推荐封装=0805/1206
> 偏压降容是MLCC的物理特性,不是质量问题。选型时直接按推荐额定选,省得终审再改。
## 坑2VDDA bulk电容不足——1µF兜不住ADC纹波(2026-07-26
### 案例:电子宠物V1.0 C2
- 位号:原选型=C2ESP32-S3 VDDA去耦), 终审升级=C2
- 标称值:原选型=1µF 0402 C52923, 终审升级=10µF 0402 C96446
- 问题:原选型=VDDA路径仅1µF bulk+0.1µF去耦,ADC采样纹波偏大, 终审升级=10µF bulk大幅改善纹波,0402封装不变不占额外面积
### 核心规则
1. **VDDA路径需要比VDD更多的bulk电容** — 模拟电源对纹波更敏感,1µF bulk在ADC高频采样时不够用
2. **先看封装再定容量** — 0402已经能做到10µF(C96446),不需要为增容换大封装
3. **C4保留1µF不跟着升** — C4是VDD普通去耦,不是VDDA路径,需求不同不能一刀切
### ESP32-S3 VDDA去耦推荐
```
VDDA ─── 10µF 0402 (C96446, bulk) ─── 0.1µF 0402 (高频去耦) ─── GND
```
> VDDA bulk升10µF是ESP32-S3做ADC采集的基本操作,1µF是底线不是推荐值。
## 坑3TVS钳位电压"超标"≠必须修改(2026-07-26
### 案例:电子宠物V1.0 D3 TVS
- TVS钳位电压:数值=9.2V, 说明=5V单极性TVS在大电流下的物理极限
- IP5306 Abs.Max:数值=5.8V, 说明=芯片绝对最大耐压
- 看起来:数值=超标!, 说明=但实际…
### 结论:接受,不改
1. **浪涌是瞬态的,不是持续过压** — TVS钳位9.2V只发生在ESD/浪涌的微秒级瞬态,不是持续9.2V加在IP5306上
2. **5V单极性TVS的物理限制** — 这是该类型TVS的固有特性,除非换更贵的双向TVS或更低钳位电压方案,否则无解
3. **芯片Abs.Max不等于瞬态容忍上限** — Abs.Max是持续工作极限,瞬态过冲芯片有设计余量承受
4. **成本效益比** — 为这个加成本换方案不值得,三审均认可接受
### 判断框架
```
TVS钳位 > 芯片Abs.Max
├─ 是 → 持续过压?→ 必须改
├─ 是 → 瞬态浪涌?→ 看幅度和持续时间
│ ├─ 微秒级、幅度可控 → 通常可接受
│ └─ 毫秒级或幅度过大 → 需换方案
└─ 否 → 无问题
```
> 不是所有"超标"都要改,分清瞬态和持续是关键。TVS的物理限制不是设计缺陷。
## 坑4:BOM同值元件升级后需拆分行(2026-07-26)
### 案例:C2和C4原来合并在BOM同一行
C2和C4原来都是1µF,BOM合并为一行。终审C2升级到10µF后,C4的1µF需要单独保留一行。
### 规则
- **BOM合并看值不看人** — 同值元件合并是压缩BOM的常用做法,但升级其中一个后必须拆回来
- **改BOM时先扫关联** — 不是只改目标位号那一行,要检查是否有其他位号共享同一行
## 坑5:网表改了,拓扑和方案文档也得改(2026-07-26)
### 案例:C24/C2终审升级后的三方同步
网表里C24和C2改完了,但云端拓扑连接图和方案文档还是旧值,下载后不对齐。
### 同步清单
- 网表(EDA):需改内容=位号·封装·C编号
- 拓扑连接图:需改内容=参数表+BOM表+注释
- 方案文档:需改内容=关键约束条目+设计变更记录
### 规则
- **改网表=改三处** — 网表、拓扑、方案文档是三位一体,改一处必须改三处
- **变更记录必填** — 每次终审优化/设计变更,在拓扑和方案的变更记录区新增条目,写清日期和内容
- **下载前对齐** — 投板前最后一次检查:网表值=拓扑值=方案值,三方一致才下单
---
*2026-07-26 | 电子宠物V1.0终审优化踩坑*
+359
View File
@@ -0,0 +1,359 @@
# Electrical Constraints Reference
> **类别:reference** | **主题:电气约束通用规范** | **信源:** 多平台汇总
## Table of Contents
- [Platform Comparison Summary](#platform-comparison-summary)
- [Raspberry Pi Electrical Details](#raspberry-pi-electrical-details)
- [Voltage Levels](#voltage-levels)
- [Current Limits](#current-limits)
- [Power Rails](#power-rails)
- [Internal Pull Resistors](#internal-pull-resistors)
- [Safe Driving Patterns](#safe-driving-patterns)
- [ESP32 Electrical Details](#esp32-electrical-details)
- [Voltage Levels](#voltage-levels)
- [Current Limits](#current-limits)
- [Power Consumption](#power-consumption)
- [Internal Pull Resistors](#internal-pull-resistors)
- [Drive Strength Configuration](#drive-strength-configuration)
- [Pull-up and Pull-down Resistors](#pull-up-and-pull-down-resistors)
- [When Required](#when-required)
- [Calculation Formula](#calculation-formula)
- [Strength Guidelines](#strength-guidelines)
- [Consequences of Wrong Value](#consequences-of-wrong-value)
- [Level Shifting](#level-shifting)
- [When Required](#when-required)
- [Method 1: Voltage Divider (5V → 3.3V, Unidirectional)](#method-1-voltage-divider-5v--33v-unidirectional)
- [Method 2: N-Channel MOSFET (Bidirectional)](#method-2-n-channel-mosfet-bidirectional)
- [Method 3: Dedicated Level Shifter ICs](#method-3-dedicated-level-shifter-ics)
- [Method 4: Direct Connection (3.3V → 5V Input)](#method-4-direct-connection-33v--5v-input)
- [Common Mistakes and Warnings](#common-mistakes-and-warnings)
- [NEVER Do This](#never-do-this)
- [ALWAYS Do This](#always-do-this)
- [Quick Reference Card](#quick-reference-card)
- [Formulas](#formulas)
- [Quick Values](#quick-values)
- [Current Limits Summary](#current-limits-summary)
- [Voltage Summary](#voltage-summary)
- [Common Pin Restrictions](#common-pin-restrictions)
---
## Platform Comparison Summary
- Logic voltageRaspberry Pi=3.3V, ESP32=3.3V
- Max per-pin currentRaspberry Pi=16mA source/sink, ESP32=40mA max (20mA recommended)
- Aggregate GPIO currentRaspberry Pi=**50mA total**, ESP32=~1200mA total (chip limit)
- 5V tolerantRaspberry Pi=**NO**, ESP32=**NO**
- Internal pull-upRaspberry Pi=~50kΩ, ESP32=~45kΩ typical
- Internal pull-downRaspberry Pi=~50kΩ, ESP32=~45kΩ typical
- Drive strengthRaspberry Pi=Fixed, ESP32=Configurable (5-40mA)
- Input threshold (VIH)Raspberry Pi=~1.8V, ESP32=~2.0V
- Input threshold (VIL)Raspberry Pi=~0.8V, ESP32=~0.8V
---
## Raspberry Pi Electrical Details
### Voltage Levels
- **All GPIO pins operate at 3.3V ONLY**
- **5V on any GPIO pin WILL PERMANENTLY DAMAGE the SoC**
- No built-in overvoltage protection
- No built-in ESD protection (handle with care)
### Current Limits
- Per-pin source16mA, Consequence of Exceeding=Voltage droop, pin damage
- Per-pin sink16mA, Consequence of Exceeding=Voltage rise, pin damage
- **Total GPIO****50mA**, Consequence of Exceeding=Instability, crashes, permanent damage
**Critical:** The 50mA limit is across ALL GPIO pins combined, not per-bank.
### Power Rails
- 3.3VSource=Onboard regulator, Available Current=~50mA for peripherals, Notes=Shared with Pi's 3.3V needs
- 5VSource=USB/PSU direct, Available Current=1-2A minus Pi consumption, Notes=No regulation, direct pass-through
- GNDSource=Common ground, Available Current=N/A, Notes=8 ground pins on header
### Internal Pull Resistors
- GPIO0-8Default State=Pull-UP, Resistance=~50kΩ
- GPIO9-27Default State=Pull-DOWN, Resistance=~50kΩ
**Note:** Internal pulls are too weak for I2C (need 4.7kΩ external).
### Safe Driving Patterns
- Single LEDMethod=330Ω-1kΩ series resistor, Notes=3-10mA safe
- Multiple LEDsMethod=Transistor driver, Notes=If total >50mA
- RelayMethod=Transistor/MOSFET + flyback diode, Notes=Never direct from GPIO
- MotorMethod=Motor driver IC (L298N, DRV8833), Notes=Never direct from GPIO
- Buzzer (passive)Method=Transistor driver, Notes=Inductive load
- Buzzer (active)Method=Direct if <16mA, Notes=Check current draw
---
## ESP32 Electrical Details
### Voltage Levels
- **All GPIO pins operate at 3.3V ONLY**
- **5V on any GPIO pin WILL DAMAGE the chip**
- No built-in overvoltage protection
- Some ESD protection but don't rely on it
### Current Limits
- Per-pin max40mA, Notes=Absolute maximum
- Per-pin recommended20mA, Notes=For reliability/longevity
- Total chip~1200mA, Notes=Includes WiFi, BT, CPU
### Power Consumption
- Active + WiFi TXCurrent Draw=80-240mA, Notes=Peaks during transmission
- Active + WiFi idleCurrent Draw=20-68mA, Notes=Connected but not transmitting
- Active, no radioCurrent Draw=20-68mA, Notes=CPU running
- Modem sleepCurrent Draw=3-20mA, Notes=WiFi paused, CPU active
- Light sleepCurrent Draw=0.8mA, Notes=CPU paused, RTC running
- Deep sleepCurrent Draw=10-150µA, Notes=Only RTC + ULP available
### Internal Pull Resistors
- Standard GPIOPull-up=Yes, Pull-down=Yes, Resistance=~45kΩ
- GPIO34-39Pull-up=**NO**, Pull-down=**NO**, Resistance=N/A (input-only)
**Note:** Internal pulls are too weak for I2C (need 4.7kΩ external).
### Drive Strength Configuration
- 5mACurrent=Weakest, Use Case=Low power, slow signals
- 10mACurrent=Low, Use Case=General purpose
- 20mACurrent=Default, Use Case=Most applications
- 40mACurrent=Maximum, Use Case=Fast edges, heavy loads
Higher drive strength = faster edges but more EMI/noise.
---
## Pull-up and Pull-down Resistors
### When Required
- I2C bus (SDA)Pull Type=Pull-UP, Typical Value=**4.7kΩ**
- I2C bus (SCL)Pull Type=Pull-UP, Typical Value=**4.7kΩ**
- 1-Wire bus (DQ)Pull Type=Pull-UP, Typical Value=**4.7kΩ**
- Button to GNDPull Type=Pull-UP, Typical Value=10kΩ
- Button to VCCPull Type=Pull-DOWN, Typical Value=10kΩ
- SPI CS linePull Type=Pull-UP, Typical Value=10kΩ
- Open-drain outputPull Type=Pull-UP, Typical Value=1-10kΩ
- UART RX (optional)Pull Type=Pull-UP, Typical Value=10kΩ (noise immunity)
- Reset linePull Type=Pull-UP, Typical Value=10kΩ
### Calculation Formula
```
R = (VCC - VOL) / IOL
Where:
VCC = Supply voltage (3.3V)
VOL = Output low voltage (~0.4V)
IOL = Required sink current (3mA for I2C)
Example (I2C):
R = (3.3V - 0.4V) / 3mA = 967Ω minimum
Typical choice: 4.7kΩ (provides margin)
```
### Strength Guidelines
- 1kΩ:Use Case=Long wires, high capacitance, fast I2C, Notes=Strong pull, higher current
- 4.7kΩ:Use Case=Standard I2C, 1-Wire, general purpose, Notes=Most common choice
- 10kΩ:Use Case=Buttons, CS lines, low-power, Notes=Standard digital pull
- 47-100kΩ:Use Case=Wake-up inputs, ultra-low power, Notes=Very weak, slow rise time
### Consequences of Wrong Value
**Too high (weak pull):**
- Slow signal rise times
- Noise susceptibility
- Communication errors at higher speeds
- May not reach valid HIGH level
**Too low (strong pull):**
- Excessive current consumption
- Device may not be able to pull line LOW
- Wasted power in battery applications
---
## Level Shifting
### When Required
- 5V logic output → 3.3V GPIO input
- 3.3V GPIO output → 5V input (if device doesn't recognize 3.3V as HIGH)
- Bidirectional communication between 3.3V and 5V systems
### Method 1: Voltage Divider (5V → 3.3V, Unidirectional)
**Use for:** Slow signals (<100kHz), input direction only
```
5V Signal ──[1kΩ]──┬──> 3.3V GPIO Input
[2kΩ]
GND
Output: 5V × (2kΩ / 3kΩ) = 3.33V
```
- Simple, cheapCons=Input direction only
- 2 resistorsCons=Slow (RC time constant)
- No active componentsCons=Loads the signal
### Method 2: N-Channel MOSFET (Bidirectional)
**Use for:** I2C, 1-Wire, open-drain signals up to 400kHz
```
3.3V Side 5V Side
│ │
[4.7kΩ] [4.7kΩ]
│ │
├────────┬──────────────────┬──────────┤
│ │ │ │
SDA Source Drain SDA
(3.3V) └───── BSS138 ─────┘ (5V)
Gate
3.3V
```
**Operation:**
- Gate tied to LOW side voltage (3.3V)
- When LOW side pulls down, MOSFET conducts, pulling HIGH side down
- When HIGH side pulls down, body diode conducts, pulling LOW side down
- Pull-ups restore HIGH state on both sides
- MOSFETSpecification=BSS138, 2N7000 (through-hole)
- Pull-upsSpecification=4.7kΩ on each side
- VoltageSpecification=3.3V on gate, low side; 5V on high side
### Method 3: Dedicated Level Shifter ICs
- TXB0104Channels=4, Type=Auto-direction, Speed=100 Mbps, I2C Safe?=**NO**
- TXB0108Channels=8, Type=Auto-direction, Speed=100 Mbps, I2C Safe?=**NO**
- PCA9306Channels=2, Type=I2C-specific, Speed=1 MHz, I2C Safe?=**YES**
- PCA9517Channels=2, Type=I2C buffer, Speed=400 kHz, I2C Safe?=**YES**
- 74LVC245Channels=8, Type=Unidirectional, Speed=100 MHz, I2C Safe?=N/A (direction pin)
- BSS138 modulesChannels=4, Type=Bidirectional, Speed=400 kHz, I2C Safe?=**YES**
**CRITICAL WARNING:** TXB-series level shifters do **NOT** work reliably with open-drain protocols (I2C, 1-Wire). They fight the pull-up resistors and cause communication errors. Use BSS138-based modules or PCA9306 for I2C.
### Method 4: Direct Connection (3.3V → 5V Input)
Many 5V devices recognize 3.3V as logic HIGH:
- VIH (HIGH threshold)Typical 5V TTL=2.0V, Typical 5V CMOS=3.5V
- VIL (LOW threshold)Typical 5V TTL=0.8V, Typical 5V CMOS=1.5V
**Check datasheet for VIH.** If VIH < 3.0V, direct connection usually works.
**NEVER** connect 5V output directly to 3.3V input — level shift or divide required.
---
## Common Mistakes and Warnings
### NEVER Do This
- Connect 5V directly to any GPIOConsequence=**Permanent chip damage**
- Drive relay coil directly from GPIOConsequence=Inductive kickback damages GPIO
- Drive motor directly from GPIOConsequence=Overcurrent, voltage spikes
- Exceed 50mA total on RPi GPIOConsequence=Voltage instability, damage
- Use ESP32 GPIO6-11 (WROOM)Consequence=Flash pins — chip crashes
- Pull GPIO12 HIGH at boot (ESP32)Consequence=**Flash voltage brick**
- Forget pull-ups on I2CConsequence=Communication failure
- Forget pull-up on 1-WireConsequence=Bus doesn't work
- Use TXB-series for I2CConsequence=Unreliable communication
- Assume GPIO is 5V tolerantConsequence=It's not — damage results
### ALWAYS Do This
- Use current-limiting resistor for LEDsReason=Prevents overcurrent (220-330Ω)
- Use flyback diode with relays/motorsReason=Catches inductive voltage spike
- Use level shifter for 5V ↔ 3.3VReason=Protects GPIO from overvoltage
- Check total current drawReason=Prevent exceeding limits
- Verify I2C addresses before wiringReason=Detect conflicts early
- Add 100nF decoupling capacitor near ICsReason=Reduces noise, improves stability
- Use external pull-ups for I2C (4.7kΩ)Reason=Internal pulls too weak
- Check ESP32 pin restrictionsReason=Strapping, flash, input-only
- Use transistor for loads >16mAReason=Protects GPIO
- Add ESD protection for external connectorsReason=Protects against static
---
## Quick Reference Card
### Formulas
**LED Resistor:**
```
R = (VCC - Vf) / If
R = (3.3V - 2.0V) / 10mA = 130Ω minimum
Recommended: 220-330Ω (5-10mA, plenty bright)
```
**Voltage Divider:**
```
Vout = Vin × (R2 / (R1 + R2))
For 5V → 3.3V: R1=1kΩ, R2=2kΩ
```
**Pull-up Resistor:**
```
R = (VCC - VOL) / IOL
Standard: 4.7kΩ for I2C/1-Wire, 10kΩ for buttons
```
### Quick Values
- LED resistor (3.3V, red/green)220-330Ω
- LED resistor (3.3V, blue/white)100-150Ω
- I2C pull-up**4.7kΩ** to 3.3V
- 1-Wire pull-up**4.7kΩ** to 3.3V
- Button pull-up/down10kΩ
- SPI CS pull-up10kΩ
- 5V → 3.3V divider1kΩ + 2kΩ
- Flyback diode1N4148 or 1N4007
- Decoupling capacitor100nF ceramic
### Current Limits Summary
- Raspberry PiPer Pin=16mA, Total GPIO=**50mA**
- ESP32Per Pin=20mA recommended, Total GPIO=~1200mA chip total
### Voltage Summary
- Logic HIGHRPi=3.3V, ESP32=3.3V
- Logic LOWRPi=0V, ESP32=0V
- Max inputRPi=3.3V, ESP32=3.3V
- 5V tolerantRPi=**NO**, ESP32=**NO**
### Common Pin Restrictions
**Raspberry Pi:**
- GPIO0/1: Reserved (HAT EEPROM)
- GPIO14/15: UART/BT conflict (Pi 3/4/Zero2W)
**ESP32:**
- GPIO6-11: Flash pins — **NEVER USE**
- GPIO12: Strapping — **DANGER** (flash voltage)
- GPIO16-17: PSRAM (WROVER only)
- GPIO34-39: Input only, no pulls
---
+85
View File
@@ -0,0 +1,85 @@
# ESP32-32D与S3选型踩坑
> **类别:compare** | **芯片:esp32 / esp32-d0wd / esp32-s3** | **主题:ESP32-D0WD vs ESP32-S3 选型对比**
>
> 代价:V2.5设计用了WROOM-32D但没加USB转串口芯片,板子到手无法烧录=变砖
## 坑1WROOM-32D没有原生USB
ESP32-WROOM-32D模组**没有原生USB**,不像C3/S3那样Type-C直连D+/D-就能烧程序。Type-C只能供电,**无法下载固件**。
**必须有USB转串口方案:**
- 方案A:板上加CH340/CH9102 + 自动复位电路(双NPN S8050 + 2×1kΩ),Type-C直接供电+烧录,成本+¥3~5
- 方案B:不加串口芯片,GPIO1(TXD0)/GPIO3(RXD0)引出到排针,用外接FTDI下载器烧,省钱但每次接线
**铁律:选32D方案,BOM里必须列出USB转串口芯片+外围,否则就是废板。**
## 坑2S3原生USB省大量器件
换S3后能省掉的:
- CH340/CH9102整颗IC + 外围晶振 + 4~5颗去耦电容
- 自动复位电路:2×S8050 + 2×1kΩ
- UART排针:GPIO1/GPIO3不用专门引出
- S3模组内部Flash更大(N8=8MB
**合计省7~8个器件,板上面积也省一块,布线更简单。**
## 坑3S3新增strapping和USB走线要求
S3虽省器件,但有新要求:
- **GPIO45/46是strapping**,必须按目标模式做上下拉,不能悬空
- **USB D+/D-走线**:等长、短线、少过孔,远离大电流走线,否则枚举反复断开
## 坑4GPIO12上拉导致Flash变砖
ESP32-32D的GPIO12是strapping pin,决定VDD_SDIO电压:
- **GPIO12上拉10kΩ → VDD_SDIO=1.8V → Flash无法工作**
- 正确:GPIO12下拉GND → VDD_SDIO=3.3V(默认安全值)
设计时必须检查所有strapping pin的偏置方向,不能随便加上拉。
## 坑5WROOM-32D模组内部已集成
- **Flash**N8后缀=8MB,封在模组内
- **晶振**40MHz,封在模组内
- **WiFi/BT**:共用2.4GHz射频前端和天线,时分复用,不需要额外加天线或射频器件
PCB上不用外接Flash、不用焊晶振,模组焊上去供电就能跑。
## 坑6:天线放置必须按乐鑫官方规则
**最佳方案:模组放板边,天线端伸出板边**
- 天线蛇形区域悬在板子外面,完全不接触PCB,信号最好
- 模组金属屏蔽罩下方要铺完整地铜
**天线没法伸出板边时:**
- 天线下方及周边**所有层禁止铺铜、走线、放元件**
- 净空区至少天线周围2mm范围内清空
- 板边挖掉天线区域的板材,给天线留出空间
**禁止做的事:**
- ❌ 天线区域下方有铜(任何层都不行)
- ❌ 模组放板子中间四周挖空
- ❌ 电池、金属螺丝、连接器靠近天线端
---
*2026-07-04 | V2.5设计踩坑总结*
## 坑7:C6同尺寸升级路径——彩屏备选方案(2026-07-12)
GBC V5.0当前用C3+I2C OLED,将来要上1.3寸彩屏时GPIO不够。C6是pin-to-pin兼容的升级路径:
- 封装:ESP32-C3-MINI-1=QFN, ESP32-C6-MINI-1-N4 (C5736265)=SMD-53P53脚(大半GND
- 尺寸:ESP32-C3-MINI-1=13×13mm, ESP32-C6-MINI-1-N4 (C5736265)=同尺寸兼容
- 可用GPIOESP32-C3-MINI-1=~13个, ESP32-C6-MINI-1-N4 (C5736265)=**22个**
- 嘉立创库:ESP32-C3-MINI-1=基础库, ESP32-C6-MINI-1-N4 (C5736265)=**扩展库**SMT有换料费
- 价格:ESP32-C6-MINI-1-N4 (C5736265)=$3.82/片
GBC V5.0当前用13个GPIOC6给22个剩9个富余,SPI彩屏4-6线绑绑有余,I2C/UART/USB全保留。
**决策:** GBC 5.0先C3+OLED投板,C6方案存档备用,等真要上彩屏再换芯(板壳不改)。
**注意:** C6在嘉立创扩展库,SMT会收换料费,小批量要算这笔账。
---
*2026-07-12 | C6升级备选方案归档*
+45
View File
@@ -0,0 +1,45 @@
# 四层板层叠与走线踩坑
> **类别:trap** | **芯片:cross-platform** | **主题:四层板层叠与走线踩坑**
> 来源:电子宠物V1.0 S3FH4R2裸片四层板设计讨论,2026-07-24
## 一、层叠分配
- 顶层:用途=信号走线+摆件, 铺铜策略=信号走完后空地铺GND铜皮
- 内层1:用途=GND, 铺铜策略=出厂整面铺铜,不手动走线
- 内层2:用途=3V3电源走线, 铺铜策略=只走线不铺铜,灵活性最高
- 底层:用途=信号走线, 铺铜策略=信号走完后空地铺GND铜皮
### 关键理解
- **GND铜皮有三层**:内层1完整铺 + 顶层空地补铺 + 底层空地补铺,通过过孔连成一体
- **3V3只走线不铺铜**:内层2走3V3拉线+过孔即可,铺铜反而浪费且不必要
- **顶层/底层铺GND是补铺**:先走完信号线,剩余空地再铺GND铜皮,别为了铺铜把信号线挤没了
## 二、走线优先级(四层板)
**核心原则:信号路径最死,3V3和GND怎么都能接,信号走不通的地方3V3内层2还能让路。**
### 执行顺序
1. **设置层叠**:内层1铺GND,内层2留空
2. **顶层走信号线**(最关键)——先把I2S+SPI这些主通路走通
3. **底层走信号线**——I2C、触摸、UART这些需要绕的
4. **内层2走3V3**——拉线+过孔,最后补,因为它最灵活
5. **顶层/底层空地铺GND铜皮**——收尾
### 为什么信号线先走
- 信号路径约束最多(起点终点固定、不能随意换层)
- 3V3走内层2有整层可用,可绕可让
- GND铺铜是最后收尾,有空就铺
## 三、铺GND铜皮的注意点
- **先走完信号线再铺GND**,不能反过来
- 顶层空地铺GND铜皮后,打过孔到内层1 GND,多一个回流路径,信号质量更好
- 底层同理,空地铺GND铜皮+过孔连内层1
- 最终效果:三层GND铜皮通过过孔连成一体,形成完整的GND回流网络
## 四、与两层板的区别
- GND处理:两层板=底层尽量少走线,保证完整地平面, 四层板=内层1完整GND,顶层底层补铺
- 电源走线:两层板=顶层/底层走,和信号争空间, 四层板=内层2专走3V3,不占信号层
- 走线难度:两层板=信号和电源挤在一起, 四层板=信号有顶层+底层两层,空间充裕
- GND质量:两层板=依赖底层铺铜完整性, 四层板=三层GND铜皮,回流路径最优
+230
View File
@@ -0,0 +1,230 @@
# PCB项目通用全流程工作清单 V3.0
> **类别:pcb** | **芯片:cross-platform** | **主题:PCB项目通用全流程工作清单 V3.0**
> 2026-06-28 | 整合V2.0(13铁律+8步审查+踩坑附录) + 方法论V2.0(9阶段+拓扑重审+模块整体分合+电源树)
---
## 通用铁律
1. **带病不推进**:每阶段出口条件不满足,不进下一阶段
2. **datasheet为唯一权威标准**:冲突时以技术手册为准,网搜结果需交叉验证
3. **双模型交叉验证**:审查环节智谱+DeepSeek双审,少一个不行。双模型必须独立审查,分别发问题文档各自输出,最后合并比对,不一致项人工复核,禁止同一对话传话
4. **先熟读再设计**:IC参数没吃透没资格画拓扑,参数是设计的基础弹药
5. **改方案比新建难**:在原有基础上改要跟旧惯性斗争,每个决定重新论证;已沉淀的弹药库/速查卡/踩坑规则是从0到1的资产
6. **方法论持续迭代**:踩过的坑沉淀为规则,每次整改后复盘方法论缺陷
7. **参考设计必须走完论证流程**:开源/参考设计与全新设计一视同仁,只提供典型值不提供你的场景可靠性
8. **数据锚点**:审查输出必须带数据锚点(net名/位号/数值),禁止模糊结论
9. **踩坑即记录**:新坑随时补进附录
10. **基线存档制**:原理图基线存档后不改,改版另起版本号
11. **网络标签功能性命名**:一个net一个名字,不复用不加后缀,禁下划线/空格/标点
12. **布局先规划后动手**:先九宫格分区确认再塞元件
13. **电源走顶层明面**VBUS/5V/3V3粗线顶层,信号底层
14. **外接座靠边放**:接口靠板边,连的元件就近
15. **接口必须对照官方**USB/UART/I2C等信号线阻容网络,与芯片手册/官方开发板逐脚对照,官方要求的一个不能省
16. **strapping引脚查默认态**:BOOT/EN等启动引脚,必须查上电瞬间默认电平,不能只看"按键按下"
17. **烧录链路必走查**:最后一道关——插上Type-C电脑能识别能烧录,全链路走一遍
18. **开发板拆解陷阱**:面包板验证的是拓扑逻辑,开发板内部兜底的接口细节你看不见,拆到PCB时这些全得自己画,漏一个就废板
19. **模块与整体必须分开做再融合**:模块化只管IC级参数/引脚阻容,整体性管网级连接/路径/时序,不能混着做否则两头都漏
20. **技术参数禁凭记忆瞎答**:必须先查文档再回复,宁慢勿错
---
## 一、思路碰撞
- ☐ 产品用途/核心功能/目标用户
- ☐ 技术路线选型 + 成本框算
-**核心工作模式定义(强制)**:有无电池、边充边用、低电量等场景下的系统行为,不定义不清不进下一步
- ☐ 功能说明文档:每模块输入/输出/精度 + 供电架构图 + 交互方式
- ☐ 架构审查:供电链路(压差+裕量) / 测量链路(量程匹配) / 保护链路(阈值),均带数值
-**反向场景审查**:插错/放反/过压/ESD,至少做到"坏了不冒烟",能自恢复更好
- ☐ 双模型交叉审查通过
**出口**:需求清单+约束条件+工作模式定义 双方确认 + 功能文档定稿 + 架构审查通过 + 三条链路有数值支撑
---
## 二、拓扑从零构建与独立论证
-**不沿袭旧设计**,独立重新论证每个连接的合理性,"之前这么设计的"不是理由
- ☐ 如发现IC不合适,该换就换,不将就
-**电源树绘制**:从电源入口开始,逐级画出经过的每一颗IC(充电、保护、开关、LDO),标出每级输入输出电压、电流能力
-**压降与耐压审查**:确认极端情况下后端器件输入电压在安全范围内,LDO压差足够
-**路径隔离论证**:充电路径和系统供电路径是共用/部分共用/完全独立,能否覆盖所有工作模式
- ☐ 双模型交叉审查通过
**出口**:拓扑完美无缺 + 无惯性遗留假设 + 电源树论证通过
注:**已有设计迭代时可先做阶段三再回阶段二**(IC参数校准→拓扑重审),省去重新选型步骤
---
## 三、IC选型与参数确认
-**先熟读再设计**:所有IC datasheet吃透,PDF图表信息(配置表/时序图/引脚图/特性曲线)必须翻原文件确认,文本提取不替代原图
- ☐ 逐IC建立技术档案:PDF+速查卡+引脚映射+电气特性
-**逐pin合规审查**
- Strapping/电源/特殊功能引脚逐条对照datasheet
- **电源完整性审查(强制)**:确认IC供电范围、上电斜率要求、所需去耦电容容值和数量,尤其检查MCU内部LDO需外部电容的引脚
- **复位/EN引脚时序审查(强制)**:确认原理图上有阻容延迟电路或电压监控复位IC,无此电路不进下一阶段
- ☐ 优先基础库(省换料费¥20/种),扩展库确认库存
- ☐ 封装统一(阻容0805起步),关键器件确认替代方案
-**新手坟场封装规避**:验证板优先SOP/SOT-23/0603以上,走线不挤不强行上QFN/0402
- ☐ BOM vs datasheet交叉对比,确认无遗漏元件
- ☐ BOM:位号/型号/封装/编号/数量/库类型/备注,SMT/自焊/外接分开
- ☐ 每个编号去商城搜过不靠记忆,封装实物匹配,换料费核算
**出口**:所有IC参数锁死 + 速查卡与PDF原图一致 + BOM冻结零冲突 + 编号已核实 + 换料费已算
---
## 四、分模块验证
- ☐ 模块化只管IC级参数、引脚阻容配置
- ☐ 逐模块标定:压降、稳定性、电流、驱动能力
- ☐ 双模型交叉验证(智谱+DeepSeek),禁止单模型结果直接用
**出口**:每个模块独立验证通过,参数在控制内
---
## 五、整体审视
- ☐ 整体性管网级连接、路径、时序
- ☐ 回头看模块标定的参数,在整体运行时有无问题
- ☐ 阻容根据拓扑运算结果调整
- ☐ 确认板级合理性(电源路径、信号流向、接口一致性)
-**总线/接口完整性审查**
- 开漏总线(I2C等)原理图上显式画出上拉电阻,阻值匹配速率和节点数
- 对外接口ESD防护(至少留TVS管位置)
- 连接器/开关触点在关键信号路径上的接触电阻对测量精度影响
- 高速/敏感信号终端匹配或阻抗连续性考虑
- ☐ 双模型交叉审查通过
**出口**:整体网络校验通过 + 阻容配置合理 + 接口完整性确认
---
## 六、网络标签规划
- ☐ 每个net:名称 + 连接引脚列表 + 功能说明
- ☐ 同名net超2个模块→强制拆中间节点
- ☐ 采样元件两端必须不同net名(否则被旁路=致命)
- ☐ 供电net和测量net分开命名,禁止后缀区分
**出口**:网络总表定稿 + 采样电阻两端net名不同 + 双模型审过
---
## 七、原理图绘制
- ☐ 分模块画,虚线框围起标注模块名,模块内直连跨模块用标签
- ☐ 每模块画完立即:放标签对照总表 / 悬空引脚标NC / 自焊件标注
-**对外接口逐脚对照官方**:每个模块与外部连接器的信号完整性要求,对照芯片手册参考设计(串联电阻/上下拉/匹配电容),单独检查项覆盖
- ☐ DRC/ERC → 0错误0警告
**出口**:模块画完 + 标签与总表一致 + 无悬空 + 接口对照官方通过 + DRC零报错
---
## 八、原理图审查(核心,八步缺一不可)
### 8.1 DRC/ERC → 0错误0警告
⚠ DRC只查物理规则,不查功能/拓扑错误
### 8.2 网表逐条核对
每个net三问:该连的连了吗?多连了吗?漏连了吗?
**逐元件值比对**:网表PARTTYPE/Value必须与BOM逐一对照,阻值/容值/型号不一致立即标红,连通性正确≠值正确
### 8.3 接口信号完整性审查(独立项)
USB D+/D-串联电阻、CC上下拉、I2C上拉、时钟匹配等,**独立于功能审查**,跨模块连接规范逐条检查
### 8.4 strapping引脚上电时序专项
所有影响启动/下载/复位的引脚,查**默认态**(上电瞬间上下拉决定的电平),不只看按键动作。制作真值表验证每种组合合法
### 8.5 烧录链路完整性走查
从USB座→D+/D-→芯片GPIO→BOOT/EN时序→固件加载,每个节点确认能正常工作。**最后一道关口**
### 8.6 与官方开发板差异对比
用官方开发板原理图做参照模板,逐模块逐脚比对。所有偏离官方的改动记录原因
### 8.7 DeepSeek识图审核
分模块截图标注网络标签+连接关系,喂DeepSeek识图,输出带数据锚点+存疑点
### 8.8 智谱文字深检+交叉验证
喂网表+功能文档+标签总表+DeepSeek存疑点,与8.7交叉比对,两个模型都通过才算过
**双模型必须独立审查**:分别发问题文档,各自独立输出结论,最后合并比对。不一致项人工复核。禁止在同一对话里让两边传话
**出口**:八项全绿 → 原理图基线存档
---
## 九、PCB设计
- ☐ 布局预规划:九宫格分区图,电气相关模块相邻,放电通路一列到底
-**模拟/数字分区**:ADC走线远离I2C时钟等高频数字信号
- ☐ 布局:信号流 电源→MCU→外设,热敏件远发热区,去耦紧贴IC
- ☐ 提炼各IC的PCB layout硬约束(EP过孔/去耦放置/天线净空/走线规则等),按约束清单逐条布局布线
- ☐ 走线:放电1mm→电源0.5mm→信号0.25mm,GND铺铜,大电流直线不过孔,功率焊盘全连接禁十字花
- ☐ DRC→0 + 3D预览无重叠
**出口**DRC通过 + 3D确认 + layout约束逐条满足 + STEP已导出
---
## 十、下单前终检
- ☐ BOM↔原理图双向核对 + SMT库存确认 + 换料费预估
- ☐ Gerber完整性 + 成本核算
**出口**:下单文件齐 + 成本确认 + 三方一致
---
## 十一、实物验证
-**电源分步上电法**
- 第一步:不焊MCU等贵重器件,先验证充电IC和LDO,示波器看启动波形无过冲/震荡
- 第二步:焊MCU最小系统(电源+EN+下载口),确认稳定识别、可下载程序
- 第三步:逐个加入外围模块,问题隔离在最小系统
- ☐ 目检 → 万用表短路排查(3V3/GND, VBUS/GND, VBAT/GND,绝不上电先)
-**烧录失败直接终止**,排查硬件,不继续后续功能测试
- ☐ 功能模块逐级验证 → 电池接入(最后)
- ☐ 各引脚参数在控制内、有冗余
- ☐ 资深老手终审
- ☐ 问题记录:致命/重要/轻微
**出口**:实物测试通过 + 产品可交付
---
## 附录:踩坑记录
- 采样电阻被同名net旁路→短路:严重度=致命, 防范措施=同名net超2模块必须拆中间节点,采样两端net名不同, 对应阶段/审查步=六/8.2
- USB D+/D-缺串联电阻+D+上拉→电脑无法枚举:严重度=致命, 防范措施=外部通信接口必须对照芯片手册参考设计,逐脚核对阻容网络, 对应阶段/审查步=8.3/8.6
- BOOT接错引脚+GPIO8 NC→非法启动组合:严重度=致命, 防范措施=strapping引脚必须查默认态+做真值表, 对应阶段/审查步=8.4
- BOOT按键常低→永远进下载模式出不来:严重度=致命, 防范措施=BOOT默认高电平(上拉3V3),按下才拉低, 对应阶段/审查步=8.4
- 嘉立创编号靠记忆写错:严重度=重要, 防范措施=BOM审核时每个编号必须搜库确认, 对应阶段/审查步=三
- MOSFET Vgs(th)与驱动电压不匹配:严重度=重要, 防范措施=MOS选型必须确认驱动电压能完全导通, 对应阶段/审查步=三
- ESP32-C3下载模式与ESP32-D相反:严重度=致命, 防范措施=每次用新MCU先查下载模式,不惯性套用, 对应阶段/审查步=8.4
- 6P Type-C无数据线→无法烧录:严重度=致命, 防范措施=烧录链路完整性必须作为独立检查项, 对应阶段/审查步=8.5
- 开发板拆解丢接口细节→废板:严重度=致命, 防范措施=拆到PCB时必须逐项检查"开发板做了什么我没画", 对应阶段/审查步=8.3/8.6
- 模块验证OK整体漏→网络级问题:严重度=致命, 防范措施=模块与整体必须分开做再融合, 对应阶段/审查步=五
- PDF图表信息文本提取遗漏:严重度=致命, 防范措施=必须翻PDF原图确认,文本不替代图, 对应阶段/审查步=三
- 拓扑沿用旧设计→惯性假设残留:严重度=致命, 防范措施=拓扑独立论证,"之前这么设计的"不是理由, 对应阶段/审查步=二
- 工作模式未定义→供电架构矛盾:严重度=致命, 防范措施=阶段一强制定义工作模式, 对应阶段/审查步=一
- 电源树未画→压降/路径问题漏审:严重度=致命, 防范措施=拓扑阶段强制绘制电源树+压降审查+路径隔离论证, 对应阶段/审查步=二
- 参考设计盲目抄→场景不适用:严重度=重要, 防范措施=参考设计必须走完论证流程, 对应阶段/审查步=铁律7
---
## 相比V2.0增补内容
- ✅阶段一新增工作模式定义(强制出口)
- ✅新增阶段二:拓扑从零构建与独立论证(电源树+压降审查+路径隔离)
- ✅阶段三强化:电源完整性审查+复位/EN时序审查为强制项
- ✅新增阶段四:分模块验证(独立于整体审视)
- ✅阶段五强化:总线/接口完整性审查
- ✅阶段十一强化:电源分步上电法
- ✅铁律增至20条,新增模块整体分合/参考设计论证/方法论迭代等
- ✅踩坑记录增补5条(模块整体/PDF图表/拓扑惯性/工作模式/电源树/参考设计)
- ✅整体审视与模块验证明确分离,不再混做
+64
View File
@@ -0,0 +1,64 @@
# SMT下单踩坑记录
> **类别:trap** | **芯片:cross-platform** | **主题:SMT下单踩坑 (封装选错 / 换料费)**
>
> 代价:换料费多花几十上百,元件选错封装返工
## 坑1:不查基础库直接选扩展库
嘉立创器件库分三级,换料费差距巨大:
- 基础库:0元/种
- 推荐库:¥5/种
- 扩展库:¥20(编带)/¥30(管装)/种
每次下单全量计费,无复购减免。5片小单换料费能占总成本30%+。
**省费案例:**
- R8从扩展库0.1Ω换成C25334基础库100mΩ——省¥20
- SW2/SW3从C561516换成C720477基础库——省¥20
- AO3400A C20917本身就是基础库,别选错成扩展库版本——省¥20
- GBC版总计省¥60换料费
## 坑2:大功率电阻基础库没有
0805及以下封装的电阻基础库很全,但1206以上大功率电阻基本没有。
**对策:** 大功率负载电阻手焊不进SMT(2Ω 5W绕线/5Ω 2W金属氧化膜),淘宝几毛钱一个。
## 坑3:连接器占换料费大头
XH4P插座每个¥20GBC版3个就¥60。
**对策:** NES版砍掉所有XH插座,OLED/电池座/开关全用焊盘直焊+飞线外接,省掉连接器换料费+省板面空间。
## 坑4:经济型SMT规则
- 无钢网费·无需工艺边和Mark点·最小支持10×10mm板
- 非经济型需工艺边+Mark点+钢网费
- 拼板用邮票孔,禁V-CUT
- 只贴单面
- SMT必选¥3工程核验
## 坑5:扩展库有货直接贴
扩展库有现货的直接交换料费贴片,不用自己买元件寄仓库。只有私有库才需要自购寄仓(耗时一两周)。
## 铁律
- 选型先搜基础库,搜不到再考虑扩展库
- 连接器能用焊盘替代就用焊盘
- 大功率电阻手焊
- 下单前逐个确认嘉立创编号与EDA一致
## 坑6:MOS管选型—参数好≠选它(2026-07-11)
### 案例:AO3400A vs IRLML2502
- 参数:AO3400A=够用(Vgs=3V3开透、Rds=30mΩ), IRLML2502 (IR/Infineon)=更好(Vgs一致性高、Rds标称更准、内置ESD)
- 嘉立创库:AO3400A=**基础库**,几毛钱, IRLML2502 (IR/Infineon)=扩展库,加钱
- 断货风险:AO3400A=基础库大批量不断货, IRLML2502 (IR/Infineon)=扩展库可能缺货还得换
**决策:试水阶段(首批20-30台)选AO3400A,基础库稳比参数好重要。**
> 量产选型权衡:参数余量 vs 采购成本。以后量大了再考虑扩展库也不迟。