How shonk7/embeddedproject works
This is STM32 firmware for a clocked audio-processing demonstrator, with a touchscreen UI for clock-rate control, a three-band mixer, and a live spectrum view. The principal workflow starts in main, initializes the audio and sampling path, configures the rate controller, then polls the UI while audio sampling continues in the interrupt path. The graph preserves the capture/FFT and LCD/touch branches. The README is empty; some links rely on explicit comments or the source index, while the rate-controller-to-SPI implementation is unsampled and shown as unverified.
Main entry points: ui.c Touch UI · audio.c Audio ISR · main.c Firmware entry · sampling.c Sample processing
Components 22
Firmware runtime
- Firmware entry
Sources/main.c - Clock setup
Sources/SystemInit.c - Timing and debug
Sources/debug.c
Audio processing
- Audio ISR
Sources/audio.c - ADC input
Sources/adc.c - DAC output
Sources/dac.c - External clock
Sources/extclk.c - Sample processing
Sources/Sampling/sampling.c - Three-band mixer
Sources/ui/mixer.c - Sample capture
Sources/capture.c - Spectrum FFT
Sources/ui/fft.c
UI and control
- Rate control
Sources/ui/rate_ctrl.c - Clock-board SPI
Sources/spi/clock_spi.c - Touch UI
Sources/ui/ui.c
Display and input
- Touch input
Sources/ui/touch.c - LCD graphics
LCD/lcd_grph.c - ILI9341 driver
LCD/lcd_ili9341.c - LCD hardware IO
LCD/lcd_hw.c
Other components
- Operator
- LCD panel
- Clock board
- Audio signal path
Connections 29
- Operator → Touch UI: operates
- Firmware entry → Audio ISR: initializes
Sources/main.c - Firmware entry → Sample processing: initializes
Sources/main.c - Firmware entry → Rate control: initializes
Sources/main.c - Firmware entry → Touch UI: initializes
Sources/main.c - Firmware entry → Timing and debug: initializes
Sources/main.c - Audio ISR → ADC input: starts conversion
Sources/audio.c - Audio ISR → DAC output: outputs samples
Sources/audio.c - Audio ISR → External clock: uses clock
Sources/audio.c - Audio ISR → Timing and debug: records timing
Sources/audio.c - Audio ISR → Sample capture: feeds samples
- Sample processing → Audio ISR: installs processor
- Sample processing → Three-band mixer: processes samples
Sources/Sampling/sampling.c - Sample processing → DAC output: returns output code
Sources/Sampling/sampling.c - External clock → Audio ISR: triggers sampling
Sources/audio.c - Audio signal path → ADC input: provides signal
- DAC output → Audio signal path: drives output
- Touch UI → Rate control: sets rate
Sources/ui/ui.c - Touch UI → Three-band mixer: configures mixer
Sources/ui/ui.c - Touch UI → Sample capture: requests blocks
Sources/ui/ui.c - Touch UI → Spectrum FFT: transforms blocks
Sources/ui/ui.c - Touch UI → Touch input: polls input
Sources/ui/ui.c - Touch UI → LCD graphics: draws pages
Sources/ui/ui.c - Rate control → Clock-board SPI: sends commands
- Clock-board SPI → Clock board: controls rates
- Touch input → LCD graphics: uses display geometry
Sources/ui/touch.c - LCD graphics → ILI9341 driver: draws through
LCD/lcd_grph.c - ILI9341 driver → LCD hardware IO: uses hardware IO
- LCD hardware IO → LCD panel: drives panel