Categories

The point of I2C NACKs

Posted on Monday, August 17th, 2009 in Bus Pirate, Development by Ian

nack

The logic analyzer output above (top continues on the bottom) shows the Bus Pirate I2C address scan function. The Bus Pirate sends a DS1307 I2C read address. After the DS1307 ACKnowledges the address (bit 9), it immediately starts sending data to the Bus Pirate and ignores the I2C STOP sequence sent by the address scanner. This caused extra I2C addresses to appear at random.

This is the purpose of the I2C NACK bit that concludes a transfer from the slave IC to the master device. If the master ACKs the last byte and then attempts a STOP condition, the slave might put a 0 on the data line that blocks the STOP condition. If the master NACKs the last byte then the slave IC gives up and everybody exits cleanly.

Read more about this issue here, updates will be in the nightly compiles in a few days.

This entry was posted on Monday, August 17th, 2009 at 2:46 pm and is filed under Bus Pirate, Development. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

Leave a Reply

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Recent Comments

  • Paul Robertson: Count me in
  • Chris Jennings: I too like the cold and snow (it means no grass mowing). Now I can focus on fun stuff like hobby boards and woodworking.
  • flubba86: Commenting for fun and profit.
  • Sohan: If wishes were PCBs, beggars would be soldering!
  • Luke: Neat