
I2C
(資料圖片僅供參考)
I2C與SPI類似,I2C常用來為電路板層次的集成電路、傳感器等元件的連接提供短程接口。
多個并聯的I2C器件
I2C只使用兩條雙向信號線:串行數據線(SDA)和串行時鐘線(SCL)。沒有選擇線,而且因為I2C是半雙工接口,所以它只需要一條數據線。數據線都是漏極開路,即器件內部的FET的漏極與SDA和SCL引腳相連接。這也意味著I2C接口被強制接到外部上拉電阻。上拉電壓一般為3.3V~5.0V,由元件的I2C接口規范決定。當一件設備作為電流主設備,將兩個總線信號調整到“開始”狀態時,I2C總線上的數據交換就開始了,同時其它I2C設備也收到信號,知道主設備需要通信。當“開始”狀態一開始,所有的I2C設備都會做好等待總線傳輸數據的準備。
在“開始”狀態出現后,主設備發送一個設備的地址以及要進行的操作的命令(讀或寫)。當其它I2C設備都接收到地址后,它們將接收到的地址與自己的地址比較,如果不匹配,就一直保持在等待狀態,直到總線被“停止”狀態釋放為止。如果地址與一個I2C設備匹配,該設備將產生一個應答響應發送給主設備。
主設備接收到應答響應后,就會開始傳送數據,或者等待響應的從設備返回數據,這取決于先前傳送的地址是讀地址還是寫地址。在讀入數據時,主設備對從設備傳回的每個字節都發送一個響應信號。在數據傳輸完成時,主設備釋放I2C總線,把它設置為“停止”狀態。
7位I2C地址格式
I2C支持7位或10位地址,由所使用的器件決定。上圖所示中的原始的7位設計類型中,最低有效位(LSB)表明該地址是用來從主設備讀取數據還是向主設備寫入數據。剩下的7位構成了總線上特定I2C外圍設備的實際地址。
一個10位地址包含2字節,該地址分兩步發送,如下圖所示。最高有效字節首先發送,然后是最低有效字節。注意,當使用10位地址時,從設備為這兩個地址字節各發送一個應答信號(ACK)。
10位I2C地址格式
在設備制造生產時,它就被分配了一個地址。對于大容量元件,通常使用的方法是向NXP請求地址分配。如果需要連接兩個微控制器,可以給它們分配你想要的任何地址,但是選擇要慎重。
下圖列出的一些地址值是由NXP指定并保留的。
I2C保留的7位地址
下圖為I2C技術參數為I2C接口規定的四種不同的速度(比特率)。
I2C比特率
還有一種“超快模式”,使用單向總線時,最大傳輸速率5MB/s,但是傳統的I2C接口與該模式不兼容。
標簽: