I think that I2C bus is used when connecting multiple devices for memory and power sequence management on the board with FPGA. Some systems use the I2C bus between boards.
The I2C bus is a simple two-wire system!
The I2C bus can exchange information between devices with only two single clock (SCL) and single data (SDA) line wiring.
Because of its simplicity, it is often used in SMBus, PMBus, ATCA's IPMB bus, etc. used in communication equipment.
Simple but watch out for trouble!
People tend to think that the I2C bus is easy to design because it is a two-wire system, simple and low-speed communication.
However, it is not uncommon to fall into a situation where communication is not possible.
In particular, when it is necessary to connect to the backplane for communication equipment, etc., or when communication is performed by connecting IO cards with long wires, the possibility of trouble is high.
What caused the communication error?
Communication errors are most likely caused by wiring capacitance exceeding the I2C bus specifications. The I2C bus standard specifies a maximum wiring capacitance of 400pF.
When connecting to the backplane or using long wiring between IO cards, the wiring capacitance will deviate from the I2C standard, and as shown in Figure 1, the rising waveform will be dull and communication errors will occur, so care must be taken.
Is it possible to fix it by adjusting the pull-up resistor?
Normally, if the rising waveform is dull, increase the pull-up current (reduce the pull-up resistance) so that it can be driven even if the wiring capacitance is large.
However, if the pull-up current is too large, the side effect is that the Low level will increase (by the amount of pull-up current x parasitic resistance), and it may deviate from the VOL specification.
*Please refer to this article for VOL regulations.
Have you checked the VOL regulation of the I2C bus?
So, if the communication error cannot be avoided by adjusting the pull-up resistor, what should be done?
Solutions to improve communication errors
What should I do if I need to connect to a backplane like a communication device, or if communication errors cannot be avoided due to parasitic capacitance such as connecting boards with flat cables for I2C bus communication? Is not it?
As a workaround if the parasitic capacitance does not comply with the standard, use the I2C bus buffer products from Analog Devices.
The LTC4315 has a Rise Time Accelerator function that can improve the corrupted rise waveform.
Placing the LTC4315 on the controller board, as shown in Figure 3, allows it to communicate properly even when connected to the backplane.
The LTC4315 is a must-have product for IC bus communication that solves the problem of large parasitic capacitance between boards (devices).