rust-embedded / embedded-hal

A Hardware Abstraction Layer (HAL) for embedded systems
Apache License 2.0
2.01k stars 202 forks source link

Clarify I2C transaction contract for NACK behavior #622

Closed nhpupu closed 3 months ago

nhpupu commented 3 months ago

Update the I2C trait documentation in both embedded-hal and embedded-hal-async to clarify the NACK (No Acknowledge) behavior during read operations.

The previous wording suggested that a NACK was only sent for the last byte of the final read operation in a transaction. This has been corrected to specify that a NACK should be sent at the end of each read operation, whether it's followed by a stop condition or a repeated start condition.

This change ensures correct implementation of the I2C protocol across different scenarios and prevents potential communication errors.

Changes:

fix #621