In I2C protocol, if we want to drive more than 5 devices from a single controller let's say 15 devices than how would we connect all the devices from microcontroller. What will be the BUS hardware specification for the same?
The I2C bus has two lines: SCL (clock) and SDA (data). You have only to connect the SCL and SDA pins of the devices to the same lines in the bus. Each device has its own address which would be inquired by the bus master (probably your microcontroller). Only when addressed a slave can send an answer. The clock is always generated by the master.
Regards
As you wrote that we can connect it directly SDA & SCL bus to the microcontroller but practically a microcontroller can drive upto 8-10 slaves at a time on a bus, how can I drive upto 15-25 devices or more than that from a single Microcontroller?
As per the I2C standard specification, "The number of ICs that can be connected to the same bus is limited only by a maximum bus capacitance of
400 pF." The typical I/O capacitances for a 24Cxx eeprom are about 8pF and 10pF for a DS1337 RTC. I think your devices have similar capacitances. So, unless you are trying to use the HI-speed mode, your microcontroller should do the job. Please be more specific: what speed are you using, what are the devices? Why do you think your microcontroller can´t drive more than 10 devices?
you need to follow the hardware design for accessing more number of slaves as prescribed by the NXP. have a suffuicient value pull up resistor in the SDA line as in the data sheet
you have 7 bit in slave device address field to access the slaves
As you wrote that capacitance would be max 400pF, can we increase this capacitance if yes then how can we do the same?
I used RTC DS1307. Actually in an interview, interviewer asked this question.. but i am not into too much in Hardware, so hardware specifications aren't clear.
---------- Post added at 08:37 ---------- Previous post was at 08:36 ----------
@ cvshivaram: I'll see the hardware specification of I2C..
As you wrote that capacitance would be max 400pF, can we increase this capacitance if yes then how can we do the same?
I used RTC DS1307. Actually in an interview, interviewer asked this question.. but i am not into too much in Hardware, so hardware specifications aren't clear.
---------- Post added at 08:37 ---------- Previous post was at 08:36 ----------
@ cvshivaram: I'll see the hardware specification of I2C..
400pF is the maximum capacitance that devices designed to be connected to the bus are able to drive. So, based on an average input capacitance of 10pF, up to 40 devices can be connected (neglecting the bus own capacitance). To increase the number of devices, all should have the capability to drive (sink) more current or, at least a few devices should have less input capacitance. Also, decreasing the clock speed or using the special devices developed for HS-mode (High Speed, up to 3.4MHz @ 100pF or 1.7MHz @ 400pF) should help. The I2C standard also shows some active (switched) pull-up circuits that can help. Otherwise, use a bus repeater.
Data protocol restricts only "The I²C reference design has a 7-bit address space with 16 reserved addresses, so a maximum of 112 nodes can communicate on the same bus." I²C - Wikipedia, the free encyclopedia