專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
我們?cè)趩纹瑱C(jī)芯片上常看到的I2C串行通信協(xié)議,最初是由飛利浦半導(dǎo)體公司在1982年發(fā)明的(現(xiàn)在稱為NXP半導(dǎo)體)。該協(xié)議提供短距離的板內(nèi)的通信的有效手段,是理想的嵌入式系統(tǒng)和主要設(shè)計(jì)關(guān)注點(diǎn)是簡(jiǎn)單性和低制造成本的微計(jì)算應(yīng)用程序。
英銳恩單片機(jī)開發(fā)工程師表示,對(duì)于想要使用I2C協(xié)議的產(chǎn)品的工程師來(lái)說(shuō),以I2C語(yǔ)言進(jìn)行編程成為必需的技能。在下面的文章中,我們對(duì)I2C信號(hào)傳輸?shù)墓ぷ髟磉M(jìn)行了基本介紹。我們將介紹I2C信號(hào)傳輸協(xié)議以及I2C協(xié)議的關(guān)鍵功能,使其非常適合在嵌入式計(jì)算項(xiàng)目中使用。
一、I2C信號(hào)傳輸是如何傳輸?shù)模?/strong>
英銳恩單片機(jī)開發(fā)工程師介紹,我們可以從對(duì)該協(xié)議及其必需組件的基本概述開始對(duì)I2C的討論。
名稱I2C是術(shù)語(yǔ)“集成電路間”的縮寫。在這里,術(shù)語(yǔ)“集成電路”主要是指“計(jì)算機(jī)芯片”。有許多類型的計(jì)算機(jī)芯片,包括用于處理(CPU),內(nèi)存(RAM和EEPROM)和其他功能的計(jì)算機(jī)芯片。集成電路間協(xié)議的概念告訴我們,該協(xié)議將允許這些單獨(dú)的芯片相互通信。實(shí)際上,這正是I2C協(xié)議的用途。
I2C協(xié)議旨在使多個(gè)從設(shè)備(例如內(nèi)存和其他外圍芯片)能夠在短距離上與一個(gè)或多個(gè)主設(shè)備(例如微控制器)進(jìn)行通信。重要的是,I2C通信協(xié)議允許在多個(gè)從設(shè)備與一個(gè)以上的主設(shè)備之間進(jìn)行精確的通信:多達(dá)1008個(gè)單獨(dú)的設(shè)備可以通過(guò)同一條總線進(jìn)行通信。使這成為可能的協(xié)議功能是兩線配置,從機(jī)尋址以及與I2C相關(guān)聯(lián)的已定義消息協(xié)議。
I2C通信協(xié)議使用兩線配置傳送消息。串行時(shí)鐘線(通??s寫為SCL)通過(guò)將時(shí)鐘信號(hào)從主設(shè)備傳輸?shù)綇脑O(shè)備來(lái)同步I2C總線上主設(shè)備和從設(shè)備之間的數(shù)據(jù)傳輸。在I2C中,時(shí)鐘信號(hào)始終由主設(shè)備生成。I2C中的第二條線稱為串行數(shù)據(jù)線或SDA。該導(dǎo)線允許在主設(shè)備和從設(shè)備之間進(jìn)行雙向數(shù)據(jù)傳輸。
二、I2C總線協(xié)議
英銳恩單片機(jī)開發(fā)人員表示,串行通信協(xié)議基本上是一組規(guī)則,它定義了一個(gè)或多個(gè)電子設(shè)備之間的通信的共同的語(yǔ)言和語(yǔ)法。對(duì)于使用I2C的任何設(shè)備,數(shù)據(jù)傳輸將始終由主設(shè)備啟動(dòng)。這是因?yàn)镮2C中的主設(shè)備控制時(shí)鐘線,該時(shí)鐘線使總線上的所有數(shù)據(jù)傳輸同步。
源自I2C總線上的主設(shè)備的消息遵循可預(yù)測(cè)的格式:
1.要傳輸數(shù)據(jù),主設(shè)備必須生成一個(gè)START條件。
2.在啟動(dòng)條件之后,將發(fā)送一個(gè)從地址,以指示將消息發(fā)送到的位置。
3.單個(gè)位指示主設(shè)備是否將從從設(shè)備讀取或?qū)懭霐?shù)據(jù)。
4.在傳輸數(shù)據(jù)的每個(gè)字節(jié)之后使用ACK位來(lái)確認(rèn)接收。
5.數(shù)據(jù)以單字節(jié)(8位)塊的形式傳輸,然后是ACK位。
6.當(dāng)消息結(jié)束時(shí),STOP條件表示數(shù)據(jù)傳輸結(jié)束。
三、啟動(dòng)和停止條件
通信協(xié)議的目的是實(shí)現(xiàn)多個(gè)主從設(shè)備之間的通信,通信通過(guò)一系列通過(guò)SDA導(dǎo)線傳輸?shù)南⑦M(jìn)行。英銳恩單片機(jī)開發(fā)人員解釋,當(dāng)需要發(fā)送消息時(shí),系統(tǒng)必須生成指示消息開始的START條件,然后生成指示消息結(jié)論的STOP條件,就像在電話的任何一端說(shuō)“你好!”和“再見!” 。
在I2C協(xié)議中,通信線為“漏極開路”,必須使用上拉電阻激活。當(dāng)需要發(fā)送消息時(shí),通過(guò)在SDA線中產(chǎn)生從高到低的變化來(lái)創(chuàng)建START條件。保持SDA線為高電平的上拉電阻被釋放,并且該線被拉低-這必須在SCL被拉高時(shí)完成。相反,當(dāng)SDA線從低電平變?yōu)楦唠娖角襍CL被拉低時(shí),將產(chǎn)生STOP條件。
在任何使用I2C的設(shè)備中,都使用上拉電阻器在四種基本工作模式之間切換設(shè)備。有些設(shè)備同時(shí)使用全部四個(gè),而其他I2C設(shè)備只能使用一個(gè)或兩個(gè)。四種潛在的操作模式是:
1.主設(shè)備將數(shù)據(jù)傳輸?shù)綇脑O(shè)備。
2.主設(shè)備從從設(shè)備接收數(shù)據(jù)。
3.從設(shè)備將數(shù)據(jù)傳輸?shù)街髟O(shè)備。
4.從設(shè)備從主設(shè)備接收數(shù)據(jù)。
四、從站尋址
英銳恩單片機(jī)開發(fā)工程師介紹,在I2C協(xié)議中,從設(shè)備尋址可確保在主設(shè)備發(fā)送消息時(shí)將正確的從設(shè)備標(biāo)識(shí)為收件人。I2C協(xié)議支持兩種不同的從地址尋址格式:7位尋址和10位尋址。
在7位尋址中,從設(shè)備的地址在START條件之后立即以7位發(fā)送。第8位用作讀/寫指示符,其中0指示主機(jī)要向從機(jī)寫入信息,而1指示主機(jī)要從從機(jī)讀取信息。7位尋址通常將允許多達(dá)128個(gè)設(shè)備在總線上具有唯一的從機(jī)地址,但是保留16個(gè)7位地址用于特殊功能,則該數(shù)目略低,為112。
在10位尋址中,可以使用全部10位地址,這意味著最多可以將1024個(gè)從設(shè)備連接到系統(tǒng)。在此,在啟動(dòng)條件之后使用特殊的保留地址來(lái)指示存在10位地址。在10位地址指示符之后,將發(fā)送地址的前兩位,然后是讀/寫指示符,然后是ACK。一旦從機(jī)確認(rèn)了主機(jī),主機(jī)發(fā)送的下一個(gè)字節(jié)將包含其余的從機(jī)地址。
英銳恩單片機(jī)開發(fā)人員表示,我們還經(jīng)??吹揭恍┦褂?位尋址方案的從設(shè)備。盡管這些設(shè)備未遵循典型的I2C約定,但仍然存在使用I2C協(xié)議與8位尋址從設(shè)備進(jìn)行通信的方法。
以上就是英銳恩單片機(jī)開發(fā)工程師分享的單片機(jī)中I2C通信協(xié)議的基本原理。英銳恩專注單片機(jī)應(yīng)用方案設(shè)計(jì)與開發(fā),提供8位單片機(jī)、16位單片機(jī)、32位單片機(jī)、運(yùn)放芯片和模擬開關(guān)。