Distinguish between I2C Stop and Repeated Start
Posted: Sun Aug 04, 2024 2:15 am
Hi, I'm trying to write an I2C Slave on the ESP32-S3, but the Reference Manual offers almost no info on how Repeated STARTs are handled in the hardware. So I'd appreciate some help with these:
It is useful to know when a STOP occurs because it signals the true end of a transaction, so a bus participant may decide to clear cached data, forward information to consumers, etc.]
- The manual says that I2C_TRANS_COMPLETE_INT is "Triggered when the Master or Slave detects a STOP bit". But the Arduino ESP32 port https://github.com/espressif/arduino-es ... ave.c#L715 suggests this interrupt may also be generated for Repeated STARTs. Which is it? Or are both true?
- Is I2C_TRANS_START_INT generated for Repeated START? Or only for "true" START?
- More generally, how is a Master / Slave expected to detect the STOP event alone? And how are they expected to detect a Repeated START?
It is useful to know when a STOP occurs because it signals the true end of a transaction, so a bus participant may decide to clear cached data, forward information to consumers, etc.]