新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > I2C總線學(xué)習(xí)—查缺補(bǔ)漏—應(yīng)答信號(hào)ACK

I2C總線學(xué)習(xí)—查缺補(bǔ)漏—應(yīng)答信號(hào)ACK

作者: 時(shí)間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
IIC協(xié)議規(guī)定,當(dāng)主機(jī)作為接收設(shè)備時(shí),主機(jī)對(duì)最后一個(gè)字節(jié)不應(yīng)答,以向發(fā)送設(shè)備(從設(shè)備)標(biāo)識(shí)數(shù)據(jù)傳送結(jié)束。這是因?yàn)槊看蝹鬏敹紤?yīng)得到應(yīng)答信號(hào)后再進(jìn)行下一個(gè)字節(jié)傳送。如果此時(shí)接收機(jī)應(yīng)答了,那它就接收的不是最后一個(gè)字節(jié)了。如果是最后一個(gè)字節(jié),第9個(gè)時(shí)鐘周期發(fā)送的是非應(yīng)答信號(hào)(此時(shí)發(fā)送的不是應(yīng)答信號(hào)就是非應(yīng)答信號(hào)),最后發(fā)送停止信號(hào)。
并非每傳輸8位數(shù)據(jù)之后,都會(huì)有ACK信號(hào),有以下3中例外
  1. 當(dāng)從機(jī)不能響應(yīng)從機(jī)地址時(shí)(例如它正忙于其他事而無法響應(yīng)IIC總線的操作,或者這個(gè)地址沒有對(duì)應(yīng)的從機(jī)),在第9個(gè)SCL周期內(nèi)SDA線沒有拉低,即沒有ACK信號(hào)。這時(shí),主機(jī)發(fā)出一個(gè)P信號(hào)終止傳輸或者重新發(fā)出一個(gè)S信號(hào)開始新的傳輸。
  2. 如果從機(jī)接收器在傳輸過程中不能接收更多的數(shù)據(jù)時(shí),它不會(huì)發(fā)出ACK信號(hào)。這樣,主機(jī)就可以意識(shí)到這點(diǎn),從而發(fā)出一個(gè)P信號(hào)終止傳輸或者重新發(fā)出一個(gè)S信號(hào)開始新的傳輸。
  3. 主機(jī)接收器在接收到最后一個(gè)字節(jié)后,也不會(huì)發(fā)出ACK信號(hào)。于是,從機(jī)發(fā)送器釋放SDA線,以允許主機(jī)發(fā)出P信號(hào)結(jié)束傳輸。



評(píng)論


技術(shù)專區(qū)

關(guān)閉