picocalc-hardware
This skill provides hardware reference data for PicoCalc development. It should be activated automatically when writing code that accesses GPIO pins, SPI buses, I2C interfaces, the 320x320 display, membrane keyboard, SD card, audio PWM, WiFi, or Bluetooth on the Clockwork Pi PicoCalc with Raspberry Pi Pico 2W. Use this skill whenever pin numbers, bus configurations, register addresses, or hardware specifications are needed.
PicoCalc Hardware Reference
Quick reference for all hardware interfaces on the Clockwork Pi PicoCalc with Raspberry Pi Pico 2W (RP2350).
Pin Map
| Function | Pin(s) | Bus | Notes |
|---|---|---|---|
| Display CLK | GPIO 10 | SPI1 | 25 MHz |
| Display MOSI | GPIO 11 | SPI1 | |
| Display CS | GPIO 13 | SPI1 | Active low |
| Display DC | GPIO 14 | GPIO | Data/Command select |
| Display RST | GPIO 15 | GPIO | Active low reset |
| Keyboard SCL | GPIO 7 | I2C1 | 10 kHz |
| Keyboard SDA | GPIO 6 | I2C1 | |
| Keyboard Addr | -- | I2C | 0x1F |
| SD Card SCK | GPIO 18 | SPI0 | 1 MHz default |
| SD Card MOSI | GPIO 19 | SPI0 | |
| SD Card MISO | GPIO 16 | SPI0 | |
| SD Card CS | GPIO 17 | SPI0 | Active low |
| Audio Left | GPIO 28 | PWM | Stereo left channel |
| Audio Right | GPIO 27 | PWM | Stereo right channel |
Display: ILI9488
- Resolution: 320x320 pixels
- Interface: SPI1 at 25 MHz with DMA
- Default color mode: GS4_HMSB (4-bit grayscale, 16 shades)
- Framebuffer: 51,200 bytes in GS4 mode (320*320/2)
- Text: 6x8 pixel font, 53 columns x 40 rows
- Auto-refresh on Core 1 via multicore_launch_core1()
- Color modes: GS4_HMSB, RGB565, GS8, GS2_HMSB, MONO_HMSB
Keyboard: I2C MCU at 0x1F
- Bus: I2C1, SCL=GPIO7, SDA=GPIO6, freq=10000 Hz
- Registers: KEY(0x04), FIFO(0x09), BACKLIGHT(0x05), BATTERY(0x0B), RESET(0x08)
- Key states: Idle(0), Press(1), LongPress(2), Release(3)
- Modifier keys: Shift(0xa2/0xa3), Alt(0xa1), Ctrl(0xa5)
- Arrow keys: Left(0xB4), Up(0xB5), Down(0xB6), Right(0xB7)
- Special: ESC(0xB1), HOME(0xD2), END(0xD5), DELETE(0xD4), BACKSPACE(0x08), ENTER(0x0A)
- WARNING: Do NOT send reset command (register 0x08) on battery boot - keyboard MCU is also the power controller, resetting it causes a power cycle loop
SD Card
- Bus: SPI0, baudrate=1000000, polarity=0, phase=0
- Pins: SCK=18, MOSI=19, MISO=16, CS=17
- Mount point: /sd
- Scripts: /sd/py_scripts/ (auto-discovered by menu)
- Format: FAT32
- Requires 900ms stabilization delay before init
Audio PWM
- Left: GPIO 28, Right: GPIO 27
- Control: PWM.freq(hz) for pitch, PWM.duty_u16(0-65535) for volume
- Always set duty_u16(0) before exit
Additional Resources
- references/pin-map.md - Complete GPIO assignments
- references/display-specs.md - ILI9488 init, LUT, framebuffer formats
- references/keyboard-protocol.md - I2C registers, key codes, modifiers
- references/sd-card.md - SPI0 configuration, mount/unmount, FAT32