ChipDipDAC did it, so can you... USB/I2S transport Reflex

USB transport Reflex allows you to play files with a maximum sampling frequency of 192 kHz and a maximum resolution of 32 bits in PCM, TDM and SPDIF formats. The module supports multi-channel sound, the maximum number of channels is 8 in the 7.1 configuration (Surround Sound). The device is defined as a standard USB audio class 1 sound card, works with computers, tablets, smartphones running Windows, Linux, Android, macOS.
Assembled on the STM32F446RCTx microcontroller.

2.jpg


Possible audio channel configurations

Audio Channel ConfigurationBit Rate44.14888.296176.4192I2STDM
2.016+++++++TDM2
2.024++++--+TDM2
2.032--++--+TDM2
3.116++++--+TDM4
3.124++----+TDM4
4.016++++--+TDM4
4.024++----+TDM4
7.116++----+TDM8

Selecting the audio channel configuration
The audio channel configuration is selected by setting jumpers on contacts 6, 7, 8


Audio Channel Configuration
Setting Jumpers
2.0
6 7 8​
2.0 - 32 bit
6 7 8​
3.1
6 7 8​
4.0
6 7 8​
7.1
6 7 8
2.0 SPDIF
6 7 8

SPDIF format
When the SPDIF format is activated, the data is output to the DATA pin of the first I2S port.

Selecting the TDM format
Selecting the TDM format is done by setting the jumper to pin 9. If the jumper is not set, the output format is I2S. If the TDM format is selected, port 1 is active. In the TDM format, the LR signal is a pulse with a duration of one BCLK clock cycle by default. It is possible for LR to be a rectangular signal with a pulse duration of 50%, as for I2S. To do this, connect the DATA pin of the 2nd I2S port to GND.

Sync modes
The following synchronization modes are possible:
  • master with internal synchronization
  • master with external synchronization
  • slave
In the "master with internal synchronization" mode, the quartz resonator installed on the board is used as a source for generating I2S/TDM signals. In the "master with external synchronization" mode, the clock signal with a frequency of 256*Fs is supplied to the "EXT CLK" contact of the module. In the "slave" mode, all clock signals are generated by the external master device.

Sync mode
Setting Jumpers
Pins
Master with internal synchronization
10 11​
DATA - output
BCLK - output
LR - output
MCLK - output
EXT CLK - NC
Master with external synchronization
10 11​
DATA - output
BCLK - output
LR - output
MCLK - output
EXT CLK - input
MCLK = EXT CLK
Slave
10 11
DATA - output
BCLK - output
LR - iput
MCLK - NC
EXT CLK - NC

Changing output states when changing frequency and bit rate
When changing frequency and bit rate in the OS settings, the module changes the states of the outputs: 22 and 23 - for bit rate; 25, 26 and 27 - for frequency. This can be used for external synchronization to select a clock source or for indication.

State of outputs depending on bit rate
Bit Rate Outputs States
output 22output 23
16
0
0
24
0
1
32
1
0

Output state depending on frequency
Outputs States
Frequency, kHz
output 25
output 26
output 27
44,1
0
0
0
48
0
1
0
88,2
1
0
1
96
1
0
0
176,4
1
1
1
192
1
1
0

Software update

The module software is updated using the "DfuSe" program, which is available for download on the ST website. To update the software on the module, you need to install a jumper on the "B" contact and connect the "DATA" contact of port 2 to the "GND" contact.

Pin assignments

Reflex1_Pins.jpg


What you can do.

If it's just plugging into USB (without setting jumpers), then it's a stereo USB/I2S transport with one I2S port. Connect the DAC and enjoy the music.
But Reflex can do more.
You can connect many DSPs and DACs to it. You can load Sigma Studio or Pure Path Studio projects into it. You can connect Buttons, Regulators, LEDs associated with Sigma Studio or Pure Path Studio projects to the GPIO pins. Everything will work!
Follow the headlines ChipDipDAC did it, so can you. I will show examples of how to do it.

KiCad files and firmware are attached so you can do it yourself.
 

Attachments

Last edited: