4
\$\begingroup\$

I'm thinking of migrating from an I2C bus at 400 kHz to one running at nearly 1 MHz.

I am using 1.2k pull-ups at the moment and on the clock and data lines, I get a rise time of 383ns average when sending out pulses. Fall time is approaching the limits of a 100 MHz oscilloscope at ~15ns. Are there potential issues with this kind of rise time? What about noise and signal integrity? Clock jitter? etc. Would there be significant issues? I will probably stick with 400 kHz on my breadboard which works fine, but the final product may use 1 MHz I2C.

\$\endgroup\$
  • 1
    \$\begingroup\$ How long are the traces? (wires?) \$\endgroup\$ – tyblu Dec 9 '10 at 19:31
  • 3
    \$\begingroup\$ @tyblu, They may be up to 50 cm long going over twisted pair, but in general <6cm for the rest of the board. I was thinking of using 400 kHz for external sensors though, and 1 MHz for internal logic only. \$\endgroup\$ – Thomas O Dec 9 '10 at 19:57
3
\$\begingroup\$

If you are going to run an I2C bus with mixed speeds, and you have devices on the bus that can only work at 400 KHz and below, then they must be disabled somehow (e.g. powering them down, so their I2C bus leads will be tristated) when running the bus at the 1 MHz speed, since they will not be able to parse the high-speed addresses and may respond incorrectly.

\$\endgroup\$
  • 1
    \$\begingroup\$ Do you think it would be possible to clock addresses at 400 kHz but data at 1 MHz? So the slow devices ignore the address if necessary. \$\endgroup\$ – Thomas O Dec 9 '10 at 20:51
  • 1
    \$\begingroup\$ I don't think so. According to post #9 in this thread picaxeforum.co.uk/showthread.php?t=8535, "You cannot run mixed speed devices on the same bus and use the higher baud rate - the slow device will simply get confused and can hang or give corrupt data.". On a project I am working on, which has a chip that only works at I2C clock rates below 50 KHz, the manual for the chip states that if you want to use it on the same bus as faster devices, you must put it to sleep or hold it in reset while talking to the higher speed devices. \$\endgroup\$ – tcrosley Dec 9 '10 at 22:09
  • 1
    \$\begingroup\$ Thanks for that. It might actually be better to have a fast internal bus and a slow external one. My MCU has two I2C controllers. \$\endgroup\$ – Thomas O Dec 9 '10 at 22:36
  • \$\begingroup\$ "might actually be better to have a fast internal bus and a slow external one" -- sounds good to me. \$\endgroup\$ – tcrosley Dec 9 '10 at 22:54
1
\$\begingroup\$

Clock jitter isn't an issue in I2C since each clock is treated separately.

\$\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.