I2C 波形讀取方法

syrchina發表於2018-04-18

I2c資訊讀取指南  

一、 基本訊號判斷  
1 匯流排空閒判斷   SCL 和  SDA 全為高  
2 開始訊號判斷  :SCL 為高時 SDA 產生一個下跳沿 
3 地址、資料、應答,讀寫標示電平的識別:SCL 為高電平脈衝時SDA上的電平即為地址、資料、應答電平 
4 i2c讀  : 高電平 
5 i2c 寫 : 低電平 
6 應答(ACK):低電平 
7 非應答(NAK):高電平  
8 停止訊號 : SCL 為高時 SDA 產生一個上升沿  
9 資料傳輸方向: 資料傳輸先高位元組後低位元組。即先傳第七位,然後第六位。。。。。。。。。第0位。  
二、I2c協議包描述 首先是起始訊號   然後是七位的slave 地址 
然後是讀寫標誌位(0 寫  1 讀)  然後是裝置的應答(0 ack  1 nak)如果此時是1 則裝置存在問題,i2c錯誤  然後是一個或多個位元組的資料。每個資料有8位,後跟一個應答。此時如果是主機讀資料則應答位由主機發出。如果是寫資料則應答位由裝置發出。  然後是停止位。如果是主機讀,則在收到最後一個位元組後發一個nak併發stop訊號釋放匯流排。如果是主機寫,則在發出最後一個位元組並受到ack後發stop訊號釋放匯流排。  
三、獲取i2c波形資料:   從start訊號到stop訊號或restart訊號之間的資料線在clk訊號的高電平脈衝上的電平的集合。  
四、從I2c 波形資料讀取i2c資訊 1 獲得裝置地址  :資料位的前七位  2 獲取資料傳輸方向: 第8位(高讀,低寫)  3 獲取是否應答: 9的倍數位(低ack,高 nak)即每一個資料緊跟的那一位  4 獲取傳輸的資料: 第10+7(n-1)位到10+7n 位是傳輸的資料 n 指的是傳輸的第n個資料  Note : 1   如果是讀操作,stop訊號前必須要有nak ,否則i2c錯  2 叢機應答nak則i2c錯  3 如何解析傳輸的資料依賴於裝置定義。(比如ov2640,第一個位元組是暫存器地 址,第二個位元組是資料。它只有兩個資料)  
五、讀波形的步驟:  1 根據三提供的方法獲取波形資料    2 根據波形資料獲取i2c資訊  

六 、複合i2c概念  所謂複合i2c是指主機完成一次傳輸後不發stop訊號,接著發start訊號開始下一次傳輸。 這樣的格式在某些裝置中要求(裝置spec中有詳細的說明)。  


相關文章