🛠 Concevoir le séquenceur d'alimentation d'une carte porteuse CM3
Objectives
The CM3 requires six voltages, all mandatory even if unused: VBAT (core SMPS input, 2.5–5.0 V, minimum capacity 3500 mW), 3V3 (at least 250 mA), 1V8 (at least 250 mA), VDAC (2.5–3.3 V; clean 2.5–2.8 V only if TV-out is used, otherwise connect to 3V3), GPIO0-27 VREF and GPIO28-45 VREF (1.8–3.3 V, at least 50 mA). The power supplies must ramp up from highest to lowest voltage (or simultaneously without crossing); otherwise, the SoC's internal diodes become forward-biased and may trigger destructive latch-up (datasheet RP-008161-DS §7). This tutorial validates a carrier board design using a multimeter and then via software.
Hardware
- Custom carrier board (or CMIO3 for practice) + CM3
- Multimeter, ideally a 4-channel oscilloscope to observe the ramps
- 5 V power supply capable of 3.5 W on VBAT; 3V3 and 1V8 regulators of 250 mA each
- Datasheet RP-008161-DS §7 and Tables 7-8 at hand
Complete Code
# 1. Avant d'insérer le module : vérifier chaque rail au connecteur SODIMM
# (multimètre, broches VBAT / 3V3 / 1V8 / VDAC / VREF0 / VREF1).
# Attendu : VBAT 4,75-5,25 V ; 3V3 dans ±5 % ; 1V8 dans ±5 % ;
# VDAC = 3V3 (pas de TV-out) ; VREF0/VREF1 = niveau logique choisi.
# 2. Observer l'ordre de rampe à l'oscilloscope : aucune tension basse ne
# doit dépasser une tension haute pendant la montée (risque de latch-up).
# 3. Une fois le module démarré, vérifier l'absence de sous-tension :
sudo vcgencmd get_throttled # attendu : throttled=0x0
sudo vcgencmd measure_volts core
# 4. Test de charge : le SMPS VBAT ne doit pas décrocher sous 4 threads
sudo apt install -y stress-ng
stress-ng --cpu 4 --timeout 60s &
watch -n 1 vcgencmd get_throttled
Expected Verification
vcgencmd get_throttled returns throttled=0x0 both at idle and under load: no undervoltage bit (0x1) or thermal throttling bit (0x4/0x8) is set. On the oscilloscope, the ramps rise without downward crossing. The module completes 100 power-on/off cycles without failing to start.
Common Errors
- Connecting VDAC to a noisy power supply shared with motors: as soon as TV-out is used, VDAC requires clean 2.5–2.8 V; otherwise, connect it to 3V3, never leave it floating.
- Powering only the used GPIO bank: BOTH bank VREF rails must be present even if no pins are used.
- Ramping 1V8 before 3V3: a crossing biases the protection diodes and can cause latch-up — this is the most insidious failure cause in custom boards.
- Undersized VBAT regulator: the official threshold is 3500 mW of capacity (much higher than the CM1 and its 2 W), an old CM1 design may not suffice.
- Automating EMMC_DISABLE_N with a poorly chosen MOSFET: the EMMC_EN_N_1V8 command operates at 1.8 V, ensure appropriate gate thresholds (datasheet §8).
Other tutorials for this board
Code examples for this board
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash