metronome/rust/pm-kit
Me Here b154ccf493 pm-kit: hold CS low — fix ST7796 1/4 screen (mipidsi toggles CS mid-command)
Reading mipidsi's interface/spi.rs: send_command writes the command byte and its
parameters as TWO separate SpiDevice transactions, so a normal SpiDevice de-asserts
CS between them. The ST7796 needs CS continuous across command+parameters, so
MADCTL/COLMOD/B6 args never loaded → default scan/orientation → 1/4 + rotated
(parameter-less commands and the pixel stream still worked, which is why it lit up).

CircuitPython's FourWire holds CS low for the whole command; replicate that: drive
the real CS (GP5) low for the session and give ExclusiveDevice a no-op CS. DC alone
selects command vs data.

Diagnosed entirely on the host: panelsim (new) decodes mipidsi's actual command/
pixel stream into a PNG and rendered perfectly, proving the protocol was right and
the bug was in the physical SPI/CS layer — then the driver source confirmed it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 23:01:04 -05:00
..
.cargo Rust port Stage 3 milestone 1: pm-kit boot-proof blink (RP2350) 2026-05-31 20:34:46 -05:00
src pm-kit: hold CS low — fix ST7796 1/4 screen (mipidsi toggles CS mid-command) 2026-05-31 23:01:04 -05:00
.gitignore Rust port Stage 3 milestone 1: pm-kit boot-proof blink (RP2350) 2026-05-31 20:34:46 -05:00
build.rs Rust port Stage 3 milestone 1: pm-kit boot-proof blink (RP2350) 2026-05-31 20:34:46 -05:00
build.sh Rust port Stage 3 milestone 1: pm-kit boot-proof blink (RP2350) 2026-05-31 20:34:46 -05:00
Cargo.toml Rust UI: host simulator (PNG) + shared pm-ui crate; trim panel init 2026-05-31 21:54:20 -05:00
memory.x Rust port Stage 3 milestone 1: pm-kit boot-proof blink (RP2350) 2026-05-31 20:34:46 -05:00
uf2.py Rust port Stage 3 milestone 1: pm-kit boot-proof blink (RP2350) 2026-05-31 20:34:46 -05:00