The software reset call is a command sent from the controller on the I2C bus that instructs all devices that support the command to be reset to the power-up default state. To function as expected, the I2C bus must be functional, and no devices can be hanging the bus.
The software reset call is defined as the following steps:
- A start condition is sent by the I2C bus controller.
- The address used is the reserved general call I2C bus address '0000 0000' with the R/W bit set to 0. The byte sent is 0x00.
- Any devices supporting the general call functionality will ACK. If the R/W bit is set to 1 (read), the device will NACK.
- Once the general call address is acknowledged,
the controller sends only 1 byte of data equal to
0x06. If the data byte is any other value, the
device does not acknowledge or reset. If more than
1 byte is sent, no more bytes is acknowledged, and
the device ignores the I2C message
considering as invalid.
- After the 1 byte of data (0x06) is sent, the controller sends a STOP condition to end the Software Reset sequence. A repeated START condition is ignored by the device and no reset is performed.
Once the above steps are completed successfully,
the device performs a reset. This clears all
register values back to power-on defaults.