I2C總線具有結構簡單使用方便的特點。本文描述了Linux下I2C驅動的結構,并在此基礎上給出了I2C設備驅動和應用的實現。
1 引言
I2C (Inter-Integrated Circuit)總線是一種由PHILIPS公司開發的兩線式串行總線,用于連接微控制器及其外圍設備。I2C總線最主要的優點是其簡單性和有效性。由于接口直接在組件之上,因此I2C總線占用的空間非常小,減少了電路板的空間和芯片管腳的數量,降低了互聯成本。I2C總線最初為音頻和視頻設備開發,現已應用于各種服務與管理場合,來實現配置或掌握組件的功能狀態,如電源、系統風扇、系統溫度等參數,增加了系統的安全性,方便了管理。
2 I2C總線概述
I2C總線是由數據線SDA和時鐘SCL構成的串行總線,可發送和接收數據,每個器件都有一個惟一的地址識別。I2C 規程運用主/從雙向通訊。器件發送數據到總線上,則定義為發送器,器件接收數據則定義為接收器。主器件和從器件都可以工作于接收和發送狀態。總線必須由主器件(通常為微控制器)控制,主器件產生串行時鐘(SCL)控制總線的傳輸方向,并產生起始和停止條件。SDA線上的數據狀態僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態的改變被用來表示起始和停止條件。
I2C總線在傳送數據過程中共有三種類型信號,它們分別是:開始信號、結束信號和應答信號。