Interfacing Dual-Channel ADC with Arduino for Wireless Projects

Hi everyone,

I want to interface a dual-channel ADC (Analog Devices AD4632-16) with an Arduino that offers integrated wireless communication capabilities, such as Bluetooth, BLE, or Wi-Fi. I'm encountering a challenge because the ADC features two channels, each requiring a separate SDO line for data output, while most Arduino models only have one SPI port.

Does anyone have suggestions on how to manage the connections or know of any Arduino models that come with wireless communication and can handle multiple SPI lines? Any advice or recommendations would be greatly appreciated!

Thank you!

If you follow the rules the number of SPI units on a bus is limited only by the number of CS\ (low Chip Selects) you have available. The part has a \CS pin so connect as many as you like, but only select one at a time. In your case connect whatever you want, just remember each needs a separate \CS line MISO (Master In Serial Out), MOSI (Master Out Serial In), and CLK (concurrently clocks data in and out) is bussed to each unit.

The chip has only one CS line for both ADC channels (datasheet: https://www.analog.com/media/en/technical-documentation/data-sheets/ad4630-16-4632-16.pdf). I need a two-line SPI MISO configuration to receive data from both ADC channels simultaneously. Or do you suggest something else?

https://www.analog.com/media/en/technical-documentation/data-sheets/ad4630-16-4632-16.pdf?isDownload=true#_OPENTOPIC_TOC_PROCESSING_d102e13235 Check page 29 and follow the mode register links.

I haven't heard of an MCU with such a feature in the hardware. Some MCUs have multiple independent SPI I/O blocks, but as far as I know, the blocks have to be addressed individually and used sequentially.

You could modify software ("bit banged") SPI to read two or more input pins simultaneously (they must all be on the same port), but the data for the two channels would still need to be processed and assembled sequentially.

Check page 31 of the data sheet:

Interleaved Lane Output Data Clocking Mode

In the interleaved lane output data clocking mode, Channel 0
and Channel 1 conversion data is interleaved on SDO0

To implement "Interleaved Lane Output Data Clocking Mode" on Arduino looks like an interesting challenge.

Okay, thank you. I’ll try to implement it. By doing this, I can use a more compact Arduino Nano BLE or IoT in my project. I'd use a higher clock for the SCLK line to transmit all the data, as I need to connect another SPI device in multiple slaves mode. I can use different prescale factors for the Arduino clock, right?

You can connect and run as many SPI units as you have inputs. Do the clocking manually, then read each bit after each clock cycle. You will probably lose the data when you de assert CS. This is not elegant but it works.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.