Both SCL and SDA lines are "open drain" drivers. What this means is that the chip can drive its output low, but it cannot drive it high. For the line to be able to go high you must provide pull-up resistors to the 5v supply.
Both SCL and SDA lines are "open drain" drivers. What this means is that the chip can drive its output low, but it cannot drive it high. For the line to be able to go high you must provide pull-up resistors to the 5v supply.
Thank you for the reply.I understand about open drain pins.My question is why open drain pins are used for I2C communication,why cant normal I/O pins used for I2C communication.If we use normal I/O pins pull ups are not required right,controller can make it high or low.
Thank you for the reply.I understand about open drain pins.My question is why open drain pins are used for I2C communication,why cant normal I/O pins used for I2C communication.If we use normal I/O pins pull ups are not required right,controller can make it high or low.
The SDA pin of all devices are connected together on the bus. Ths use of 'normal i/o' could lead to short circuit if one device drives high and another drives low.
With open drain, multiple output can be connected together.
I understand about open drain pins.My question is why open drain pins are used for I2C communication,why cant normal I/O pins used for I2C communication.
If you use normal (push-pull) I/O-pins, the I2C bus doesn't work, at least for SDA. SCL can be push-pull driven by the master under certain prerequisites.
Apparently you do not understand. Open drain drivers are required by design of the protocol.
If you use normal (push-pull) I/O-pins, the I2C bus doesn't work, at least for SDA. SCL can be push-pull driven by the master under certain prerequisites.
sorry! my confuse is as on this statement "If you use normal (push-pull) I/O-pins, the I2C bus doesn't work".
Is GPIO pin normal I/O pins? If yes, by this statement, the I2C bus doesn't work?
The term "normal I/O pin" has been introduced by the OP, he also associated it with driving "high or low", in other words push-pull operation. So besides all ambiguousities of terms, the question is rather clear and has been clearly answered by several contributors.
The term "normal I/O pin" has been introduced by the OP, he also associated it with driving "high or low", in other words push-pull operation. So besides all ambiguousities of terms, the question is rather clear and has been clearly answered by several contributors.
Can you help to post where I can find the discussion?
It seems a bit confuse on the term definition "normal I/O", "general I/O" with/or without open drain support.