SD card example layout Firmware expects a plain FAT volume handled by FatFs. In this project `exFAT` is disabled in [ffconf.h](/home/europa/Desktop/RadioPhotonic_PCB_software/Inc/ffconf.h:213), so the safe choice is `FAT32` with a standard MBR partition. Recommended card preparation: 1. Format the card as `FAT32`. 2. Copy the files from this directory to the root of the SD card, or keep the same relative folder structure. 3. Make sure `profiles.csv` is present at the root path expected by the firmware. Expected file set: - `profiles.csv` - `profiles/profile_1_saw.ini` - `profiles/profile_2_custom_wave.ini` - `waves/wave_custom.csv` `profiles.csv` format: - One profile per line. - Columns: `display_name, profile_ini_path, optional_waveform_csv_path` - Empty lines are ignored. - Lines starting with `#` or `;` are ignored. Example: ```csv Factory Saw,profiles/profile_1_saw.ini, Custom SRAM,profiles/profile_2_custom_wave.ini,waves/wave_custom.csv ``` Profile `.ini` format: - One `key=value` pair per line. - Empty lines are ignored. - Lines starting with `#` or `;` are ignored. - Unknown keys are ignored. Additional profile-controlled devices: - `AD9102` waveform settings are stored through the `waveform_*` keys. - `AD9833` settings are stored through `ad9833_enable`, `ad9833_triangle`, and `ad9833_frequency_word`. - STM32 internal DAC settings are stored through `stm32_dac_enable` and `stm32_dac_code`. - `DS1809` is stored as an absolute target above the minimum tap using `ds1809_apply` and `ds1809_position_from_min`. Notes: - `ad9833_frequency_word` uses the same raw 28-bit tuning word that the old serial command accepted. - `ds1809_position_from_min` is clamped to the valid `0..63` range by the firmware. - When `ds1809_apply=true`, the firmware first drives the potentiometer fully down and then steps it up to the requested absolute position. Waveform file format: - The firmware scans the file with `strtol()`. - Any integer token found in the file becomes one AD9102 SRAM sample. - Separators may be commas, spaces, tabs, or newlines. - Do not put comments or stray digits into the waveform file, because any parsed integer will be treated as a sample. Supported `waveform_mode` values: - `saw` - `generated_sram` - `custom_sram` Minimal boot behavior: - On startup the firmware loads the first valid line from `profiles.csv`. - It then loads the referenced profile `.ini`. - If `boot_enabled=true`, the profile is activated. - If `auto_run=true`, the board immediately enters `WORK` mode.