通過 I2C 執(zhí)行的 MCF8315C-Q1 讀取事務(wù)涉及以下序列(請參閱圖 6-54)。
- 啟動(dòng)事務(wù)的控制器 I2C 啟動(dòng)條件。
- 啟動(dòng)后跟 I2C 目標(biāo) ID 字節(jié),其中包括 7 位目標(biāo) ID 和設(shè)置為 0b 的 R/W 位。ACK(黃色框中)表示 MCF8315C-Q1 已處理接收的目標(biāo) ID,該目標(biāo) ID 與其 I2C 目標(biāo) ID 相匹配,因此將繼續(xù)執(zhí)行此事務(wù)。如果接收的目標(biāo) ID 與 MCF8315C-Q1 的 I2C ID 不匹配,則將忽略此事務(wù),并且 MCF8315C-Q1 不會(huì)發(fā)送 ACK。
- 目標(biāo) ID 字節(jié)后跟 24 位控制字,每次發(fā)送一個(gè)字節(jié)??刂谱种械奈?23 設(shè)置為 1b,因?yàn)樗亲x取事務(wù)。ACK(藍(lán)色框中)對應(yīng)于 MCF8315C-Q1 發(fā)送到控制器的響應(yīng),表明已接收(控制字的)前一個(gè)字節(jié)并且可以發(fā)送下一個(gè)字節(jié)。
- 控制字后跟重復(fù)啟動(dòng)(RS,啟動(dòng)前不停止)或正常啟動(dòng)(P 后跟 S),以啟動(dòng)從 MCF8315C-Q1 到 I2C 控制器的數(shù)據(jù)(要讀回)傳輸。RS 或 S 后跟 7 位目標(biāo) ID 和設(shè)置為 1b 以啟動(dòng)讀取事務(wù)的 R/W 位。MCF8315C-Q1 向控制器發(fā)送 ACK(RS 之后的灰色框中)以響應(yīng)接收到讀取事務(wù)請求。
- 響應(yīng)讀取事務(wù)請求后,MCF8315C-Q1 在 SDA 上發(fā)送數(shù)據(jù)字節(jié),一次發(fā)送一個(gè)字節(jié)。MCF8315C-Q1 發(fā)送的數(shù)據(jù)字節(jié)數(shù)取決于控制字中的 DLEN 字段。
- 在發(fā)送數(shù)據(jù)字節(jié)時(shí),首先發(fā)送 LSB 字節(jié)。有關(guān)詳細(xì)信息,請參閱節(jié) 6.6.2.4中的示例。
- 16 位/32 位讀取 – 控制字所述地址中的數(shù)據(jù)發(fā)送回控制器。
- 64 位讀取 - 64 位被視為兩個(gè)連續(xù) 32 位讀取??刂谱种兴龅牡刂酚米?Addr_1。Addr_2 由 MCF8315C-Q1 通過將 Addr_1 遞增 0x2 來計(jì)算。 MCF8315C-Q1 一共發(fā)送 8 個(gè)數(shù)據(jù)字節(jié)。前 4 個(gè)字節(jié)(以 LSB 在前的方式發(fā)送)從 Addr_1 讀取,接下來的 4 個(gè)字節(jié)從 Addr_2 讀取。
- 橙色框中的 ACK 對應(yīng)于控制器發(fā)送到 MCF8315C-Q1 的響應(yīng),表明已接收前一個(gè)字節(jié)并且可以發(fā)送下一個(gè)字節(jié)。
- 如果已啟用 CRC,則 MCF8315C-Q1 會(huì)在末尾發(fā)送一個(gè)額外的 CRC 字節(jié)??刂破鞅仨氉x取此 CRC 字節(jié),然后發(fā)送最后一個(gè) ACK(橙色)。CRC 是針對整個(gè)數(shù)據(jù)包(目標(biāo) ID + W 位、控制字、目標(biāo) ID + R 位、數(shù)據(jù)字節(jié))進(jìn)行計(jì)算的。
- 終止事務(wù)的控制器 I2C 停止條件