| I2c信息讀取指南 一、 基本信號判斷 1 總線空閑判斷 SCL 和 SDA 全為高 2 開始信號判斷 :SCL 為高時 SDA 產(chǎn)生一個下跳沿 3 地址、數(shù)據(jù)、應(yīng)答,讀寫標(biāo)示電平的識別:SCL 為高電平脈沖時SDA上的電平即為地址、數(shù)據(jù)、應(yīng)答電平 4 i2c讀 : 高電平 5 i2c 寫 : 低電平 6 應(yīng)答(ACK):低電平 7 非應(yīng)答(NAK):高電平 8 停止信號 : SCL 為高時 SDA 產(chǎn)生一個上升沿 9 數(shù)據(jù)傳輸方向: 數(shù)據(jù)傳輸先高字節(jié)后低字節(jié)。即先傳第七位,然后第六位。。。。。。。。。第0位。 二、I2c協(xié)議包描述 首先是起始信號 然后是七位的slave 地址 然后是讀寫標(biāo)志位(0 寫 1 讀) 然后是設(shè)備的應(yīng)答(0 ack 1 nak)如果此時是1 則設(shè)備存在問題,i2c錯誤 然后是一個或多個字節(jié)的數(shù)據(jù)。每個數(shù)據(jù)有8位,后跟一個應(yīng)答。此時如果是主機(jī)讀數(shù)據(jù)則應(yīng)答位由主機(jī)發(fā)出。如果是寫數(shù)據(jù)則應(yīng)答位由設(shè)備發(fā)出。 然后是停止位。如果是主機(jī)讀,則在收到最后一個字節(jié)后發(fā)一個nak并發(fā)stop信號釋放總線。如果是主機(jī)寫,則在發(fā)出最后一個字節(jié)并受到ack后發(fā)stop信號釋放總線。 三、獲取i2c波形數(shù)據(jù): 從start信號到stop信號或restart信號之間的數(shù)據(jù)線在clk信號的高電平脈沖上的電平的集合。 四、從I2c 波形數(shù)據(jù)讀取i2c信息 1 獲得設(shè)備地址 :數(shù)據(jù)位的前七位 2 獲取數(shù)據(jù)傳輸方向: 第8位(高讀,低寫) 3 獲取是否應(yīng)答: 9的倍數(shù)位(低ack,高 nak)即每一個數(shù)據(jù)緊跟的那一位 4 獲取傳輸?shù)臄?shù)據(jù): 第10+7(n-1)位到10+7n 位是傳輸?shù)臄?shù)據(jù) n 指的是傳輸?shù)牡趎個數(shù)據(jù) Note : 1 如果是讀操作,stop信號前必須要有nak ,否則i2c錯 2 叢機(jī)應(yīng)答nak則i2c錯 3 如何解析傳輸?shù)臄?shù)據(jù)依賴于設(shè)備定義。(比如ov2640,第一個字節(jié)是寄存器地 址,第二個字節(jié)是數(shù)據(jù)。它只有兩個數(shù)據(jù)) 五、讀波形的步驟: 1 根據(jù)三提供的方法獲取波形數(shù)據(jù) 2 根據(jù)波形數(shù)據(jù)獲取i2c信息 六 、復(fù)合i2c概念 所謂復(fù)合i2c是指主機(jī)完成一次傳輸后不發(fā)stop信號,接著發(fā)start信號開始下一次傳輸。 這樣的格式在某些設(shè)備中要求(設(shè)備spec中有詳細(xì)的說明)。 | 
|  | 
來自: 新用戶8389DdzY > 《待分類》