Distinguish between I2C Stop and Repeated Start

bejikebeem
Posts: 2
Joined: Sun Aug 04, 2024 1:42 am

Distinguish between I2C Stop and Repeated Start

Postby bejikebeem » 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:
  • 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 Repeated START occurs because then the Slave knows it may need to use the context of the bytes transferred so far, to decide what it needs to send next, if needed.

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.]

bejikebeem
Posts: 2
Joined: Sun Aug 04, 2024 1:42 am

Re: Distinguish between I2C Stop and Repeated Start

Postby bejikebeem » Wed Aug 21, 2024 11:11 pm

Can anyone from Espressif help here?

Who is online

Users browsing this forum: No registered users and 187 guests