歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> I2C全面理解

I2C全面理解

日期:2017/3/1 10:13:30   编辑:Linux編程

I2C我是想全面深入的從嵌入式軟件工程師的角度做個理解,剛剛還申請了一個專欄,這個好好寫.

學習技術從外文文檔看起~~

要全面了解I2C,可以從《I2C-bus specification and user manual》看起.I2C最初是由Philips提出的,那麼這文檔就是由NXP維護的.

I2C總線被全球超過50個公司的1000+個ICs所使用,已然是一個世界標准.另外,I2C總線與多種不同的控制總線是兼容的,比如SMBus(系統管理總線),PMBus(電源管理總線),IPMI(智能平台管理總線),DDC(顯示數據通道)以及ATCA(高級電信架構).如果沒記錯的話,linux中的I2C框架是完全支持SMBus的.

我們接下來要了解I2C總線是如何工作的,在一個具體應用中如何設計.I2C的數據傳輸,握手以及總線仲裁機制都需要了解.I2C總線在每種操作模式下的時序和電氣特性都需要了解,這裡還是從嵌入式軟件工程師的角度著重了解時序特性.

I2C總線的特性:

在消費電子,通信以及工業電子中,看起來不相關的設計中有很多類似的地方.例如,基本上每個系統都包括:

1.一些智能控制,通常是單芯片的微控制器

2.通用的電路:LCD和LED驅動器,遠程IO口,RAM,EEPROM,RTC或者DAC\ADC.

3.面向應用的電路:比如收音機和視頻系統的數字調諧和信號處理電路,溫度傳感器和智能卡.

為了讓這些共同之處對於系統設計者和設備廠商都有用,也為了最大化硬件的有效性和電路的簡單性,Philips半導體開發了一個簡單的雙向2線的總線,實現了IC之間的有效控制.這個總線就被稱為I2C總線.所有兼容I2C總線的設備都包含一個片上的接口,允許它們直接通過I2C總線進行通信.這個設計解決了在設計數字控制電路時帶來的很多接口問題.

下面是I2C總線的一些特性:

1.只需要兩根線,一個串行數據線(SDA)額一個串行時鐘線(SCL).

2.可以通過軟件方式和一個唯一的地址來尋找到每一個連接到總線的設備,簡單的主從關系一直存在.主機可以作為主機發送器或者主機接收器.

3.它是真正的多主機總線,如果有兩個或多個主機初始化數據傳輸,可以通過沖突檢測和仲裁來防止數據被破壞.

4.串行的8位雙向數據傳輸在標准模式下達到100kb/s,快速模式下是400kb/s,超速模式下是3.4Mb/s.

5.串行的8位單向數據在快速模式下可以達到5Mb/s.

6.片上的濾波器可以保護數據完整性.

7.總線上連接的最大IC數量由總線最大的電容所限制.

系統設計者的好處:

由於I2C總線是個是一個標准的總線,不需要額外的接口.所以在系統升級或者修改時,可以簡單的換IC.

廠商的好處:

符合I2C總線的IC不僅幫助了設計者,同樣給設備廠商很多好處,因為:

1.I2C只有兩根線,所以IC的pin腳會少,PCB的面積會小,成本會降.

2.完整的I2C總線協議不需要地址譯碼器或其他邏輯電路.

這只是一些好處.另外,符合I2C總線的IC會增加系統設計的靈活性.IC很容易升級,比如需要一個更大的ROM,只需要選擇一個有更大ROM的微控制器就可以了.

IC設計者的好處:

微控制器的設計者經常要考慮輸出pin腳.I2C協議允許在沒有單獨尋址信號和芯片使能信號的條件下各種外設的連接.另外,帶I2C接口的微控制器在市場上更受歡迎,因為有很多外設可以選.

第一部分就翻譯這麼多了,英語水平就只能這樣了,下次就開始了解I2C總線協議了~

Copyright © Linux教程網 All Rights Reserved