如何設計基于I2C總線的處理器的聯(lián)網(wǎng)方案?
隨著微控制器的價格越來越低,功能越來越強大,電氣設計人員發(fā)現(xiàn)在單板和多板系統(tǒng)中都使用多個小型控制器是一種更加經(jīng)濟高效的方法。這種輔助處理器能夠減輕主處理器在耗時任務上面的處理開銷,例如掃描鍵盤、顯示控制器和電機控制。這些控制器也可以配置為各種各樣的專用外設。
本文引用地址:http://butianyuan.cn/article/201808/384961.htm最近,我接受了一項任務:開發(fā)一種能夠方便地適用于多種應用的接口(軟/硬件),且要符合嵌入式處理器中常用的行業(yè)標準。在分析了一些典型應用之后,我們列出了一些針對該硬件接口的設計需求:常用于32位和8位處理器;能夠得到常用外設器件的支持;外設接口代碼量低于0.5kB;引腳數(shù)量少;數(shù)據(jù)帶寬可達10kBps;RAM用量少;一條總線上支持多種外設;方便使用API;不需要外部接口驅動硬件。
由于要求引腳數(shù)量少,所以必須采用串行接口。目前處理器中常見的串行接口包括SPI、I2C、USB和RS-232。通過從不同方面權衡比較這些接口,我最終選擇了I2C,因為它接口簡單,靈活性好,得到了大多數(shù)低成本控制器的支持。在不需要很高傳輸速度的情況下,較少的引腳數(shù)和流量控制功能還使得I2C接口相比SPI接口具有更大的優(yōu)勢。
I2C的工作原理
I2C是一種雙線雙向接口,包括一個時鐘信號和一個數(shù)據(jù)信號(SCL和SDA)。在不增加任何其他信號的情況下,一條I2C總線就可以支持多達12個設備。I2C接口規(guī)范包括三種工作速度:100kbps、400kbps和3.4Mbps。大多數(shù)常見的控制器只支持100-和400kbps兩種模式。I2C總線支持一個主設備多個從設備,或者多個主設備的配置結構。
I2C一個非常重要的特性就是它支持流量控制。如果某個從設備無法保持連續(xù)的字節(jié)傳輸,它可以將總線掛起,直到能夠跟上主設備的傳輸速度。這對于包含最小規(guī)模的I2C硬件并且必須在固件上支持部分傳輸協(xié)議的從設備來說是非常有用的。I2C總線規(guī)范支持7b和10b兩種尋址協(xié)議。我發(fā)現(xiàn)7b尋址模式在大部分應用中的效率更高。
在開始編寫代碼之前,我們需要很好地了解I2C總線的工作原理。任何情況下I2C總線至少要包含一個主設備,至少要掛有一個或多個從設備。主設備總是由主到從發(fā)起數(shù)據(jù)傳輸操作。無論有多少個外設掛接在總線上,I2C接口只有兩個信號。
兩個信號都是集電極開路的,通過大小為2.7k左右的上拉電阻接Vcc電源。SDA信號是雙向的,可以由主設備或從設備驅動。SCL信號是由主設備驅動的,但是在一個數(shù)據(jù)字節(jié)的末尾從設備必須保持SCL信號為低,以延遲總線直到從設備開始處理數(shù)據(jù)。主設備在數(shù)據(jù)字節(jié)的最后一位傳輸完之后釋放SCL信號,然后檢查SCL信號是否變高。如果SCL沒有變高,那么主設備認為從設備正在請求主設備延遲,直到其開始處理數(shù)據(jù)。
當通過I2C總線發(fā)送數(shù)據(jù)時,只有當SCL為低電平時才能進行數(shù)據(jù)變換。當SCL信號為高時,任何方向的數(shù)據(jù)都應該是穩(wěn)定的.
當總線空閑時,主設備和從設備都不下拉SDA和SCL信號。在發(fā)起一次數(shù)據(jù)傳輸時,主設備驅動SDA信號從高電平變成低電平,同時SCL信號為高。一般地,當SCL信號為高電平時,SDA信號的狀態(tài)保持不變,但啟動或停止條件下除外。當SCL信號為高并且SDA信號從低變高時,是傳輸停止的情況(如圖2所示)。
I2C總線以8b為單位傳輸數(shù)據(jù)。每傳輸一個字節(jié)時,必須得到數(shù)據(jù)接收方的確認。所有的數(shù)據(jù)都是從MSB(最高有效位)開始傳輸?shù)摹?/p>
評論