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:
- The I2C bus controller sends a start
condition.
- 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), then the device
will NACK.
- When 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, then
the device does not acknowledge or reset. If more
than 1 byte is sent, then 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. The
device ignores a repeated START condition and no reset is performed.
When the previous steps are completed
successfully, the device performs a reset. This
clears all register values back to power-on
defaults.