點擊上方藍字談思實驗室
獲取更多汽車網絡安全資訊

對于嵌入式開發的朋友來說,I2C協議實在是再熟悉不過了,有太多的器件,采用的都是通過I2C來進行相應的設置。
I2C協議中最重要的一點是I2C地址。這個地址有7位和10位兩種形式。7位能夠表示127個地址,而在實際使用中基本上不會掛載如此多的設置,所以很多設備的地址都采用7位,所以本文接下來的說明都是基于此。
I2C還有一個很重要的概念,就是“主—從”。對于從設備來說,它是啥都不干的,更不會自動發送數據;而主設備,則是起到控制作用,一切都是從它開始。
除了GND以外,I2C有兩根線,分別是SDA和SCL,所有的設備都是接到這兩根線上。那么,這些設備如何知道數據是發送給它們呢?這就得依靠前面所說到的地址了。設備I2C的地址是固定的,比如0x50,0x60等等。因為只能有127個地址,地址沖突是很常見的,所以一般設備都會有一個地址選擇PIN,比如拉高時候為0x50,接地為0x60。如果無論拉高還是接地,都和別的芯片有沖突,那該怎么辦呢?答案是:只能換芯片了。
我們來看I2C協議中的數據傳輸時序圖:

SCL是時鐘,SDA承載的是數據。當SDA從1變動到0,而SCL還是1時,表示開始數據傳輸。接下來的7位,就是設備的地址。緊接著的是讀寫標志,其為1時是讀取,為0則是寫。如果I2C總線上存在著和請求的地址相對應的設備,則從設備會發送一個ACK信號通知主設備,可以發送數據了。接到ACK信號后,主設備則發送一個8位的數據。當傳輸完畢之后,SCL保持為1,SDA從0變換到1時,標明傳輸結束。
從這個時序圖中可以看到,SCL很重要,并且哪個時鐘沿是干嘛的,都是確定好的。比如,前面7個必定是地址,第8個是讀寫標志,數據傳輸必須是8位,必須接個ACK信號等等。
前面的時序圖并沒有標明數據傳輸的方向,我們現在看看寫操作的數據流向:

網格的是主設備發送的,白色格子是從設備發送的。從圖示中可以看到,對于寫操作,從設備都只是發送ACK進行確認而已。
而讀操作的數據流向,就有所不同,如圖:

這時候,從設備除了發送ACK以外,緊跟著的還有數據。
我們用示波器來查看波形圖,以便于理解。
將示波器的X和Y分別接到SDA和SCL,得到波形并分析如圖:

從圖中可知時序如下:
由主機發起,在SCL為高電平時,SDA由高到低切變,形成開始信號;
接著是7位地址和一位讀寫標志,這里7位地址為0111100,即0x3c,正是我們代碼中設置的地址ID;最后一位為0表示寫操作;
接著在下一個時鐘,主機以高電平狀態釋放SDA,這時從機響應,將SDA拉低了;
接著是兩個8位數據00101110與響應,即0x2E,正是“.”號的ASCII碼,符合預期輸出;
還有其它數據和最后的停止位,圖中被截掉了。
從圖中可知,縱向一格是200mV,則SDA和SCL的電平大概就是350mV;由于信號筆上設置了信號x10,因此實際電平應該大概是3.5V(理論上應該是3.3V)。橫向一格是25us,10個時鐘周期大概用了4格,即4x25us=100us,平均每個時鐘周期是10us,可算出傳輸頻率為1/10us=100,000/s,即100k bps。
既有讀又有寫的波形圖:

I2C是由2根線進行操作的,一個是主控時序SCL,另一根主控數據SDA
對于操作主要分成讀寫,讀寫的兩個操作有部分是相似的
而時序的操作主要分為:START,DATA,ACK,STOP,NOACK
寫的時序用到的時序為:STRAR,DATA,ACK,STOP
時序如圖所示:

讀時序用到的時序有:START,DATA,ACK,STOP,NOACK
時序如圖所示:

下面對時序的說明:
IDLE:空閑的時候,盡量將SDA和SCL拉到高電平
START:保持SCL為高電平,然后SDA由H->L
DATA:數據是當SCL為高電平的時候采集的數據才是有效的數據.
ACK:在發完數據后,從設備會將SDA拉到L
NOACK:在發送完數據后,從設備不會將SDA拉低
STOP:保持SCL為高電平,然后SDA由L->H
寫時序的流程是:START –>
從設備的寫地址 –> ACK –>
從設備的寄存器地址 –> ACK –>
寫入的數據 –> ACK –>
STOP
寫時序圖:

讀時序的流程是:START –>
從設備的寫地址 –> ACK –>
從設備的寄存器地址 –> ACK –>
從設備的讀地址 –> ACK ->
讀出的數據 –> NOACK –>
STOP
讀時序圖:

其中要注意的是I2C的2根線上都必須接上拉電阻,阻值一般是4.7K
在獲得ACK的時候,一般將SDA輸出一個高阻,然后再讀入ACK,好讓從設備拉低SDA。
來源:硬十
談思-汽車出海安全合規(歐洲)
交流群
談思 AutoSec Europe 峰會旨在搭建一個能融匯全球視野與中國實踐、連接技術前沿與落地應用的國際性專業平臺,以助力中國汽車應對在出海過程中面臨的網絡與數據安全合規痛點。從前沿技術研討、合規要點解析到經驗交流,都將通過本平臺為您提供持續支持。社群已超過200人,需邀請加入,如需入群,歡迎添加社群小助手微信taaslabs01。

談思-SDV&AIDV技術出海
交流群
誠邀行業同仁加入談思SDV&AIDV出海技術交流群,聚焦軟件定義汽車、AI定義汽車、下一代EEA、智能座艙、智能駕駛、軟件架構、域控制器開發、芯片技術、軟件工具等核心議題,歡迎大家加群交流探討~~社群已超過200人,需邀請加入,如需入群,歡迎添加社群小助手微信taaslabs01。

end

談思汽車媒體門戶

精品活動推薦



AutoSec系列沙龍

專業社群
部分入群專家來自:
新勢力車企:
特斯拉、理想、極氪、小米、零跑汽車、阿維塔汽車、智己汽車、小鵬、嵐圖汽車、蔚來汽車、吉祥汽車、賽力斯......
外資傳統主流車企代表:
大眾中國、大眾酷翼、奧迪汽車、寶馬、福特、戴姆勒-奔馳、通用、保時捷、沃爾沃、現代汽車、日產汽車、捷豹路虎、斯堪尼亞......
內資傳統主流車企:
吉利汽車、上汽乘用車、長城汽車、上汽大眾、長安汽車、北京汽車、東風汽車、廣汽、比亞迪、一汽集團、一汽解放、東風商用、上汽商用......
全球領先一級供應商:
博世、大陸集團、聯合汽車電子、安波福、采埃孚、科世達、舍弗勒、霍尼韋爾、大疆、日立、哈曼、華為、百度、聯想、聯發科、普瑞均勝、德賽西威、蜂巢轉向、均聯智行、武漢光庭、星紀魅族、中車集團、濰柴集團、地平線、紫光同芯、字節跳動、......
二級供應商(500+以上):
中科數測、ETAS、BlackDuck、NXP、上海軟件中心、Deloitte、奇安信、為辰信安、云馳未來、信長城、澤鹿安全、紐創信安、復旦微電子、天融信、奇虎360、中汽中心、中國汽研、上海汽檢、加特蘭微電子、浙江大學......
人員占比

公司類型占比

文章
關于涉嫌仿冒AutoSec會議品牌的律師聲明
一文帶你了解智能汽車車載網絡通信安全架構
網絡安全:TARA方法、工具與案例
汽車數據安全合規重點分析
淺析汽車芯片信息安全之安全啟動
域集中式架構的汽車車載通信安全方案探究
系統安全架構之車輛網絡安全架構
車聯網中的隱私保護問題
智能網聯汽車網絡安全技術研究
AUTOSAR 信息安全框架和關鍵技術分析
AUTOSAR 信息安全機制有哪些?
信息安全的底層機制
汽車網絡安全
Autosar硬件安全模塊HSM的使用
首發!小米雷軍兩會上就汽車數據安全問題建言:關于構建完善汽車數據安全管理體系的建議