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

11 KiB
Raw Permalink Blame History

CM5 Carrier — Authoritative Pin Map (CM5 ↔ Carrier Nets)

Source of truth: refs/CM5IO.kicad_sym, symbol ComputeModule5-CM5 (official Raspberry Pi CM5 IO Board rev 2 KiCad files). All 200 connector pins parsed directly from the symbol — these are the real pin numbers a layout engineer maps to.

Connector model: the CM5 mates via two 100-pin Hirose DF40 connectors. In the symbol, pins 1100 are one connector strip and 101200 the other. KiCad resolves the physical split from the footprint; the pin numbers below are what the netlist uses.

Companion to CM5_Carrier_Design.md and CM5_Carrier_Pinout_BOM.md. This file supersedes the "by datasheet net name" placeholders in those docs.


0. Corrections found during pin verification (read first)

Mapping the real symbol exposed three errors in the earlier CM5_Carrier_Pinout_BOM.md:

# Prior doc said Reality (from symbol) Impact
C1 CM5 SYNC is 1.8 V, needs a 3V3→1V8 level translator (SN74LVC1T45) on the PPS path Pin 18 is Ethernet_SYNC_OUT(3.3v) — 3.3 V signalling Delete the level translator (U_LVLSHIFT). 3.3 V GPS PPS → Schmitt → drives pin 18 directly. Removes a part and a gotcha.
C2 Debug UART uses "dedicated debug pins on the DF40"; NMEA GPS can take GPIO14/15 (UART0) No dedicated debug-UART pins exist. The only console UART is GPIO14/15 (UART0). Reference board has no debug-UART connector. Conflict. Keep debug console on GPIO14/15; move NMEA GPS to UART2 (GPIO4/5).
C3 Fan is "optional, keep from ref" with no pin assignment Dedicated FAN_PWM (pin 19) + FAN_TACHO (pin 16) exist Fan header wires to pins 19/16, not GPIO.

Also confirmed useful: CM5 sources +3.3V (pins 84/86) and +1.8V (88/90); there's a dedicated VBAT (76) for RTC backup, and GPIO_VREF (78) must be driven to set the GPIO bank level.


1. Power & control pins

CM5 pin(s) Net Direction Carrier connection
77, 79, 81, 83, 85, 87 +5v_(Input) in to CM5 +5V from U_BUCK5 (main module supply). Decouple per datasheet; all 6 pins tied.
84, 86 +3.3v_(Output) out of CM5 CM5-sourced 3.3 V (limited current). Usable for GPIO_VREF, light pull-ups. Do not power the AW7915 from this.
88, 90 +1.8v_(Output) out of CM5 CM5-sourced 1.8 V. Spare; route to a test point.
78 GPIO_VREF(1.8v/3.3v_Input) in to CM5 Tie to 3.3 V (from CM5 +3.3v out or +3V3_AUX) to set the 40-pin bank to 3.3 V logic.
76 VBAT in to CM5 RTC backup: CR2032 (BT1) via ORing/diode.
99 PMIC_ENABLE in → J2 pin 12. Power enable/disable.
92 PWR_BUT in → J2 pin 13 wake/shutdown push-button.
93 nRPIBOOT in → J2 pin 1 jumper and boot-select for USB-C rpiboot.
20 EEPROM_nWP in → J2 pin 3 EEPROM write-protect jumper.
95 LED_nPWR out Power LED (sink).
21 LED_nACT out Activity LED (sink).
111 VBUS_EN out USB host VBUS enable → gates USB-A VBUS load switch.
94 / 96 CC1 / CC2 Module USB-C CC lines. See §6 note — our USB-C is data/rpiboot only; verify against reference wiring.
1,2,7,8,13,14,22,23,32,33,42,43,52,53,59,60,65,66,71,74,98,107,108,113,114,119,120,125,126,131,132,137,138,144,150,155,156,161,162,167,168,173,174,179,180,185,186,191,192,197,198 GND (51 pins) Stitch to ground plane.

2. Ethernet (CM5 on-module BCM54210PE → magjack)

No external PHY. 1:1 magjack + ESD. 100 Ω diff pairs.

CM5 pin Net Magjack
12 / 10 Ethernet_Pair0_P / _N MDI0 ±
4 / 6 Ethernet_Pair1_P / _N MDI1 ±
11 / 9 Ethernet_Pair2_P / _N MDI2 ±
3 / 5 Ethernet_Pair3_P / _N MDI3 ±
17 Ethernet_nLED2(3.3v) Link/activity LED
15 Ethernet_nLED3(3.3v) Speed LED
18 Ethernet_SYNC_OUT(3.3v) IEEE 1588 timing — 3.3 V, bidirectional → PPS block (see §5)

Magjack PoE center-tap pins: NC (no PoE). Bob-Smith termination + ESD array on cable side.


3. PCIe ×1 Gen2 → M.2 E-key (Wi-Fi, AW7915)

CM5 pin Net E-key
110 / 112 PCIe_CLK_P / _N REFCLK ± (100 MHz)
116 / 118 PCIe_RX_P / _N card→host (PER ±). AC-couple caps on carrier.
122 / 124 PCIe_TX_P / _N host→card (PET ±). AC-coupled on CM5 side.
109 PCIe_nRST PERST#
102 PCIe_nCLKREQ CLKREQ#
104 PCIE_nWAKE PEWAKE# (optional; pull-up)
106 PCIE_PWR_EN gate for E-key 3.3 V enable (optional)

E-key 3.3 V (W_DISABLE rail / VCC) ← +3V3_RF (dedicated 15→3.3 V 4 A buck). E-key USB pins NC (Wi-Fi only, no BT). PCIe pairs ~85 Ω diff; length-match; REFCLK matched pair.


4. USB

CM5 pins Net Goes to
130/128, 142/140, 134/136 USB3-0-RX_P/N, USB3-0-TX_P/N, USB3-0-D_P/N USB-A #1 (SS RX/TX pairs + USB2 D±)
159/157, 171/169, 163/165 USB3-1-RX_P/N, USB3-1-TX_P/N, USB3-1-D_P/N USB-A #2
105 / 103 USB2_P / USB2_N USB-C (rpiboot/programming)
101 USB_OTG_ID USB-C OTG ID (or NC/strap for device mode)

USB-A VBUS via current-limit load switch gated by VBUS_EN (pin 111). ESD (USBLC6-class) on each external port. SS pairs ~90 Ω diff.


5. PPS / timing distribution (corrected — no level shifter)

Board is a PPS sink; GPS is the only source. SYNC is 3.3 V (pin 18) so the path is all-3.3 V:

J_GPS.PPS (3V3) ─► [TVS] ─► [Schmitt LVC1G17, 3V3] ─► PPS_CLEAN(3V3) ─┬─► [Rs] ─► CM5 pin 18 (Ethernet_SYNC_OUT, cfg as input)
                                                                       ├─► J_PPS1 (UWB tap)
                                                                       └─► J_PPS2 (scope/spare tap)
  • No 3V3→1V8 translator (correction C1). Delete U_LVLSHIFT / SN74LVC1T45 from the BOM.
  • Add a small series resistor Rs (e.g. 33100 Ω) between the Schmitt output and pin 18: pin 18 is bidirectional, so Rs prevents a driver fight if firmware ever configures it as output. Board config is always input.
  • Schmitt + TVS still wanted: square the off-board GPS edge, protect the pin.
Net From To Level
GPS_PPS_RAW J_GPS.1 TVS → Schmitt in 3.3 V
PPS_CLEAN Schmitt out fan-out ×3 3.3 V
PPS_SYNC via Rs CM5 pin 18 3.3 V
NMEA_TX CM5 GPIO4 (UART2 TX) J_GPS.RX 3.3 V
NMEA_RX CM5 GPIO5 (UART2 RX) J_GPS.TX 3.3 V

6. UART assignments (corrected — C2)

There is one console UART on GPIO14/15 and no dedicated debug pins. So:

Function CM5 UART GPIO (BCM) CM5 pins 40-pin header Connector
Debug console UART0 GPIO14 (TXD0) / GPIO15 (RXD0) 55 / 51 pins 8 / 10 J_UART (3-pin tap)
NMEA GPS UART2 GPIO4 / GPIO5 54 / 34 pins 7 / 29 J_GPS (via dtoverlay uart2)

NMEA on UART2 keeps the console free. GPIO4/5 still appear on the 40-pin (shared net) — document that pins 7/29 are committed to GPS when fitted. PPS edge does not use a UART — it's the dedicated SYNC pin 18.

USB-C CC note: the module exposes CC1/CC2 (pins 94/96). Our USB-C is data-only for rpiboot; put 5.1 kΩ pulldowns at the USB-C connector for UFP/sink detection. Before finalizing, check how refs/CM5IO.kicad_sch ties module CC1/CC2 (the reference uses USB-C as a power path; we don't) — likely leave module CC pins per reference or NC.


7. 40-pin GPIO header — CM5 pin behind each BCM GPIO

The 40-pin positions are standard (see CM5_Carrier_Pinout_BOM.md §2). This table gives the CM5 connector pin behind each GPIO so the layout can route header→module directly.

BCM CM5 pin 40-pin pos Alt / use here
GPIO2 58 3 I2C1 SDA
GPIO3 56 5 I2C1 SCL
GPIO4 54 7 UART2 TX → NMEA
GPIO5 34 29 UART2 RX → NMEA
GPIO6 30 31
GPIO7 37 26 SPI0 CE1
GPIO8 39 24 SPI0 CE0
GPIO9 40 21 SPI0 MISO
GPIO10 44 19 SPI0 MOSI
GPIO11 38 23 SPI0 SCLK
GPIO12 31 32 PWM0
GPIO13 28 33 PWM1
GPIO14 55 8 UART0 TXD → debug
GPIO15 51 10 UART0 RXD → debug
GPIO16 29 36
GPIO17 50 11
GPIO18 49 12 PCM_CLK
GPIO19 26 35 PCM_FS
GPIO20 27 38 PCM_DIN
GPIO21 25 40 PCM_DOUT
GPIO22 46 15
GPIO23 47 16
GPIO24 45 18
GPIO25 41 22
GPIO26 24 37
GPIO27 48 13
ID_SD (GPIO0) 36 27 HAT EEPROM I2C0 SDA
ID_SC (GPIO1) 35 28 HAT EEPROM I2C0 SCL

Other I²C: SCL0/SDA0 (pins 80/82) = I2C0 (camera/HAT-ID domain); CAM_GPIO0/1 (97/100) — route to test points or leave NC (no camera).


8. Fan, radio-disable, RTC

CM5 pin Net Use
19 FAN_PWM → J_FAN PWM (dedicated, not GPIO)
16 FAN_TACHO → J_FAN tach
89 WiFi_nDisable If a wireless CM5 is fitted, tie low to disable onboard radio (E-key is our Wi-Fi). With non-wireless CM5: NC. Mirrors ref J3.
91 BT_nDisable As above for BT.
76 VBAT CR2032 (BT1) → CM5 on-module RTC backup

CM5 has an on-module RTC — the carrier only supplies the backup cell on VBAT. No external I²C RTC needed (drop the optional PCF85063A mention).


9. Explicitly unused / NC pin groups

Deleted features — leave these CM5 pins No-Connect:

Group CM5 pins Why NC
HDMI0/HDMI1 143,145,146,147,148,149,151,152,153,154,158,160,164,166,170,172,176,178,182,184,188,190,199,200 No display out
MIPI0 (DSI/CSI) 115,117,121,123,127,129,133,135,139,141 No display/camera
MIPI1 (DSI/CSI) 175,177,181,183,187,189,193,194,195,196 No display/camera
microSD 57,61,62,63,64,67,68,69,70,72 (SD_*) + 73 (SD_VDD_Override), 75 (SD_PWR_ON) eMMC module; no SD card

If a camera is ever wanted, MIPI0 (pins 115141) is the block to revive — flagged in design doc as the only realistic add-back.


10. What changed in the companion docs

Apply these so all three files agree (done in markdown; the .xlsx BOM still lists U_LVLSHIFT and should drop it):

  • CM5_Carrier_Pinout_BOM.md §3, §6, §12: SYNC is 3.3 V; remove level-shifter; PPS drives pin 18 via series R.
  • NMEA moved to UART2 (GPIO4/5); debug stays UART0 (GPIO14/15).
  • Add FAN_PWM/TACHO (pins 19/16) to the fan header net.
  • BOM: delete line 15 (U_LVLSHIFT, SN74LVC1T45); add one 0402 series R on PPS→SYNC.