通過 I2C 執(zhí)行的 MCT8329A 讀取操作涉及以下序列。
- I2C 啟動(dòng)條件。
- 序列從 I2C 目標(biāo)起始字節(jié)開始。
- 起始字節(jié)后跟 24 位控制字??刂谱种械奈?23 必須為 1,因?yàn)樗且粋€(gè)讀取操作。
- 控制字后跟重復(fù)啟動(dòng)或正常啟動(dòng)。
- MCT8329A 在 SDA 上發(fā)送數(shù)據(jù)字節(jié)。MCT8329A 發(fā)送的字節(jié)數(shù)取決于控制字中的 DLEN 字段。
- 在發(fā)送數(shù)據(jù)字節(jié)時(shí),首先發(fā)送 LSB 字節(jié)。有關(guān)更多詳細(xì)信息,請(qǐng)參閱下面的示例。
- 16 位/32 位讀取 – 發(fā)回控制字中所述的地址中的數(shù)據(jù)。
- 64 位讀取 – 64 位被視為兩個(gè) 32 位讀取??刂谱种兴龅牡刂酚米鞯刂?0。地址 1 由 MCT8329A 通過將地址 0 遞增 2 在內(nèi)部進(jìn)行計(jì)算。MCT8329A 一共發(fā)送 8 個(gè)數(shù)據(jù)字節(jié)。前 4 個(gè)字節(jié)(以 LSB 在前的方式發(fā)送)從地址 0 讀取,接下來的 4 個(gè)字節(jié)從地址 1 讀取。
- MCT8329A 需要花一些時(shí)間來處理控制字并從給定的地址讀取數(shù)據(jù)。這涉及一些延遲。具有目標(biāo) ID 的重復(fù)啟動(dòng)很可能被否定確認(rèn)。如果 MCT8329A 已否定確認(rèn) I2C 讀取請(qǐng)求,則在幾個(gè)周期后重試。在該重試期間,不必將整個(gè)數(shù)據(jù)包連同控制字一起發(fā)送。僅發(fā)送具有目標(biāo) ID 和讀取位的啟動(dòng)條件就足夠了。
- 如果啟用了 CRC,則 MCT8329A 會(huì)在末尾發(fā)送一個(gè)額外的 CRC 字節(jié)。如果啟用了 CRC,則外部 MCU I2C 控制器必須在發(fā)送停止位之前讀取該附加字節(jié)。CRC 是針對(duì)整個(gè)數(shù)據(jù)包(目標(biāo) ID + W 位、控制字、目標(biāo) ID + R 位、數(shù)據(jù)字節(jié))進(jìn)行計(jì)算的。
- I2C 停止條件。