This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

I2C bad clock stops transmission

I'm using ADuC7026's I2C to interface with AD5254 (digital potentiometer). Every once in a while, I get a bad pulse on the SCL line, and the AD5254 does not acknowledge the byte. The bad pulse is essentially a pulse that only rises 40-50% of the normal logic level (3.3V). Subsequently, the SDA line remains low, and I must do a hard reset of the micro to get the line back to it's high logic level.

This condition seems to occur more frequently when I'm interfacing with a host PC through the ADuC7026's serial port.

Any help would be appreciated.
Matt.

Parents
  • How common it is depends on the hardware, the baudrate, the length of the traces etc. But a robust solution should detect when you can't talk with your I2C devices anymore and clock them to a known state. Remember that the I2C listeners are state machines. They count bits in the transfer, so an extra clock signal will have them hung waiting for the remaining data bits. They don't have any timeout - all time they see is the number of clock pulses.

Reply
  • How common it is depends on the hardware, the baudrate, the length of the traces etc. But a robust solution should detect when you can't talk with your I2C devices anymore and clock them to a known state. Remember that the I2C listeners are state machines. They count bits in the transfer, so an extra clock signal will have them hung waiting for the remaining data bits. They don't have any timeout - all time they see is the number of clock pulses.

Children