軟件復(fù)位廣播是 I2C 總線上的控制器發(fā)出的命令,指示所有支持該命令的器件復(fù)位為上電默認(rèn)狀態(tài)。要確保按預(yù)期運(yùn)行,I2C 總線必須能夠正常工作,并且任何器件都不能掛起總線。
軟件復(fù)位廣播定義為以下步驟:
- I2C 總線控制器發(fā)送一個(gè)啟動(dòng)條件。
- 使用的地址是保留的通用廣播 I2C 總線地址“0000 0000”,其中 R/W 位設(shè)置為 0。發(fā)送的字節(jié)為 0x00。
- 任何支持通用廣播功能的器件都將 ACK。如果 R/W 位設(shè)置為 1(讀?。?,器件將 NACK。
- 通用廣播地址得到應(yīng)答后,控制器僅發(fā)送等于 0x06 的 1 字節(jié)數(shù)據(jù)。如果數(shù)據(jù)字節(jié)是任何其他值,器件不會(huì)應(yīng)答或復(fù)位。如果發(fā)送的數(shù)據(jù)超過 1 字節(jié),則不會(huì)再應(yīng)答更多字節(jié),并且器件會(huì)忽略 I2C 消息,將其視為無效。
- 發(fā)送 1 字節(jié)數(shù)據(jù) (0x06) 后,控制器發(fā)送一個(gè)停止條件來結(jié)束軟件復(fù)位序列。器件忽略重復(fù)啟動(dòng)條件,不執(zhí)行復(fù)位。
成功完成上述步驟后,器件執(zhí)行復(fù)位。這會(huì)將所有寄存器值恢復(fù)為上電默認(rèn)值。