An Interesting Interview Question I got Asked
One day, I got interviewed by a company, and I got asked this very interesting question. "What is the limiting factor in communication with i2c (Inter-Integrated Circuit)?" Initially, I was struggling with the question a little bit. However, after some clever thinking, and a little clue from the interviewer, I was able to solve the question.
Let's set the scene by understanding i2c first. I2c uses 3 lines. Data, clock, and ground. Data is sent serially through the data line, and any number of devices can be connected as peripheral devices. Because many peripherals share the data line, the general architecture for i2c is having a controller node request data from a peripheral; addressed by id, and the peripheral device responding. I also knew that the data line needed a 10k pull-up resistor in order to be a valid i2c communication line, but I never properly questioned the reasoning for its existence.
After chatting with the interviewer, he mentioned how i2c devices are open collector devices. I remember learning about how many devices can either leave a voltage level as floating, or pull it to ground. This is valuable, because if a peripheral device could pull a signal line high, two different devices may decide different voltage levels, causing a short and exploding one of the peripherals! This design is referred to as an open collector design, and it needs external circuitry to bring the line back high. This is why the resistor is involved!
Now that we know that the pull up resistor is crucial for the i2c line, we can start thinking about the signal that an i2c packet might look like. While a transistor actively can sink current to pull the signal line low, a 10k pull up resistor will slowly charge the line back up to its data voltage. The reason we need current to bring the voltage level up in the first place is because the data line itself has capacitance, and that will pull charge in order to bring the voltage back up to operating voltage levels. Now that we know this, we can easily figure out that going from 5v to 0v is nearly instant, but we always have to wait longer for the 0v to 5v transition, which is clearly the bottleneck in our data communication.
So to answer the question, the current flow that's limited by the pull-up resistor on the data line is the main bottleneck of i2c communication!
Niranjan Mathirajan
Electrical Engineering 2027
6 April 2026