找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 10285|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

關(guān)于用51單片機(jī)模擬IIC總線通信(主機(jī)給從機(jī)發(fā)信號(hào),從機(jī)無(wú)應(yīng)答時(shí)應(yīng)該終止發(fā)送數(shù)據(jù))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:297166 發(fā)表于 2018-9-3 19:51 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近認(rèn)真的學(xué)習(xí)了IIC總線通信,并看了郭天祥老師的書和視頻講解。
但是我有一點(diǎn)疑問:在IIC總線協(xié)議里規(guī)定當(dāng)主機(jī)給從機(jī)發(fā)信號(hào),從機(jī)無(wú)應(yīng)答時(shí)應(yīng)該終止發(fā)送數(shù)據(jù),但是郭老師的例程里并沒有這一內(nèi)容,在其他的IIC通信例程中也沒有看到類似內(nèi)容。這是說明這個(gè)部分不重要嗎?如果要實(shí)現(xiàn)是不是需要用到goto語(yǔ)句?


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:384109 發(fā)表于 2018-9-3 22:36 | 只看該作者
這部分應(yīng)該都有的,這里的從機(jī)應(yīng)答應(yīng)該不是應(yīng)答相應(yīng)的數(shù)據(jù),而是在協(xié)議里主機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù)后,從機(jī)都會(huì)返回一個(gè)應(yīng)答的位,只有一個(gè)BIT,注意看協(xié)議

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:393240 發(fā)表于 2018-9-4 00:27 來(lái)自觸屏版 | 只看該作者
低電平應(yīng)答ACK,高電平NACK

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:297166 發(fā)表于 2018-9-4 01:30 | 只看該作者
你們都沒有理解我的意思。我是說,主機(jī)給從機(jī)發(fā)數(shù)據(jù),從機(jī)沒有給主機(jī)應(yīng)答,即沒有在SCK高電平時(shí)把SDA拉低(1bit)時(shí),主機(jī)應(yīng)該中斷傳輸才對(duì)。但是我看的所有例程里(包括不少12864LCD例程)都沒有相關(guān)語(yǔ)句,大多只是后面加了一個(gè)時(shí)鐘,都不管SDA是什么,只為了能夠順利進(jìn)行數(shù)據(jù)傳輸。還有AT24C02中讀完一節(jié)數(shù)據(jù)應(yīng)該先非應(yīng)答,再停止之類的小細(xì)節(jié)……可能是我摳的太仔細(xì)了……

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

5#
ID:297166 發(fā)表于 2018-9-4 01:31 | 只看該作者
人中狼 發(fā)表于 2018-9-3 22:36
這部分應(yīng)該都有的,這里的從機(jī)應(yīng)答應(yīng)該不是應(yīng)答相應(yīng)的數(shù)據(jù),而是在協(xié)議里主機(jī)發(fā)送一個(gè)字節(jié)數(shù)據(jù)后,從機(jī)都會(huì) ...

看樓下我的解釋
回復(fù)

使用道具 舉報(bào)

6#
ID:297166 發(fā)表于 2018-9-4 01:32 | 只看該作者
馬帥 發(fā)表于 2018-9-4 00:27
低電平應(yīng)答ACK,高電平NACK

看樓下我的解釋
回復(fù)

使用道具 舉報(bào)

7#
ID:98526 發(fā)表于 2018-9-4 08:31 | 只看該作者
可以不去理從機(jī)、主機(jī)自己模擬一個(gè)應(yīng)答位就好了。
類似這種
即應(yīng)答信號(hào)由主機(jī)自己模擬、不理會(huì)從機(jī)。只要芯片沒有壞、不影響使用。
void iic_slave_NOACK()//默認(rèn)非應(yīng)答信號(hào)
{
        SDA=1;
        _nop_();
        SCL=1;
        _nop_();
        SCL=0;       
        _nop_();
}

void MSA300_WriteBytes(unsigned char RegAddr,unsigned char Data)
{
            I2C_Start();//主機(jī)準(zhǔn)備好了
        I2C_Write(G_SlaveAddr_W);//主機(jī)要給從機(jī)發(fā)數(shù)據(jù),知會(huì)從機(jī)一下
        iic_Ack();//主機(jī)當(dāng)從機(jī)默認(rèn)知道了
        I2C_Write(RegAddr);//主機(jī)告訴從機(jī)要操縱的地址
        iic_Ack();//主機(jī)當(dāng)從機(jī)默認(rèn)知道了
        I2C_Write(Data);//主機(jī)告訴從機(jī)要修改的地址中內(nèi)容
        iic_Ack();//主機(jī)當(dāng)從機(jī)默認(rèn)知道了
        I2C_Stop();//主機(jī)掛斷了電話
}
回復(fù)

使用道具 舉報(bào)

8#
ID:98526 發(fā)表于 2018-9-4 08:37 | 只看該作者
blossom99 發(fā)表于 2018-9-4 01:30
你們都沒有理解我的意思。我是說,主機(jī)給從機(jī)發(fā)數(shù)據(jù),從機(jī)沒有給主機(jī)應(yīng)答,即沒有在SCK高電平時(shí)把SDA拉低( ...

從機(jī)如果沒有給主機(jī)應(yīng)答、即說明從機(jī)壞了或者時(shí)序不對(duì)。讀出來(lái)的數(shù)據(jù)肯定是不對(duì)的。所以一般簡(jiǎn)單用途都不去理會(huì)從機(jī)是否應(yīng)答。如果要去理會(huì)從機(jī)應(yīng)答那就while等待從機(jī)應(yīng)答、然后加個(gè)超時(shí)機(jī)制,規(guī)定時(shí)間內(nèi)while沒有檢測(cè)到從機(jī)應(yīng)答、就return 錯(cuò)誤標(biāo)志,如果成功發(fā)送就return 成功標(biāo)志。主程序里判斷是錯(cuò)誤標(biāo)志就輸出錯(cuò)誤信息即可,比如“通信錯(cuò)誤、請(qǐng)更換芯片”

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
blossom99 + 5 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

9#
ID:384109 發(fā)表于 2018-9-4 10:19 | 只看該作者
最好可以貼上你所看的例程,或許有的例程為了方便并沒有去檢測(cè)應(yīng)答,我也是看例程學(xué)的IIC,里面就有對(duì)從機(jī)應(yīng)答的檢測(cè)和處理。多看一些例程,現(xiàn)在都用C語(yǔ)言寫程序,所以有的例程不需要局限在51,也可以看看如STM32中相關(guān)操作的例程
回復(fù)

使用道具 舉報(bào)

10#
ID:235009 發(fā)表于 2018-9-4 11:41 | 只看該作者
你可以加延時(shí)判斷啊。定時(shí)過后如果沒有收到應(yīng)答,則退出此次發(fā)送
回復(fù)

使用道具 舉報(bào)

11#
ID:235009 發(fā)表于 2018-9-4 11:43 | 只看該作者
從機(jī)無(wú)應(yīng)答,可能總線有問題哦,你可以在主機(jī)上加延時(shí)判斷。盡可能少用while,或者while中做一個(gè)技術(shù),不然很容易卡機(jī)
回復(fù)

使用道具 舉報(bào)

12#
ID:8222 發(fā)表于 2018-10-24 23:44 | 只看該作者
郭老師的教材只能入門,有很多東西是粗糙的,不嚴(yán)謹(jǐn)?shù)摹?/td>
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表