Linux IIC驅動 1 IIC匯流排介紹

2021-08-07 11:57:30 字數 1524 閱讀 7789

iic我在很久之前就接觸並使用過了,現在來回顧一下它的硬體結構和時序

i2c(inter-integrated circuit)匯流排是由philips公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。硬體結構如下:

i2c匯流排只有兩根雙向訊號線。

sda: serial data line-資料線

scl :serial clock-時鐘線

i2c匯流排協議規定:從裝置採用7位的位址。d7~d1:從裝置位址。d0位:資料傳送方向位,為「0」時表示主裝置向從裝置寫資料,為「1」時表示主機由從裝置讀資料。主裝置傳送位址時,匯流排上的每個從裝置都將這7位位址碼與自己的位址進行比較,如果相同,則認為自己正被主裝置定址,根據r/w位將自己確定為傳送器或接收器。

從裝置的位址由固定部分和使用者自定義部分組成。

1.固定部分:d7-d4 共4位決定的。這是由從裝置的生產廠商生產時就已確定的值。

2.使用者自定義部分:d3-d1  共3 位。這3位通常對應裝置的3個引腳(a0~a2)。把3個引腳接到不同的電平上,就可以形成乙個3位的數值。

i2c匯流排匯流排的sda和scl兩條訊號線同時處於高電平時,規定為匯流排的空閒狀態。

在時鐘線scl保持高電平期間,資料線sda上的電平被拉低(即負跳變),定義為i2c匯流排匯流排的啟動訊號,它標誌著一次資料傳輸的開始

在時鐘線scl保持高電平時,資料線sda被釋放,使得sda返回高電平(即正跳變),稱為i2c匯流排的停止訊號

i2c匯流排上的所有資料(位址和資料)都是以8位乙個位元組為單位傳送的。

傳送器每傳送乙個位元組,就在時鐘脈衝第9位釋放資料線,由接收器反饋乙個應答訊號。 應答訊號為低電平時,定為有效應答位ack,表示接收器已經成功地接收了該位元組;應答訊號為高電平時,定為非應答位(nack),表示接收器沒有成功接收該位元組

第十九課(1)IIC協議

i2c在硬體上的接法如下圖所示,主控晶元引出兩條線scl serial clock sda erail data 線,在一條i2c匯流排上可以接很多i2c裝置,我們還會放乙個上拉電阻 放乙個上拉電阻的原因以後我們再說 主從結構 一主多從 隨便開啟乙個有iic的晶元 1 開始訊號 s scl為高電平時...

IIC匯流排驅動程式框架分析

我們首先從 drivers i2c chips eeprom.c來分析,這是驅動那一塊的 static struct i2c driver eeprom driver id i2c driverid eeprom,attach adapter eeprom attach adapter,detach...

SHT20 IIC匯流排驅動概述

sht20溫濕度感測器使用iic匯流排的驅動方式,以下資料參考sht20 datasheet總結 1 iic匯流排 start訊號 iic匯流排的起始訊號以sda由高電平變為低電平,等待5us以上,再由scl從高電平變低電平,發出起始訊號,圖示如下所示 注意 兩根線由高變低的間隔時間大於4.7us,...