The board and its pin map
board.h names every pin the motherboard uses, so drivers and apps say
board::pin::kSatTx rather than seed::D2. It is plain constants with no
libDaisy in it, so host tests include it too, and they check the map against
libDaisy’s own pin table: a typo in a port or pin number fails a test instead of
driving the wrong pin. The hardware it describes is
hardware/rodeo-motherboard/docs/rev-b.md. Every name and value is in the
API reference.
Every pin is spoken for
| Seed pin | libDaisy | Use | board::pin:: |
|---|---|---|---|
| 1 | D0 | Expansion header chip-select | kSpiExtCs |
| 2, 3 | D1, D2 | Satellite chain RX, TX (USART3) | kSatRx, kSatTx |
| 4 | D3 | Second codec reset | kCodec2Reset |
| 5–7 | D4–D6 | microSD, 1-bit | kSdD0, kSdCmd, kSdClk |
| 8 | D7 | I/O connector D1 | kIo[kIoD1] |
| 9–11 | D8–D10 | SPI1 to the expansion header | kSpiSck, kSpiMiso, kSpiMosi |
| 12, 13 | D11, D12 | I²C1: OLED, battery gauge, four taps | kI2cScl, kI2cSda |
| 14, 15 | D13, D14 | MIDI (USART1) | kMidiTx, kMidiRx |
| 22–28 | D15–D21 | I/O connectors A1–A7 | kIo[kIoA1]… |
| 29, 30 | D22, D23 | I/O connectors CV2, CV1 | kIo[kIoCv2], kIo[kIoCv1] |
| 31–35 | D24–D28 | Second codec, SAI2 | kCodec2Mclk… |
| 36, 37 | D29, D30 | USB to the power board | kUsbDm, kUsbDp |
The I/O connectors
Ten 3-pin connectors — ground, the signal through 1 kΩ, and 3.3 V — named by their
silkscreen and listed in that order in board::kIo:
| Silkscreen | Can do | adc | dac |
|---|---|---|---|
D1 | Digital in or out | — | — |
A1–A7 | Digital, or analog in | seed::A0–A6 | — |
CV1 | DAC out (0–3.3 V), or analog in | seed::A8 | 1 |
CV2 | DAC out (0–3.3 V), or analog in | seed::A7 | 2 |
Two pairs share an external-interrupt line, so only one connector of each pair
can be an interrupt input: A3 and A6 (PB1, PC1), and A7 and CV1
(PC4, PA4). board::SharesExti() answers it for any two pins, and a host test
fails if the map ever grows another pair.
From board.h to libDaisy
board.h stays host-safe, so the conversion lives in board_daisy.h, which only
target code includes:
#include "board_daisy.h"
GPIO gate;gate.Init(board::ToDaisy(board::kIo[board::kIoD1].pin), GPIO::Mode::INPUT);Also in board.h
- I²C addresses: the OLED at
0x3C, the MAX17048 battery gauge at0x36. - Audio: four in, four out at 48 kHz. Channels 1/2 are the Seed’s own codec, 3/4 the CS4272, as on the back panel. The block size is 48 samples, one per millisecond, so a USB audio frame is exactly one block.