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. In order for it 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 will not acknowledge or reset. If more than 1 byte is sent, no more bytes will be acknowledged, and the device will ignore the I2C message considering it 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 will be ignored by the device and no reset is performed.
One the above steps are completed successfully, the device will perform a reset. This will clear all register values back to power-on defaults. The input port register is also updated to reflect the state of the GPIO pins.