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

QQ登錄

只需一步,快速開(kāi)始

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

關(guān)于IIC協(xié)議的一些總結(jié)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:492205 發(fā)表于 2019-5-17 16:03 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
一. 技術(shù)性能:
工作速率有100K和400K兩種;
支持多機(jī)通訊;
支持多主控模塊,但同一時(shí)刻只允許有一個(gè)主控;      
由數(shù)據(jù)線SDA和時(shí)鐘SCL構(gòu)成的串行總線;
每個(gè)電路和模塊都有唯一的地址;                    
每個(gè)器件可以使用獨(dú)立電源
二. 基本工作原理:
以啟動(dòng)信號(hào)START來(lái)掌管總線,以停止信號(hào)STOP來(lái)釋放總線;
每次通訊以START開(kāi)始,以STOP結(jié)束;
啟動(dòng)信號(hào)START后緊接著發(fā)送一個(gè)地址字節(jié),其中7位為被控器件的地址碼,一位為讀/寫控制位R/W,R/W位為0表示由主控向被控器件寫數(shù)據(jù),R/W為1表示由主控向被控器件讀數(shù)據(jù);
當(dāng)被控器件檢測(cè)到收到的地址與自己的地址相同時(shí),在第9個(gè)時(shí)鐘期間反饋應(yīng)答信號(hào);
每個(gè)數(shù)據(jù)字節(jié)在傳送時(shí)都是高位(MSB)在前;
三.通信過(guò)程:
寫通訊過(guò)程:
1. 主控在檢測(cè)到總線空閑的狀況下,首先發(fā)送一個(gè)START信號(hào)掌管總線;
2. 發(fā)送一個(gè)地址字節(jié)(包括7位地址碼和一位R/W);
3. 當(dāng)被控器件檢測(cè)到主控發(fā)送的地址與自己的地址相同時(shí)發(fā)送一個(gè)應(yīng)答信號(hào)(ACK);
4. 主控收到ACK后開(kāi)始發(fā)送第一個(gè)數(shù)據(jù)字節(jié);
5. 被控器收到數(shù)據(jù)字節(jié)后發(fā)送一個(gè)ACK表示繼續(xù)傳送數(shù)據(jù),發(fā)送NACK表示傳送數(shù)據(jù)結(jié)束;
6. 主控發(fā)送完全部數(shù)據(jù)后,發(fā)送一個(gè)停止位STOP,結(jié)束整個(gè)通訊并且釋放總線;
讀通訊過(guò)程:
1. 主控在檢測(cè)到總線空閑的狀況下,首先發(fā)送一個(gè)START信號(hào)掌管總線;
2. 發(fā)送一個(gè)地址字節(jié)(包括7位地址碼和一位R/W);
3. 當(dāng)被控器件檢測(cè)到主控發(fā)送的地址與自己的地址相同時(shí)發(fā)送一個(gè)應(yīng)答信號(hào)(ACK);
4. 主控收到ACK后釋放數(shù)據(jù)總線,開(kāi)始接收第一個(gè)數(shù)據(jù)字節(jié);
5. 主控收到數(shù)據(jù)后發(fā)送ACK表示繼續(xù)傳送數(shù)據(jù),發(fā)送NACK表示傳送數(shù)據(jù)結(jié)束;
6. 主控發(fā)送完全部數(shù)據(jù)后,發(fā)送一個(gè)停止位STOP,結(jié)束整個(gè)通訊并且釋放總線;
四. 總線信號(hào)時(shí)序分析
1. 總線空閑狀態(tài)
SDA和SCL兩條信號(hào)線都處于高電平,即總線上所有的器件都釋放總線,兩條信號(hào)線各自的上拉電阻把電平拉高;
2. 啟動(dòng)信號(hào)START
時(shí)鐘信號(hào)SCL保持高電平,數(shù)據(jù)信號(hào)SDA的電平被拉低(即負(fù)跳變)。啟動(dòng)信號(hào)必須是跳變信號(hào),而且在建立該信號(hào)前必修保證總線處于空閑狀態(tài);
3. 停止信號(hào)STOP
時(shí)鐘信號(hào)SCL保持高電平,數(shù)據(jù)線被釋放,使得SDA返回高電平(即正跳變),停止信號(hào)也必須是跳變信號(hào)。
4. 數(shù)據(jù)傳送
SCL線呈現(xiàn)高電平期間,SDA線上的電平必須保持穩(wěn)定,低電平表示0(此時(shí)的線電壓為低電壓),高電平表示1(此時(shí)的電壓由元器件的VDD決定)。只有在SCL線為低電平期間,SDA上的電平允許變化。
5. 應(yīng)答信號(hào)ACK
I2C總線的數(shù)據(jù)都是以字節(jié)(8位)的方式傳送的,發(fā)送器件每發(fā)送一個(gè)字節(jié)之后,在時(shí)鐘的第9個(gè)脈沖期間釋放數(shù)據(jù)總線,由接收器發(fā)送一個(gè)ACK(把數(shù)據(jù)總線的電平拉低)來(lái)表示數(shù)據(jù)成功接收。
6. 無(wú)應(yīng)答信號(hào)NACK
在時(shí)鐘的第9個(gè)脈沖期間發(fā)送器釋放數(shù)據(jù)總線,接收器不拉低數(shù)據(jù)總線表示一個(gè)NACK,NACK有兩種用途:
a. 一般表示接收器未成功接收數(shù)據(jù)字節(jié);
b. 當(dāng)接收器是主控器時(shí),它收到最后一個(gè)字節(jié)后,應(yīng)發(fā)送一個(gè)NACK信號(hào),以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,并釋放總線,以便主控接收器發(fā)送一個(gè)停止信號(hào)STOP。
五. 尋址約定
地址的分配方法有兩種:
1. 含CPU的智能器件,地址由軟件初始化時(shí)定義,但不能與其它的器件有沖突;
2. 不含CPU的非智能器件,由廠家在器件內(nèi)部固化,不可改變。
高7位為地址碼,其分為兩部分:
1. 高4位屬于固定地址不可改變,由廠家固化的統(tǒng)一地址;
2. 低三位為引腳設(shè)定地址,可以由外部引腳來(lái)設(shè)定(并非所有器件都可以設(shè)定);
另,按照一哥們的告訴我的理解:
通信過(guò)程如下:
(1)通信過(guò)程的開(kāi)始,首先時(shí)鐘線SCL在一個(gè)時(shí)鐘周期的高電平期間內(nèi),如果此時(shí)數(shù)據(jù)線SDA有從高電平跳到低電平的負(fù)條邊沿,則標(biāo)志著通信過(guò)程的開(kāi)始。
(2)地址數(shù)據(jù)的發(fā)送,通信過(guò)程開(kāi)始后,即在這個(gè)開(kāi)始的時(shí)鐘周期后,隨后的8個(gè)時(shí)鐘周期內(nèi),開(kāi)始正常采樣數(shù)據(jù)線SDA上的數(shù)據(jù)。即時(shí)鐘周期高電平時(shí),數(shù)據(jù)線上的高低電平均有效,并被正確譯為八位二進(jìn)制數(shù)。通信開(kāi)始的時(shí)鐘周期后的這八個(gè)時(shí)鐘周期采樣的數(shù)據(jù),各個(gè)從設(shè)備都會(huì)收到,然后與自己的地址比較。這就相當(dāng)于一個(gè)握手信號(hào)。
(3)真正數(shù)據(jù)的發(fā)送,在上述某個(gè)從設(shè)備發(fā)現(xiàn)自己的地址匹配時(shí),便在下個(gè)時(shí)鐘的高電平來(lái)之前將數(shù)據(jù)線SDA的電平拉低置成低電平,即保證在下個(gè)時(shí)鐘的高電平階段,SDA的電平始終為低。這樣,以后的數(shù)據(jù)再發(fā)送,其他設(shè)備都不會(huì)接受了,只有該從設(shè)備會(huì)采樣接受。
(4)通信過(guò)程的結(jié)束。與通信的開(kāi)始一樣,在SCL為高電平的情況下,是數(shù)據(jù)線SDA由低電平跳至高電平,即有一個(gè)正條邊沿。此時(shí),標(biāo)志通信結(jié)束。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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