SD Manager GUI Demo

Firmware for an STM32F4 that reads WAV files from a microSD card and plays them through an I2S audio output. Files can be loaded onto the card over a serial connection from a PC. The entire codebase: drivers, filesystem, and playback, is written in C without a vendor HAL.

On boot the board waits for commands over UART at 921600 baud. Mount the SD card, list or transfer files, and play 16-bit PCM WAV files. Audio streams from the card in real time using DMA double-buffering so playback stays continuous while the main loop handles serial I/O. A Python host tool on the PC side handles file uploads and basic card management.

Register-level peripheral drivers cover GPIO, UART, SysTick, SPI, I2S, and DMA. The microSD driver handles card initialization and DMA-backed 512-byte block transfers. A FAT32 filesystem built from scratch parses the MBR and volume boot record, traverses cluster chains, reads directories with long filenames, and caches the FAT table. The WAV pipeline parses headers, configures I2S sample rate via PLLI2S, and feeds a ping-pong DMA buffer from the filesystem.