The main goals of the hardware design are simplicity and small footprint.
The heart of the system is obviously the STM32F446 micro-controller. It is based on an ARM Cortex-M4 core with floating point unit running at 180MHz, and a ton of peripherals.
Around the STM32F4 we have:
- A USB micro-B connector
- A power regulator to provide 3.3V from the 5V of the USB connector
- Crystal oscillator for the STM32F4 clock
- One user button and one button to enter Device-Firmware-Update (DFU) mode
- Flash memory to store sample data
- A row of header for custom IOs
- A debug header (which is badly wired in rev-B...)
- One headphone jack
- The audio Digital to Analog Converter (DAC)
I could have used the DACs of the STM32F4, but on one hand they are only 12bits vs 16bits for a proper audio DAC, and on the other hand it would have required extra circuitry to drive headphone. So using the SGTL5000 provides higher sound quality and simplicity. The SGTL5000 also have a lot of options for IOs:
- Headphone output
- Line output
- Line input
- Microphone input
This means a lot of options for different applications.
On the rev-B of Noise Nugget I didn't use the microphone input. I think this is a mistake because there is some room on the board for a MEMS mic, and that would open even more possibilities. For instance real-time voice effects or sample recording.
The design of the DFU button is inspired by the Numworks open calculator. If the button is pressed when you plug the USB cable, the STM32F4 automatically enters DFU mode. It is then very easy to install a different firmware without using any debug probe. With WebUSB, it is even possible to install from a
My TODO list for the next revision is:
- Fix the debug connector
- Try to add another jack for line input
- Add a MEMS microphone