Files
rpicarrierboard/CM5_Carrier_Pinout_BOM.md
2026-06-24 10:36:31 -04:00

276 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CM5 Carrier — Pinouts, Nets & BOM
Companion to `CM5_Carrier_Design.md`. This is the schematic-capture worksheet: connector pinouts, the net list grouped by interface, and a BOM with candidate MPNs.
> **Sourcing note on CM5 ball/pin numbers:** the two 100-pin connectors (J1 = pins 1100 top, J2mod = pins 101200 bottom) carry every CM5 signal. Rather than transcribe 200 pins (error-prone), this sheet references CM5 signals by their **datasheet net names**; pull exact pin numbers from the official CM5 KiCad symbol when capturing. All *user-facing* connector pinouts (40-pin, 14-pin J2, USB, GPS, PPS, UART) are given exactly. The 40-pin map below is verified against the CM5/Pi-5 standard.
---
## 1. Connector inventory & reference designators
| RefDes | Connector | Notes |
|--------|-----------|-------|
| J1 / J2MOD | 2× 100-pin DF40 (to CM5) | Hirose DF40C-100DS-0.4V mate; 1.5/2.0/4.0 mm stack options |
| J_PWR | 15 VDC input | barrel jack or 2-pin locking |
| J_ETH | RJ45 magjack (GbE) | 1:1, integrated magnetics |
| J_E | M.2 E-key socket (2230) | Wi-Fi (AW7915) |
| J_USB1 | USB-A (USB3) | |
| J_USB2 | USB-A (USB3) | |
| J_UPROG | USB-C | rpiboot/programming |
| J_GPIO | 40-pin 2.54 mm header | Pi HAT |
| J2 | 14-pin 2.54 mm header | CM5IO J2 reference |
| J_UART | 3-pin header | debug UART |
| J_GPS | 5-pin header | PPS+UART+3V3+GND |
| J_PPS1 | 2-pin header | PPS tap → UWB |
| J_PPS2 | 2-pin header | PPS tap → scope/spare |
| BT1 | CR2032 holder | RTC backup |
| J_FAN | 4-pin JST-SH | PWM fan (optional, keep from ref) |
---
## 2. 40-pin GPIO header (J_GPIO) — exact pinout
Standard Raspberry Pi / CM5 HAT pinout. **BCM GPIO** numbering.
| Pin | Signal | | Pin | Signal |
|-----|--------|--|-----|--------|
| 1 | 3V3 | | 2 | 5V |
| 3 | GPIO2 (SDA1) | | 4 | 5V |
| 5 | GPIO3 (SCL1) | | 6 | GND |
| 7 | GPIO4 (GPCLK0) | | 8 | GPIO14 (TXD0) |
| 9 | GND | | 10 | GPIO15 (RXD0) |
| 11 | GPIO17 | | 12 | GPIO18 (PCM_CLK) |
| 13 | GPIO27 | | 14 | GND |
| 15 | GPIO22 | | 16 | GPIO23 |
| 17 | 3V3 | | 18 | GPIO24 |
| 19 | GPIO10 (MOSI) | | 20 | GND |
| 21 | GPIO9 (MISO) | | 22 | GPIO25 |
| 23 | GPIO11 (SCLK) | | 24 | GPIO8 (CE0) |
| 25 | GND | | 26 | GPIO7 (CE1) |
| 27 | GPIO0 (ID_SD) | | 28 | GPIO1 (ID_SC) |
| 29 | GPIO5 | | 30 | GND |
| 31 | GPIO6 | | 32 | GPIO12 (PWM0) |
| 33 | GPIO13 (PWM1) | | 34 | GND |
| 35 | GPIO19 (PCM_FS) | | 36 | GPIO16 |
| 37 | GPIO26 | | 38 | GPIO20 (PCM_DIN) |
| 39 | GND | | 40 | GPIO21 (PCM_DOUT) |
**NMEA UART assignment (CORRECTED):** use **UART2** on GPIO4 (pin 7) / GPIO5 (pin 29) → cross to GPS RX/TX on J_GPS, enabled via `dtoverlay=uart2`. The **debug console keeps UART0** (GPIO14/15, pins 8/10) — there are no dedicated debug-UART pins on the CM5 connector (correction C2). Pins 7/29 are committed to GPS when J_GPS is fitted.
**Vref:** Pin 1/17 3V3 sets HAT logic level. CM5 GPIO bank is 3.3 V by default (R5 fitted equivalent); do not feed 1.8 V unless a deliberate Vref change is made on the module side.
---
## 3. 14-pin header (J2) — exact CM5IO reference
| Pin | Net | Function |
|-----|-----|----------|
| 1 | nRPIBOOT | jumper 12 → boot from USB |
| 2 | GND | |
| 3 | EEPROM_nWP | jumper 34 → write-protect EEPROM |
| 4 | GND | |
| 5 | NC | (reference: unassigned) |
| 6 | **SYNC** | IEEE 1588 timing — driven by PPS dist block (input to CM5). Maps to CM5 pin 18 `Ethernet_SYNC_OUT`, **3.3 V**. |
| 7 | NC | |
| 8 | NC | |
| 9 | NC | |
| 10 | NC | |
| 11 | NC | |
| 12 | PMIC_ENABLE | power enable/disable |
| 13 | BUTTON (wake/shutdown) | push-button |
| 14 | GND | button return |
> **CORRECTED (per `refs/CM5IO.kicad_sym`):** the CM5 timing pin is a single **`Ethernet_SYNC_OUT` on connector pin 18, at 3.3 V**, bidirectional (configurable as input). There is no separate 1.8 V SYNC_IN. **No level translation is needed** — the 3.3 V GPS PPS drives it directly through the Schmitt + a series R. See `CM5_Carrier_PinMap.md` §5 and correction C1.
---
## 4. M.2 E-key (J_E) — net assignment (Wi-Fi only, AW7915)
A+E key edge. Populate PCIe + control; leave USB pins NC.
| M.2 pin(s) | Net | To |
|------------|-----|-----|
| 32, 34 (PERST0#, etc.) | PCIE_PERST# | CM5 PCIe PERST |
| CLKREQ0# | PCIE_CLKREQ# | CM5 PCIe CLKREQ |
| REFCLK+ / REFCLK | PCIE_REFCLK_P/N | CM5 PCIe refclk (100 MHz) |
| PETp0/PETn0 | PCIE_TX_P/N | CM5 PCIe TX (AC-coupled on CM5) |
| PERp0/PERn0 | PCIE_RX_P/N | CM5 PCIe RX (AC-couple caps on carrier) |
| W_DISABLE1# (RF_KILL) | WIFI_DISABLE# | pull-up + optional GPIO |
| 3.3 V pins | +3V3_RF | from 15→3.3 V 4 A RF buck (direct) |
| GND | GND | |
| USB D+/D (E-key) | **NC** | Bluetooth not used |
PCIe pair impedance ~85 Ω diff. Keep REFCLK as a matched pair; series-couple per M.2 spec.
---
## 5. USB assignments
| Port | CM5 source net | ESD |
|------|----------------|-----|
| J_USB1 (USB-A) | USB3_0 (SS pairs + USB2 D±) | USBLC6-2SC6 |
| J_USB2 (USB-A) | USB3_1 (SS pairs + USB2 D±) | USBLC6-2SC6 |
| J_UPROG (USB-C) | USB2_0 (D±) + CC1/CC2 5.1k | USBLC6-2SC6 |
- USB-C is **device/programming** (rpiboot): wire D± to CM5 USB 2.0 port; CC1/CC2 each get 5.1 kΩ to GND (sink/UFP). Pair with nRPIBOOT jumper on J2.
- USB-A SuperSpeed pairs ~90 Ω diff; USB2 D± ~90 Ω diff.
- VBUS to USB-A from 5 V via current-limit switch (~0.91.2 A/port).
---
## 6. PPS / timing distribution — nets
```
J_GPS.PPS (3V3) ─► [TVS] ─► [Schmitt LVC1G17, 3V3] ─► PPS_CLEAN(3V3) ─┬─► [Rs 33100Ω] ─► CM5 pin 18 (SYNC, 3V3, cfg input)
├─► J_PPS1 (UWB tap, 3V3)
└─► J_PPS2 (scope tap, 3V3)
```
| Net | From | To | Level |
|-----|------|----|-------|
| GPS_PPS_RAW | J_GPS.1 | TVS → Schmitt in | 3.3 V |
| PPS_CLEAN | Schmitt out | fan-out (3 loads) | 3.3 V |
| PPS_SYNC | via Rs | CM5 pin 18 (SYNC) | **3.3 V** |
| NMEA_TX | CM5 GPIO4 (UART2 TX, pin 7) | J_GPS.RX | 3.3 V |
| NMEA_RX | CM5 GPIO5 (UART2 RX, pin 29) | J_GPS.TX | 3.3 V |
**Corrected detail:** CM5 SYNC (pin 18) is **3.3 V** — no level translation. The Schmitt squares the off-board GPS edge and the series Rs guards against a driver fight (pin 18 is bidirectional; board always configures it as input). PPS_CLEAN feeds all three loads at 3.3 V. **NMEA moved to UART2 (GPIO4/5)** so the debug console keeps UART0 (GPIO14/15) — see correction C2 in `CM5_Carrier_PinMap.md`.
### J_GPS (5-pin) pinout
| Pin | Net |
|-----|-----|
| 1 | PPS (in, 3V3) |
| 2 | NMEA_RX ← GPS TX (CM5 GPIO5 / UART2 RX, pin 29) |
| 3 | NMEA_TX → GPS RX (CM5 GPIO4 / UART2 TX, pin 7) |
| 4 | +3V3_AUX (out, to power module) |
| 5 | GND |
### J_PPS1 / J_PPS2 (2-pin each)
| Pin | Net |
|-----|-----|
| 1 | PPS_CLEAN (3V3) |
| 2 | GND |
---
## 7. Power tree — nets
```
J_PWR (15V) ─► D_REV(ideal-diode FET) ─► VIN_PROT ─► [TVS]
VIN_PROT ─► U_BUCK5 (15→5V, 5A) ─► +5V ─┬─► CM5 +5V (J1 5V input pins)
└─► USB VBUS switch ─► USB-A ×2
VIN_PROT ─► U_BUCK33R (15→3.3V, 4A) ─► +3V3_RF ─► E-key (AW7915) [direct, noise-isolated]
VIN_PROT ─► U_BUCK33A (15→3.3V, 1A) ─► +3V3_AUX ─┬─► GPS module
├─► PPS Schmitt buffer (3V3)
├─► IO pull-ups
└─► RTC domain
```
| Rail | Source | Current | Load |
|------|--------|---------|------|
| VIN_PROT | 15 V via ideal-diode | board total | buck inputs |
| +5V | U_BUCK5 | ≥5 A | CM5, USB VBUS, fan |
| +3V3_RF | U_BUCK33R (direct 15→3.3) | 4 A | AW7915 (33.5 A) — isolated RF rail |
| +3V3_AUX | U_BUCK33A (direct 15→3.3) | ~1 A | GPS, PPS buffer, IO, RTC — quiet rail |
| +VRTC | CR2032 / +3V3_AUX ORing | µA | CM5 RTC domain |
All three bucks see 15 V → rate ≥20 V. The 15→3.3 stages run ~22% duty; pick low-duty-capable controllers.
CM5 +5 V input lands on the DF40 **+5V (input)** pins (per 40-pin ref: pins 77/79/81/83 are +5V on the HAT; the module 5 V input is on the DF40 power pins — pull exact pins from KiCad).
---
## 8. Ethernet — nets (no external PHY)
CM5 BCM54210PE PHY pins (from DF40) → magjack. Per CM5 datasheet, a 1:1 magjack + ESD is all that's required.
| CM5 net | Magjack | Notes |
|---------|---------|-------|
| ETH_PAIR0_P/N | TX+/ (or MDI0) | 100 Ω diff |
| ETH_PAIR1_P/N | MDI1 | |
| ETH_PAIR2_P/N | MDI2 | |
| ETH_PAIR3_P/N | MDI3 | gigabit uses all 4 |
| ETH_nLED1/2/3 | jack LEDs (3V3) | activity/link |
| Bob-Smith term + ESD | cable side | TVS array, 75 Ω + 1 nF terms |
PoE pins of the magjack: leave **unloaded / NC** (no PoE in this design).
---
## 9. RTC
| Net | Part | Notes |
|-----|------|-------|
| RTC_SDA/SCL | CM5 I2C (dedicated RTC I2C on CM5) | CM5 has internal RTC; carrier provides battery backup |
| +VRTC | CR2032 via BT1 | back-up to CM5 RTC battery pin |
> CM5 has an **on-module RTC**; the carrier mainly provides the **CR2032 backup cell** to the CM5 RTC battery input (per CM5IO reference). If an *external* I²C RTC is also wanted (redundancy), add e.g. PCF85063A on a GPIO I²C — optional, default is just the coin cell to CM5.
---
## 10. Bill of Materials (per board) — candidate MPNs
| # | RefDes | Qty | Description | Candidate MPN | ~$ |
|---|--------|-----|-------------|---------------|-----|
| 1 | J1,J2MOD | 2 | 100-pin DF40 0.4 mm receptacle | Hirose DF40C-100DS-0.4V(51) | 1218 |
| 2 | U_BUCK5 | 1 | Sync buck 15→5 V, ≥5 A (≥20 V Vin) | TI TPS54560 / MPS MP2316 | 1.53 |
| 3 | U_BUCK33R | 1 | Sync buck **15→3.3 V, 4 A** (RF rail, ≥20 V Vin, low-duty) | TI TPS54424 / MPS MP2143 | 12 |
| 3b | U_BUCK33A | 1 | Sync buck **15→3.3 V, 1 A** (AUX/quiet rail, ≥20 V Vin) | TI TPS54202 / MPS MP2459 | 0.51.2 |
| 4 | D_REV | 1 | Ideal-diode/reverse-polarity ctrl + FET | TI LM74700-Q1 + CSD18xx FET | 1.22.5 |
| 5 | TVS_IN | 1 | TVS, >15 V standoff (e.g. 18 V) | SMBJ18A | 0.2 |
| 6 | J_ETH | 1 | RJ45 1:1 GbE magjack | Pulse JXD0-0001NL / Bel V890-1AX | 24 |
| 7 | ESD_ETH | 1 | Ethernet ESD array | TI TPD4E1U06 / Bourns | 0.30.6 |
| 8 | J_E | 1 | M.2 E-key (A+E) 2230 conn + standoff | Amphenol/Attend 119A-92A00 | 1.22 |
| 9 | C_PCIE | 4 | PCIe RX AC-couple 0.1 µF | GRM 0402 100 nF | 0.05 |
| 10 | J_USB1/2 | 2 | USB-A USB3.0 right-angle | Amphenol UE27AC54100 | 0.81.4 ea |
| 11 | J_UPROG | 1 | USB-C 16-pin (USB2 + CC) | GCT USB4085 | 0.51 |
| 12 | ESD_USB | 3 | USB ESD array | ST USBLC6-2SC6 | 0.15 ea |
| 13 | U_VBUS | 1 | USB VBUS current-limit switch | TI TPS2552 / AP22653 | 0.51 |
| 14 | U_SCHMITT | 1 | Single Schmitt buffer 3V3 | TI SN74LVC1G17 | 0.1 |
| 15 | ~~U_LVLSHIFT~~ | 0 | **REMOVED** — SYNC is 3.3 V, no translation needed (correction C1). Replace with one 0402 series R (in passives). | — | — |
| 16 | TVS_PPS | 1 | Low-cap TVS on PPS in | ESD9B / PESD | 0.1 |
| 17 | J_GPS | 1 | 5-pin 2.54 header | generic | 0.1 |
| 18 | J_PPS1/2 | 2 | 2-pin 2.54 header | generic | 0.05 ea |
| 19 | J_GPIO | 1 | 40-pin 2.54 dual header | generic | 0.50.8 |
| 20 | J2 | 1 | 14-pin 2.54 header | generic | 0.2 |
| 21 | J_UART | 1 | 3-pin 2.54 header | generic | 0.05 |
| 22 | BT1 | 1 | CR2032 holder + cell | Keystone 1058 + cell | 0.40.8 |
| 23 | J_PWR | 1 | 15 V barrel jack or 2-pin | CUI PJ-102AH | 0.40.8 |
| 24 | J_FAN | 1 | 4-pin JST-SH PWM fan → CM5 FAN_PWM (pin 19) + FAN_TACHO (pin 16) | JST SM04B-SRSS | 0.3 |
| 25 | — | ~60 | Passives (R/C/L), LEDs, TP, jumpers | 0402/0603 | 24 |
| | | | **Per-board BOM total** | | **~2847** |
DF40 pair (line 1) = ~4560% of BOM. Everything else commodity.
---
## 11. Net list summary (by interface)
| Interface | Nets | Endpoints |
|-----------|------|-----------|
| Power in | J_PWR, VIN_PROT, +5V, +3V3_RF, +3V3_AUX, +VRTC | J_PWR → D_REV → 3 bucks → CM5/E-key/IO |
| PCIe (E-key) | PCIE_TX_P/N, PCIE_RX_P/N, REFCLK_P/N, PERST#, CLKREQ#, W_DISABLE# | CM5 ↔ J_E |
| Ethernet | ETH_PAIR0-3_P/N, ETH_nLED1-3 | CM5 PHY ↔ J_ETH |
| USB3 #1 | USB3_0 SS±, USB2 D± | CM5 ↔ J_USB1 |
| USB3 #2 | USB3_1 SS±, USB2 D± | CM5 ↔ J_USB2 |
| USB2 prog | USB2_0 D±, CC1/CC2 | CM5 ↔ J_UPROG |
| PPS/timing | GPS_PPS_RAW, PPS_CLEAN, PPS_SYNC_18 | J_GPS → buffer → CM5 SYNC + J_PPS1/2 |
| NMEA UART | NMEA_TX, NMEA_RX | J_GPIO(14/15) ↔ J_GPS |
| Debug UART | DBG_TX, DBG_RX | CM5 debug UART ↔ J_UART |
| GPIO | GPIO0-27 | CM5 ↔ J_GPIO |
| Boot/ctrl | nRPIBOOT, EEPROM_nWP, PMIC_EN, BUTTON | CM5 ↔ J2 |
| RTC | +VRTC, RTC_SDA/SCL | BT1 → CM5 |
---
## 12. Schematic-capture checklist
1. Import CM5 KiCad symbol from `refs/CM5IO.kicad_sym` — pin map is now resolved in `CM5_Carrier_PinMap.md` (all 200 pins).
2. **SYNC (pin 18) is 3.3 V** — drive directly from the Schmitt via a series R; **no level translator** (corrected).
3. AC-couple PCIe **RX** on carrier (TX coupled on CM5).
4. CC 5.1 kΩ pulldowns on USB-C; nRPIBOOT jumper logic.
5. Magjack PoE pins NC; Bob-Smith + ESD on cable side.
6. Both 15→3.3 buck inductors/thermals sized for their rails (RF 4 A, AUX 1 A); all bucks rated ≥20 V Vin, low-duty-capable.
7. VBUS current-limit per USB-A port.
8. Confirm CM5 5 V input pin group and decoupling per datasheet.