0
\$\begingroup\$

Could Anybody help in getting started on I2C signal Static Timing Analysis. I just wanted to start with 1 single master slave combination. I have MPC8343EA as Master and TMP100 as slave. I know the analysis should have two conditions read and write and not sure what parameters to consider.if I get the idea as to how to go about to analyse the write condition I could easily finish the read part.

\$\endgroup\$
  • \$\begingroup\$ Timing analysis for I2C is rather rare. Usually people just expect it to work for most applications, esp given the low speeds and the synchronous nature of it. What speed are you running this at? Might be able to skip this entirely \$\endgroup\$ – Stonie May 2 '17 at 12:14
  • \$\begingroup\$ I understand that being asynchronous interface and running at 400KHz (in my case) should not be a problem. But, I just wanted to analyse the interface and find out things to consider. \$\endgroup\$ – seeker May 3 '17 at 4:58
  • 1
    \$\begingroup\$ It has a clock and a data line, which makes it synchronous. Asynchronous devices do not have clocks (over rs232 for example), or clocks that are out of phase. So the i2c communications themselves would be considered synchronous as the clock is included. \$\endgroup\$ – Stonie May 3 '17 at 6:15
1
\$\begingroup\$

To fully analyse a I2C bus timing wise, you need to know the physical differences between the clock and data channels, the value of the pullup resistor and the impedance of the driver driving the bus. If the channels for the clock and data are not the same, then you need to consider skew due to differences.

As I2C is open collector, with a pullup on the lines, the speed at which the line is charged and discharged varies, depending on the resistor values and the capacitance on the physical layout. This means that to get precise results in your analysis you need to have a fully routed board with a known stackup.

Your bus will charge the line up through a pullup, perhaps with a value of 2.6k to 10k (usually stronger the faster you need the bus to go) and discharge it through a mosfet in the MCU to ground. The mosfet might have a series resistance of 40 ohms, this is usually given in datasheets. If you know the logic trigger levels Vol, Voh, Vih, Vil you can find the timing at which you have valid logic levels.

You should notice that the information you have given is missing some of the most critical values that will decide whether your bus works or not. Any intentional or parasitic capacitance on the lines and the values of the pullup resistors are needed, along with the timings from the datasheets of the components.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.