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