I need a little help to choose the right device.
I would build a digital audio player with the following characteristics:
- it should read data from SD card only (up to 32GB size)
- SD card will be formatted FAT32
- the root of SD card will contain folders only (named as album title/artist)
- no subfolders will be allowed on SD card
- each SD card folder will contain wav files only (named as title track)
- only 16 bit / 44.1 kHz wav files will be allowed (CD quality)
- music data should be read and managed synchronously
- 6 buttons have to be managed: previous track, next track, play/pause, stop, return and enter to navigate the folders (no buttons using touch screen display)
- TFT display will be managed to show album/artist, title track, time elapsed and so on (replace the buttons if touch)
- data output (16 bit serial X 2 channels) should feed a r-2r discrete ladder DAC
- 74XX595 logic will split the serial data to parallel to feed the ladder network
- master clock should be 11.2896 MHz, shared from both DAC logic and uC, to avoid any divider
- every time a single bit is ready, uC should enable the 595 to store it (595 clock enabled from uC in sync with master clock)
- every time 16 bit for 2 channels are read, uC in sync with master clock should enable the 595s to output parallel data to update the ladder network
Practically, file system and wav headers aside, using 11.2896 MHz master clock for all the system, I have to start reading 4 bytes from the SD
card (1 left + 1 right samples), then I should pass each single bit synchronously to 4 * 74XX595.
The clock of the 595 to store data should be enabled either from the master clock and the uC (data ready to store).
After the 32th bit is stored in the last 595, uC should enable the master clock to tell all the 595s to output parallel data to update the ladder network.
Finally the clock of all the 595s should be stopped for 224 cycles, and no data should be read from the SD card.
Now the program has to read next 4 bytes, until the end of the wav file.
In the meantime I have to manage the TFT display and interrupt from the user buttons or touch screen
What device do you suggest to do all the above job? STM32 M4?
Can I run all the system at the same master clock (11.2896 MHz)?
Can I read and manage data synchronously from the SD card?