The AD7768/AD7768-4 outputs data as a master, meaning that the device continuously streams data and it is the user's task to read the data as it is output. Therefore the microcontroller that interfaces to the data output lines must be configured as a slave. (A separate interface needs to be configured if SPI control is required. If not, the AD7768/AD7768-4 can operate in pin control mode)
The AD7768/AD7768-4 data interface has been tested by reading data using the Serial Audio Interface (SAI) on a microcontroller. For this example all 8 channels of AD7768 were output on DOUT0.
The connections required for the data interface on the AD7768 side are:
The connections required to the microcontroller are:
Configuring the Interface
The microcontroller interface needs to be configured to accept the data output from the DOUT pins. For this example, all 8 channels of data are output on DOUT0 for the AD7768. Data is being read on the SAI interface which is configured as follows:
Configuring the AD7768
Note: On the AD7768-4 since there are only 4 channels the same constraint does not apply.
Without having looked specifically at the ADSP-SC570, I can confirm you can use the AD7768 with a SPORT interface
can the SPORT interface on ADI's adsp-sc570 DSP connect with AD7768? the SPORT is very similar with SAI.
In the example above the output data rate (ODR) was set to 128 kSPS. At this rate it is possible to output all 8 channels on one DOUT. Two DOUT lines will need to be used at the fastest rate of 256 kSPS.
The ODR of 128 kSPS worked with the AD7768 as the SAI interface was configured as a slave.
I would recommend looking at an FPGA rather than a microcontroller for data rates of 256kSPS and 12 channels. At this rate it becomes a lot of data very quickly and may be difficult to handle with multiple interfaces, processing of data etc.
I purchased the AD7768 dev kit and an STM32F446 Nucleo-144 board to experiment with interfacing to the AD7768, but I'm seeing some constraints on the interface of the AD7768 and the STM micro:
On the AD7768:
- You mention that all 8 channels can be output on DOUT0, but at the maximum MCLK of 32.768MHz and 256KS/s sampling rate, the maximum number of 32-bit channels that can be output is 4 - see the AD7768 datasheet, Rev A, pg 52 "With eight ADCs enabled, an MCLK rate of 32.768 MHz, an ODR of 256 kSPS, and two DOUTx channels, DCLK (minimum) is 256 kSPS × 4 channels per DOUTx × 32 bits = 32.768 MHz where DCLK = MCLK/1." What sampling frequency were you using in your example?
On the STM32:
- From the STM32F446xC/E datasheet (which covers the STM32F446RE), DocID027107 Rev 6, it appears from Table 67 that the maximum SAI clock frequency (slave) is Fs x 128 (where Fs=192KHz) or 24.576MHz which would prevent a 4-channel TDM input from the AD7768 (which requires 32.768MHz). What sampling frequency were you using in your example?
In my application, I'll be interfacing to 12 channels of ADC data (1 AD7768 and 1AD7768-4). In order to sample at 256KS/s on all 12 channels, does this mean I'll need to output each ADC data channel separately (8 x DOUT won't work, 4 x DOUT won't work)? If so, then I assume that the STM32F446RE will not work, as it has only 2 SAI peripherals with 2 channels inputs each (4 total). Can you recommend a part that has 6 SAI peripherals?
Please let me know.
The STM32F446RE Nucleo board was used to interface to the AD7768. The SAI can be configured to have a frame length of 256 bits, allowing all 8 channels to output on one DOUT line.