The Software Reset call is a command send from the controller on the I2C
bus that instructs all devices that support the command to be reset to power-up
values. 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 000' 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 this 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.
Once the above steps are completed
successfully, the device performs a reset. This clears all register values back to
power-on defaults. All P-ports are configured as inputs.