Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Multiple I²C Slave Read

Status
Not open for further replies.

stenzer

Advanced Member level 3
Joined
Oct 1, 2012
Messages
867
Helped
123
Reputation
250
Reaction score
185
Trophy points
1,323
Activity points
8,966
Simultaneous I²C Slave Read Out

Hi,

I plan to realize a measurement system with several I²C slaves. All slaves have the same I²C address (there is no hard- or software option to change that). Further I want to execute simultaneous measuremnts. That's the part where it becoumes tricky ;-). For a NON-simultaneous measurement I would use a multiplexer/switch.

Is there a simple IC solution available to access multipe I²C slaves simultaneously? NXP offers an I²C-bus to SPI bridge (SC18IS602B) with internal data buffer. I'm looking for a similar device, which is able to read in multiple I²C devices simultaneously (multiple SDA lines).

Is there any integrated solution available, which allows a simultaneous I²C read out? If not, I will just use a low cost microcontroller for each slave, save the data, and finally read out the stored data by SPI (at a higher system clock).

BR
 

Re: Simultaneous I²C Slave Read

Hi Easyrider83,

a simple I²C multiplexer wouldn't allow a simultaneous operation, as only one channel at a time can be enabled (e.g. TCA9544A).

BR
 

It is possible if you will use different I2c busses and all operations will be done by DMA or interrupts. But this requires powerfull ARM core with multiple I2c support.
 

Hi,

or use a PLD or FPGA.

Just paralleling is impossible in most cases.
You dont say what I2C device you are using, nor do you show us your I2C communication commands or code.

It takes time if we need to "assume".
But I try it anyway.

An ADC:
* You may read a conversion result (may be indentically for all ADCs)
* and this may start a new conversion (may be indentically for all ADCs, but expect some delay between different ICs)
* maybe you need to change channel within one IC, writing data to an ADC (may be indentically for all ADCs, maybe not)
* maybe you need to change gain and offset values of an ADC (not very likely that this is the same for all ADCs)

Klaus
 

Hi Klaus,

sorry for omitting further details. The slave would be a capacitance to digital converter (AD7745). It is not necessary to read out data continuously, but simultaneously. Thus a single "shot mode" or some kind of memory would work.

BR
 

Hi,

I can´t find any inforamtion in the datsheet that reading the contents can be used to synchronize conversions between different ICs.

So when the data is no converted at a certain, known point of time .. what´s the idea behind reading data simultaneously?

Klaus
 

Hi,

the IC can be operated in single conversion mode (page 18). So the idea is to execute a single conversion of all slaves at the same time, and read out the following data simultaneously. Of course there will be an offset between the individual sample times, depending on the internal clock generator. But this deviation should be much smaller compared to a sequential read out.

BR
 

Hi,

then a multiplexer with the ability for a braodcast (all channels enabled) should do the job.

* enable broadcast
* select single conversion
* disbale broadcast
* wait for conversion end
* loop for all devices: (select channel, read out conversion result)

***
A simple task for a tiny PLD. No need to store data. It´s just combinatorial logic.

How many channels do you need?

Klaus
 

A simple task for a tiny PLD. No need to store data. It´s just combinatorial logic.
Don't fully agree. At least I2C SDA is bidirectional and can't be multiplexed by a PLD without decoding the protocol in part, switching the data direction for each bit.
 

Hi,

I agree. Then one needs to use analog switches, analog muxes, bus switches ... that are bidirectional.

But on a broadcast all channels are in parallel and may cause a lot of bus load.

Klaus
 

i agree with DMA and interrupt based solution with power full controller. Else it'll be difficult to measure with small time span. even though multiplex will add up some delay.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top