80 lines
4.1 KiB
Markdown
80 lines
4.1 KiB
Markdown
# Cacao - Multi-Channel Signal Acquisition Board
|
|
|
|
Cacao is a compact 12-channel audio-frequency signal-acquisition board built around the RP2350. It explores how modern, accessible components can consolidate multi-channel acquisition, buffering, storage, and Ethernet communication onto a single 80 x 50 mm PCB.
|
|
|
|

|
|

|
|
|
|
<!-- Replace docs/images/cacao-render.png with the final board render. -->
|
|
|
|
## Overview
|
|
|
|
Cacao was developed independently as a proof of concept alongside an industrial R&D internship. The project acts as a technical calling card: a complete architecture, schematic, and dense PCB layout designed to demonstrate what can be achieved with a modern microcontroller and cost-effective audio-conversion hardware.
|
|
|
|
Twelve differential audio inputs are digitized by three TLV320ADC5140 ADCs at 44.1 kHz. The RP2350 collects and processes the resulting data before sending it over 100BASE-TX Ethernet through a W5500 or storing it locally on a microSD card.
|
|
|
|
## Key Features
|
|
|
|
- RP2350 in the 80-pin package with internal flash
|
|
- 12 differential audio-input channels
|
|
- Three TLV320ADC5140 four-channel ADCs synchronized by a 2.5 ppm clock
|
|
- 44.1 kHz acquisition with planned 12- or 16-bit sample handling
|
|
- W5500-based 100BASE-TX Ethernet output
|
|
- 8 MB external RAM for acquisition buffering
|
|
- MicroSD storage for standalone data capture
|
|
- USB-C 5 V power input
|
|
- 3.3 V buck supply for the digital electronics
|
|
- Separate low-noise 3.3 V analog rail using an LP5907MFX-3.3/NOPB LDO
|
|
- Four-layer, 80 x 50 mm PCB with more than 200 components
|
|
- Components on both sides, with most passive components placed on the back
|
|
|
|
The Micro-USB connectors are used as compact keyed connectors for the differential analog channels and their 5 V amplifier supply. They are **not USB data ports**.
|
|
|
|
## Engineering Focus
|
|
|
|
The principal layout challenge was integrating 12 analog channels, three synchronized ADCs, local buffering, storage, Ethernet, and the required power architecture within an 80 x 50 mm footprint. Particular attention was given to separating low-noise analog supplies from the general digital rail, maintaining clean reference and return paths, and placing a large number of passive components without increasing the board area.
|
|
|
|
An alternative future configuration could replace the W5500 and external RAM with a W6300 connected through QSPI, reducing the number of separate devices while retaining high-speed Ethernet communication.
|
|
|
|
The firmware will have to be as efficient as possible to allow 10-12 channels at the same time to be sampled and transferred to the W5500.
|
|
|
|
## Project Status
|
|
|
|
V1.0 is currently being assembled by myself and testing will soon start.
|
|
|
|
## known V1 issues
|
|
|
|
There are a few problems with the V1 of this PCB and they are pretty serious so I would advise not to send any of these files to be produced and to either modify these mistakes or to wait for a V1.1 or V2 of this board.
|
|
|
|
### Bad selection of Rp2350 ports
|
|
|
|
This is the most embarassing problem of them all. I put a bit too much faith in the MUX capabilities of the rp MCU and choose the SPI and QSPI pins incorrectly.
|
|
|
|
The RAM needs to be totally rerouted, 5/6 pins are wrong and need to be changed :
|
|
|
|
```
|
|
RAM_QSD3 not to GPIO 16 but to QSPI_SD3
|
|
RAM_QSD2 not to GPIO 17 but to QSPI_SD2
|
|
RAM_QSD1 not to GPIO 18 but to QSPI_SD1
|
|
RAM_QSD0 not to GPIO 19 but to QSPI_SD0
|
|
RAM_QSCLK not to GPIO 20 but to QSPI_SCLK
|
|
```
|
|
|
|
This is extremely embarassing as the pins are even labeled, I should have seen this before sending the files to production.
|
|
|
|
The W5500 and SD CARD are wired wrong too as even if the selected pins are correct, not all pins of a SPI bank can do every job.
|
|
|
|
So you have to do these swaps :
|
|
|
|
```
|
|
ETH_CS GPIO28 to GPIO29
|
|
ETH_SCLK GPIO29 to GPIO30
|
|
ETH_MISO GPIO30 to GPIO28
|
|
```
|
|
|
|
And for the SD card its all wrong as I did not plan for SPI0 and SPI1 differences.
|
|
|
|
I would advise not to botch anything but rather use a PIO SPI that then can be used on pretty much any pins.
|
|
|
|
Those mistakes are extremely embarassing but they exist and will have to be dealt with when assembling the boards.
|