Support I2C masters without clock-strech support #1

Closed
opened 2019-03-07 19:10:06 +01:00 by razzor · 0 comments
Owner

Currently clock stretching is used for write/erase timing - the bus is "stopped" (by forcing SCL=low) while the AVR is writing to the flash/eeprom.

Some I2C masters (eg. BCM2835 / Raspberry Pi) do not detect SCL=low forced by the slave und continue to write data to twiboot.

Workaround could be:

  • start the actual write cycle only after STOP condition is received
  • do not acknowledge ADDR+WRITE while chip is busy writing
  • add a new read command to check if chip is buy writing

This will break existing applications since (fast) I2C transaction will now fail during chip write cycle.

Currently clock stretching is used for write/erase timing - the bus is "stopped" (by forcing SCL=low) while the AVR is writing to the flash/eeprom. Some I2C masters (eg. BCM2835 / Raspberry Pi) do not detect SCL=low forced by the slave und continue to write data to twiboot. Workaround could be: - start the actual write cycle only after STOP condition is received - do not acknowledge ADDR+WRITE while chip is busy writing - add a new read command to check if chip is buy writing This will break existing applications since (fast) I2C transaction will now fail during chip write cycle.
Sign in to join this conversation.
No Label
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: razzor/twiboot#1
No description provided.