⑴ IIC(I2C)匯流排上的設備其地址如何定義
IIC匯流排
一般串列數據通訊都有時鍾和數據之分,有非同步和同步之別.
有單線,雙線和三線等.
I2C肯定是2線的(不算地線).
I2C協議確實很科學,比3/4線的SPI要好,當然線多通訊速率相對就快了.
I2C的原則是:
在SCL=1(高電平)時,SDA千萬別忽悠!!!
否則,SDA下跳則"判罰"為"起始信號S",SDA上跳則"判罰"為"停止信號P".
在SCL=0(低電平)時,SDA隨便忽悠!!!(可別忽悠過火到SCL跳高)
每個位元組後應該由對方回送一個應答信號ACK做為對方在線的標志.
非應答信號一般在所有位元組的最後一個位元組後.一般要由雙方協議簽定.
SCL必須由主機發送,否則天下大亂.
首位元組是"片選信號",即7位從機地址加1位方向(讀寫)控制.
從機收到(聽到)自己的地址才能發送應答信號(必須應答!!!)表示自己在線.
其他地址的從機不允許忽悠!!!(當然群呼可以忽悠但只能聽不許說話)
讀寫是站在主機的立場上定義的.
"讀"是主機接收從機數據,"寫"是主機發送數據給從機.
重復位主要用於主機從發送模式到接收模式的轉換"信號",由於只有2線,
所以收發轉換肯定要比SPI復雜,因為SPI可用不同的邊沿來收發數據,而I2C不行.
在硬體I2C模塊,特別是MCU/ARM/DSP等每個階段都會得到一個准確的狀態碼,
根據這個狀態碼可以很容易知道現在在什麼狀態和什麼出錯信息.
7位I2C匯流排可以掛接127個不同地址的I2C設備,0號"設備"作為群呼地址.
10位I2C匯流排可以掛接更多的10位I2C設備.
總之,只要掌握I2C的忽悠記,一般很容易掌控... 第一個位元組(為slave address)由7位地址和一位R/W讀寫位組成的,這位元組是個器件地址。
首先,你要知道:常用IIC介面通用器件的器件地址是由種類型號,及定址碼組成的,共7位。
如格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
1-器件類型由:D7-D4 共4位決定的。這是由半導公司生產時就已固定此類型的了,也就是說這4位已是固定的。
2-用戶自定義地址碼:D3-D1共3位。這是由用戶自己設置的,通常的作法如EEPROM這些器件是由外部IC的3個引腳所組合電平決定的(用常用的名字如A0,A1,A2)。這也就是定址碼。
所以為什麼同一IIC匯流排上同一型號的IC只能最多共掛8片同種類晶元的原因了。
3-最低一位就是R/W位。這位不用我多說了。
在現代電子系統中,有為數眾多的IC需要進行相互之間以及與外界的通信。為了提供硬體的效率和簡化電路的設計,PHILIPS開發了一種用於內部IC控制的簡單的雙向兩線串列匯流排I2C。I2C匯流排支持任何一種IC製造工藝,並且PHILIPS和其他廠商提供了種類非常豐富的I2C兼容晶元。作為一個專利的控制匯流排,I2C已經成為世界性的工業標准。
每個器件都有一個唯一的地址,而且可以是單接收的器件(例如:LCD驅動器)或者可以接收也可以發送的器件(例如:存儲器)。發送器或接收器可以在主模式或從模式下操作,這取決於晶元是否必須啟動數據的傳輸還是僅僅被定址。I2C是一個多主匯流排,即它可以由多個連接的器件控制。
基本的I2C匯流排規范於20年前發布,其數據傳輸速率最高為100Kbits/s,採用7位定址。但是由於數據傳輸速率和應用功能的迅速增加,I2C匯流排也增強為快速模式(400Kbits/s)和10位定址以滿足更高速度和更大定址空間的需求。
I2C匯流排始終和先進技術保持同步,但仍然保持其向下兼容性。並且最近還增加了高速模式,其速度可達3.4Mbits/s。它使得I2C匯流排能夠支持現有以及將來的高速串列傳輸應用,例如EEPROM和Flash存儲器。 在現代電子系統中,有為數眾多的IC需要進行相互之間以及與外界的通信。為了提供硬體的效率和簡化電路的設計,PHILIPS開發了一種用於內部IC控制的簡單的雙向兩線串列匯流排I2C。I2C匯流排支持任何一種IC製造工藝,並且PHILIPS和其他廠商提供了種類非常豐富的I2C兼容晶元。作為一個專利的控制匯流排,I2C已經成為世界性的工業標准。
每個器件都有一個唯一的地址,而且可以是單接收的器件(例如:LCD驅動器)或者可以接收也可以發送的器件(例如:存儲器)。發送器或接收器可以在主模式或從模式下操作,這取決於晶元是否必須啟動數據的傳輸還是僅僅被定址。I2C是一個多主匯流排,即它可以由多個連接的器件控制。
基本的I2C匯流排規范於20年前發布,其數據傳輸速率最高為100Kbits/s,採用7位定址。但是由於數據傳輸速率和應用功能的迅速增加,I2C匯流排也增強為快速模式(400Kbits/s)和10位定址以滿足更高速度和更大定址空間的需求。
I2C匯流排始終和先進技術保持同步,但仍然保持其向下兼容性。並且最近還增加了高速模式,其速度可達3.4Mbits/s。它使得I2C匯流排能夠支持現有以及將來的高速串列傳輸應用,例如EEPROM和Flash存儲器。
⑵ I2C是什麼
I²C(Inter-Integrated Circuit)是內部整合電路的稱呼,是一種串列通訊匯流排,使用多主從架構,由飛利浦公司在1980年代為了讓主板、嵌入式系統或手機用以連接低速周邊裝置而發展。I²C(讀作"I-squared-C" ),還有可選的拼寫方式是I2C(讀作I-two-C)以及IIC(讀作I-I-C),在中國則多以"I方C"稱之。
拓展資料:
1. I2C匯流排是由Philips公司開發的一種簡單、雙向二線制同步串列匯流排。它只需要兩根線即可在連接於匯流排上的器件之間傳送信息。
2. 主器件用於啟動匯流排傳送數據,並產生時鍾以開放傳送的器件,此時任何被定址的器件均被認為是從器件.在匯流排上主和從、發和收的關系不是恆定的,而取決於此時數據傳送方向。如果主機要發送數據給從器件,則主機首先定址從器件,然後主動發送數據至從器件,最後由主機終止數據傳送;如果主機要接收從器件的數據,首先由主器件定址從器件.然後主機接收從器件發送的數據,最後由主機終止接收過程。在這種情況下.主機負責產生定時時鍾和終止數據傳送。
3. 在硬體上,12C匯流排只需要一根數據線和一根時鍾線兩根線,匯流排介面已經集成在晶元內部,不需要特殊的介面電路,而且片上介面電路的濾波器可以濾去匯流排數據上的毛刺.因此I2C匯流排簡化了硬體電路PCB布線,降低了系統成本,提高了系統可靠性。因為12C晶元除了這兩根線和少量中斷線,與系統再沒有連接的線,用戶常用IC可以很容易形成標准化和模塊化,便於重復利用。
4. I2C匯流排是一個真正的多主機匯流排,如果兩個或多個主機同時初始化數據傳輸,可以通過沖突檢測和仲裁防止數據破壞,每個連接到匯流排上的器件都有唯一的地址,任何器件既可以作為主機也可以作為從機,但同一時刻只允許有一個主機。數據傳輸和地址設定由軟體設定,非常靈活。匯流排上的器件增加和刪除不影響其他器件正常工作。
5. I2C匯流排可以通過外部連線進行在線檢測,便於系統故障診斷和調試,故障可以立即被定址,軟體也利於標准化和模塊化,縮短開發時問。連接到相同匯流排上的IC數量只受匯流排最大電容的限制,串列的8位雙向數據傳輸位速率在標准模式下可達100Kbit/s,快速模式下可達400Kbit/s,高速模式下可達3.4Mbit/s。