Technical details

A project log for FXcursion

An STM32-based guitar processor

ratelectroRATelectro 11/20/2023 at 18:140 Comments
Hardware diagram
Hardware diagram

During our experiments, we found it more convenient to split our computing hardware into two parts. The first part, which we call UI, handles everything that interacts with the user – processing button presses, knob turns, LED indicators, and displaying information on the screen.

Since this microcontroller (MCU) is connected to the display, we decided that it would run the entire pedal operating system – all menus, user interaction with audio parameters, the file manager with the SD card, and everything related to power on/off.

The second MCU, which we refer to as AUDIO, focuses solely on audio processing and is connected to the UI via UART for command exchange and via SPI for audio data exchange (for example, to retrieve an audio sample from the file system on a memory card or vice versa, to write it there).

Firstly, this approach significantly boosts performance, as audio and user interface processing are well-separated and differ greatly in speed. Secondly, even if we decide to radically change one part, the other can remain the same. For example, we could swap audio MCU with DSP, which would be transparent to UI MCU since we are leaving the UART+SPI protocol the same.

For the MCU, we decided to go with what is most familiar to us and has maximum functionality, and what is available for purchase – for us, it's the STM32H743ZIT. It comes with a DRAM controller, a large amount of built-in FLASH memory to simplify development, and an FMC interface for connecting most displays. We also opted to use the same MCU model for both processors to simplify development.

As for the audio frontend, we chose the popular WM8731 audio codec and connected two pieces to get 4 inputs and 4 outputs (or 2 stereo inputs and 2 stereo outputs). This codec is easy to work with, and we have already used it in previous projects, making it a safe and reliable option for us. However, to achieve 6 inputs and 6 outputs, plus a stereo headphone output, we will explore more suitable alternatives in the future. Or maybe we simply add the third WM8731 and some simple SPI / I2S stereo DAC for separate headphone output.