<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何設計基于I2C總線(xiàn)的處理器的聯(lián)網(wǎng)方案?

如何設計基于I2C總線(xiàn)的處理器的聯(lián)網(wǎng)方案?

作者: 時(shí)間:2018-08-02 來(lái)源:網(wǎng)絡(luò ) 收藏

隨著(zhù)微控制器的價(jià)格越來(lái)越低,功能越來(lái)越強大,電氣設計人員發(fā)現在單板和多板系統中都使用多個(gè)小型控制器是一種更加經(jīng)濟高效的方法。這種輔助處理器能夠減輕主處理器在耗時(shí)任務(wù)上面的處理開(kāi)銷(xiāo),例如掃描鍵盤(pán)、顯示控制器和電機控制。這些控制器也可以配置為各種各樣的專(zhuān)用外設。

本文引用地址:http://dyxdggzs.com/article/201808/384961.htm

最近,我接受了一項任務(wù):開(kāi)發(fā)一種能夠方便地適用于多種應用的接口(軟/硬件),且要符合嵌入式處理器中常用的行業(yè)標準。在分析了一些典型應用之后,我們列出了一些針對該硬件接口的設計需求:常用于32位和8位處理器;能夠得到常用外設器件的支持;外設接口代碼量低于0.5kB;引腳數量少;數據帶寬可達10kBps;RAM用量少;一條總線(xiàn)上支持多種外設;方便使用API;不需要外部接口驅動(dòng)硬件。

由于要求引腳數量少,所以必須采用串行接口。目前處理器中常見(jiàn)的串行接口包括SPI、I2C、USB和RS-232。通過(guò)從不同方面權衡比較這些接口,我最終選擇了I2C,因為它接口簡(jiǎn)單,靈活性好,得到了大多數低成本控制器的支持。在不需要很高傳輸速度的情況下,較少的引腳數和流量控制功能還使得I2C接口相比SPI接口具有更大的優(yōu)勢。

I2C的工作原理

I2C是一種雙線(xiàn)雙向接口,包括一個(gè)時(shí)鐘信號和一個(gè)數據信號(SCL和SDA)。在不增加任何其他信號的情況下,一條I2C總線(xiàn)就可以支持多達12個(gè)設備。I2C接口規范包括三種工作速度:100kbps、400kbps和3.4Mbps。大多數常見(jiàn)的控制器只支持100-和400kbps兩種模式。I2C總線(xiàn)支持一個(gè)主設備多個(gè)從設備,或者多個(gè)主設備的配置結構。

I2C一個(gè)非常重要的特性就是它支持流量控制。如果某個(gè)從設備無(wú)法保持連續的字節傳輸,它可以將總線(xiàn)掛起,直到能夠跟上主設備的傳輸速度。這對于包含最小規模的I2C硬件并且必須在固件上支持部分傳輸協(xié)議的從設備來(lái)說(shuō)是非常有用的。I2C總線(xiàn)規范支持7b和10b兩種尋址協(xié)議。我發(fā)現7b尋址模式在大部分應用中的效率更高。

在開(kāi)始編寫(xiě)代碼之前,我們需要很好地了解I2C總線(xiàn)的工作原理。任何情況下I2C總線(xiàn)至少要包含一個(gè)主設備,至少要掛有一個(gè)或多個(gè)從設備。主設備總是由主到從發(fā)起數據傳輸操作。無(wú)論有多少個(gè)外設掛接在總線(xiàn)上,I2C接口只有兩個(gè)信號。

兩個(gè)信號都是集電極開(kāi)路的,通過(guò)大小為2.7k左右的上拉電阻接Vcc電源。SDA信號是雙向的,可以由主設備或從設備驅動(dòng)。SCL信號是由主設備驅動(dòng)的,但是在一個(gè)數據字節的末尾從設備必須保持SCL信號為低,以延遲總線(xiàn)直到從設備開(kāi)始處理數據。主設備在數據字節的最后一位傳輸完之后釋放SCL信號,然后檢查SCL信號是否變高。如果SCL沒(méi)有變高,那么主設備認為從設備正在請求主設備延遲,直到其開(kāi)始處理數據。

當通過(guò)I2C總線(xiàn)發(fā)送數據時(shí),只有當SCL為低電平時(shí)才能進(jìn)行數據變換。當SCL信號為高時(shí),任何方向的數據都應該是穩定的.

當總線(xiàn)空閑時(shí),主設備和從設備都不下拉SDA和SCL信號。在發(fā)起一次數據傳輸時(shí),主設備驅動(dòng)SDA信號從高電平變成低電平,同時(shí)SCL信號為高。一般地,當SCL信號為高電平時(shí),SDA信號的狀態(tài)保持不變,但啟動(dòng)或停止條件下除外。當SCL信號為高并且SDA信號從低變高時(shí),是傳輸停止的情況(如圖2所示)。

I2C總線(xiàn)以8b為單位傳輸數據。每傳輸一個(gè)字節時(shí),必須得到數據接收方的確認。所有的數據都是從MSB(最高有效位)開(kāi)始傳輸的。



關(guān)鍵詞: LPC2131 CAN接口

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>