標(biāo)題: 硬件I2C通信中從機(jī)是如何知道數(shù)據(jù)結(jié)束可發(fā)送NACK [打印本頁]

作者: yxyxyxyx    時(shí)間: 2022-9-20 13:08
標(biāo)題: 硬件I2C通信中從機(jī)是如何知道數(shù)據(jù)結(jié)束可發(fā)送NACK
在IIC通信中,主機(jī)每發(fā)一個(gè)數(shù)據(jù),從機(jī)就會(huì)回一個(gè)ACK,最后一個(gè)數(shù)據(jù)就好發(fā)NACK,然后主機(jī)發(fā)送STOP信號(hào),但是從機(jī)接收數(shù)據(jù)時(shí)時(shí)怎么知道時(shí)最后一個(gè)數(shù)據(jù),在接收最后一個(gè)數(shù)據(jù)之后就發(fā)NACK
作者: 188610329    時(shí)間: 2022-9-20 14:27
理解有誤,標(biāo)準(zhǔn)的IIC通訊來講。
主機(jī)發(fā)送數(shù)據(jù)給從機(jī),從機(jī)接受成功 發(fā) ACK, 接收失敗發(fā) NAK,  控制權(quán)在主機(jī),主機(jī)發(fā)送停止信號(hào)了,從機(jī)就知道發(fā)送結(jié)束了。

主機(jī)從從機(jī)接受數(shù)據(jù),接收完一個(gè),主機(jī)發(fā)出ACK, 讓從機(jī)發(fā)下一個(gè), 當(dāng)主機(jī)發(fā)出 NAK 就是讓從機(jī)不要發(fā)了,最后一個(gè)了。

當(dāng)然,如果是某些特殊芯片,用的是雙線通訊,協(xié)議時(shí)序類似IIC, 但是從頭到尾沒說自己是IIC協(xié)議的。比如某驅(qū)動(dòng)芯片,他BUF被寫滿后發(fā)送 NAK 也是有的,其實(shí)和 IIC 通訊接受失敗的意思類似,都是不要再發(fā)了。再發(fā)就出錯(cuò)了的意思。
作者: Y_G_G    時(shí)間: 2022-9-21 01:34
IIC應(yīng)答系統(tǒng)非常的簡(jiǎn)單

主機(jī)寫入數(shù)據(jù)的時(shí)候,應(yīng)答信號(hào)由從機(jī)給出,表示從機(jī)已經(jīng)正確接收到一個(gè)8位的數(shù)據(jù)
如果從機(jī)沒有應(yīng)答信號(hào),就表示從機(jī)沒有正確的接收到數(shù)據(jù),主機(jī)自己決定接下來要干嘛

主機(jī)讀取數(shù)據(jù)的時(shí)候,應(yīng)答信號(hào)由主機(jī)給出,表示主機(jī)已經(jīng)讀取到一個(gè)8位的數(shù)據(jù),從機(jī)會(huì)在下一個(gè)時(shí)鐘會(huì)繼續(xù)輸出數(shù)據(jù)
如果主機(jī)沒有給出應(yīng)答符號(hào),就表示不再讀取數(shù)據(jù),從機(jī)不再輸出數(shù)據(jù)

看一下IIC的時(shí)序圖就知道了,如果不會(huì)看時(shí)序圖,那就先學(xué)會(huì)看時(shí)序圖
作者: coody_sz    時(shí)間: 2022-9-21 11:18
IIC通訊總是由接收數(shù)據(jù)方(主機(jī)從機(jī)均是)發(fā)送ACK和NACK,區(qū)別是從機(jī)在接收錯(cuò)誤時(shí)才發(fā)NACK,但主機(jī)是可以主動(dòng)發(fā)NACK表示讀取結(jié)束,從機(jī)接收數(shù)據(jù)是不知道結(jié)束的,由主機(jī)發(fā)STOP結(jié)束。
作者: yzwzfyz    時(shí)間: 2022-9-21 16:30
用雙方約定的通訊協(xié)議來確認(rèn)。
例如:約定連續(xù)數(shù)據(jù)發(fā)送間隔時(shí)間為10ms。那么超過10ms就可以認(rèn)定:上一個(gè)收到的數(shù)據(jù),就是最后一個(gè)。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1