软件复位调用提供了一种机制,通过发出专有格式的 I²C 命令,使 I²C 总线上的所有器件恢复上电默认状态。此运行假设 I²C 总线正常运行,并且没有器件使总线保持在锁存或“挂起”状态。软件复位序列定义如下:
- I²C 控制器发出 START 条件。
- 控制器发送保留的通用调用地址“0000 000”,其中 R/W 位设置为 0(写入)。
- 仅当器件检测到完整的通用调用地址 0000 0000 (00h) 时,器件才会确认。如果 R/W 位设置为 1(读取),则不会生成确认。
- 通用调用地址得到确认后,控制器会发送一个值为 06h 的数据字节。
- 器件仅在该数据字节等于 06h 时进行确认。
- 如果该数据字节不是 06h,或者发送了多个数据字节,器件不会进一步确认。
- 接收并确认了正确的字节后,控制器必须发出 STOP 条件来完成软件复位序列。此时,器件将寄存器复位为上电默认值,并在经过所需的总线空闲时间后为后续总线事务做好准备。
- 如果发出重复的 START 条件而不是 STOP 条件,则不会执行复位。
- 在该序列的任何时刻,如果器件未确认,则控制器应视为软件复位中止。在这种情况下,器件不会启动任何寄存器复位。