Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Revisions: v1.0 vs v1.1

The Pico de Gallo PCB has shipped in two revisions, with a third planned. The revision determines two things:

  1. Which firmware feature flag you flash (hw-rev1 or hw-rev2).
  2. Which peripherals the firmware exposes.
RevisionFeature flagConnectorCapabilities
v1.0hw-rev1 (default)7 separate pin headersI²C, SPI, GPIO, PWM
v1.1hw-rev2one keyed 2×12 shrouded headerI²C, SPI, UART, GPIO, PWM, ADC, 1-Wire
v2 (future)hw-rev22×12 shrouded header + level translatorssame as v1.1, plus variable VREF rail

Important

The capability set is enforced by firmware, not by the hardware. Flashing hw-rev1 firmware onto a v1.1 board still gives you only the v1.0 capability set. Match the firmware to the board you actually have.

Which One Should I Pick?

  • You only need I²C, SPI, GPIO, or PWM → v1.0 is fine and cheaper to fabricate.
  • You need UART, ADC, or 1-Wire → you want v1.1 (or later). Calling an unsupported endpoint on v1.0 firmware returns Unsupported.
  • You’re starting from scratch today → fabricate v1.1. It’s the same effort and a strict superset.

What v1.1 Adds Over v1.0

Pico de Gallo v1.1

  • Single keyed box header. One cable, one orientation, no ambiguity. Adapter boards (informally called “toppings”) can be designed against a stable connector instead of wrangling seven separate jumper bundles.
  • All 20 firmware signals routed. v1.0 only brings out 13 of the firmware’s 20 GPIO signals. UART, SPI chip-select, 1-Wire, and the three ADC inputs are physically absent on v1.0.
  • On-board passives.
    • 4.7 kΩ pull-ups on I²C (no more dangling resistors).
    • 100 Ω series resistors on each ADC input for protection and a mild RC roll-off.
    • 100 nF decoupling on VREF.

What v2 Will Add

Planned but not yet released:

  • Variable VREF rail on header pin 1: selectable 1.8 V / 3.3 V / 5 V. On v1.1 this pin is hardwired to 3.3 V.
  • Level translators on the digital signals so the same board can talk to 1.8 V, 3.3 V, and 5 V peripherals without an external level shifter.
  • Same firmware feature flag as v1.1 (hw-rev2).

Note

Adapter boards designed for the v1.1 box-header pinout will plug into v2 unchanged. On v1.1 they will see 3.3 V on pin 1; on v2 they will see whatever VREF is set to. Design your topping with that in mind.

v1.0 — Best Effort

Pico de Gallo v1.0

The v1.0 board predates the consolidated header and lacks routing for UART (GPIO 0–1), SPI CS (GPIO 5), 1-Wire (GPIO 16), and ADC (GPIO 26–28). The firmware still validates inputs and returns Unsupported for those endpoints, so calling them won’t crash — you just won’t get data.

If you’re stuck on v1.0 and need one of the missing signals, you can solder a wire directly to the corresponding Pico 2 castellated pad. It’s not pretty, but it works.

Identifying Your Board

The fastest way to tell what revision firmware you’re running:

$ gallo version
Pico de Gallo FW v0.8.0
Schema v0.4.0
HW revision 2
Capabilities: I2C ✓ | SPI ✓ | UART ✓ | GPIO ✓ | PWM ✓ | ADC ✓ | 1-Wire ✓

HW revision 1 corresponds to hw-rev1; HW revision 2 to hw-rev2. The capability line tells you exactly which peripherals this firmware will serve.

Migrating from v1.0 to v1.1

Code-wise, nothing changes. The wire protocol is the same; the host crates are the same; the CLI is the same. The only thing that moves is which physical pins your peripheral cables plug into — see Pinout & Connector.

If you have driver code that detects capabilities at runtime, use device_info() (host) / gallo_get_device_info (FFI) and gate on the capabilities bitfield. That way the same binary works unmodified on both boards.