日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务器总线协议_第一章----I2C总线协议入门

發布時間:2023/12/10 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器总线协议_第一章----I2C总线协议入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、概述

二、首先了解一下I2C的I/O結構

三、其次了解一下I2C的時序

第一部分:起始停止信號簡介

第二部分:I2C的時序部分要求

第三部分:I2C的一幀數據的格式

四、最終問與答

1)為啥開漏輸出就需要加上拉電阻呢 ?

2)那么問題又來了,為啥I2C的IO要配置成為開漏輸出模式呢?

3)為什么要求負載電容的要求?

4)I2C總線上拉電阻怎么選?


一、概述

I2C是無論在任何產品,任何單板上都會大量使用的總線,是接觸服務器硬件最基礎且最簡單的總線。
I2C總線我會基于I2C官方協議共分兩個章節為大家解惑,主分為一下兩部分,本章講解入門部分。
入門:主要講解I2C協議是如何通信的,主機和從機之間是如何進行數據讀寫與傳輸。
進階:主要講解I2C的高級使用,也就是常說的I2C的冒險與競爭,官方名為同步與仲裁。

I2C官方協議可以自行下載:硬件I2C總線協議V2.1-硬件開發文檔類資源-CSDN下載

服務器總線協議_第二章----I2C總線協議進階:https://blog.csdn.net/qq_35341807/article/details/107524532

二、首先了解一下I2C的I/O結構

1.? I2C是兩線制總線,也就是一組I2C有兩根線,下面表格說明這兩根線的作用。

? ? ? ? ? ??

2.? 明白了這兩根線的作用后我們來了解一下它的I/O結構,主要如下圖所示:

? ? ?

紅色方框:

表示I2C主要由SCL和SDA組成。

橙色方框:

可以看出黃色方框中畫出了I2C的輸入輸出的IO結構。

輸出: "SCLKN1 OUT" 與 "DATAN1 OUT" 的IO結構為OD輸出(開漏輸出)。

輸入:"SCLK IN" 與 "DATA IN"為輸入。

紫色方框:

如上所述,黃色方框中的時鐘和數據輸出引腳的IO模式為開漏輸出模式,因此就需要外加上拉電阻。

這樣就導致I2C總線在空閑的時候是高電平

以上講解了I2C的IO結構,如果大家有問題可以留言或者私信我,常年在線。

三、其次了解一下I2C的時序

不管是什么總線,在它的Spec中都會有時序要求,我們人類交流是通過語言交流,在全世界有很多種不同的語言,在芯片世界,為了讓他們也能夠進行數據交流,因此誕生了很多不同的總線,時序就像是語法,學會了語法才算是掌握了一門語言,因此學會了總線時序,才算是掌握了總線。


第一部分:起始停止信號簡介

在硬件攻城獅面試的時候,99%的面試官以及筆試試題會有讓你描述出I2C的起始信號和停止信號,因此這個是必須要會的,那我們先來了解一下起始信號和停止信號,話不多說,先上圖:

起始信號:如上圖S框所示,上面講過了,SCL和SDA在空閑的時候是高電平,當SCL是高電平的時候,主機將SDA拉低,這個? ? ? ? ? ? ? ? ? ? ? 動作便是起始信號。

停止信號:如上圖P框所示,當SCL是高電平的時候,主機將SDA由低拉成高,這個動作便是停止信號。


第二部分:I2C的時序部分要求

接下來我們來學習一下I2C的時序部分的要求。

??

此圖截取與I2C協議 V2.1的時序部分,所有支持I2C的器件都必須遵守此協議。


先來普及幾個常識:

I2C支持3種模式:

標準模式(STANDARD-MODE):時鐘頻率為100Khz。

快速模式(FAST-MODE) :時鐘頻率為400Khz。

高速模式(HS-MODE): 時鐘頻率為3.4Mhz。

建立保持時間定義:

建立時間數據電平跳變時鐘上升沿的時間,如果建立時間不夠,數據將不能在這個時鐘上升沿被穩定的打入觸發器。

保持時間時鐘上升沿? ??數據電平跳變?的時間,如果保持時間不夠,數據同樣不能被穩定的打入觸發器

時鐘的邊沿以采樣邊沿為準,比如I2C是在數據的上升沿進行采樣,那么建立保持時間以上升沿為基準。

VIH和VIL的定義

VIL為IO低電平判定電壓值。

VIH為IO高電平判定電壓值。


接下來我們主要講解一下常用的標準模式I2C時序,其他模式類似于標準模式,只是spec要求時間不一樣:

1. fSCL:SCL 時鐘頻率

這個時序要求為:I2C的SCL時鐘的頻率要等于100Khz,一個時鐘周期的時間要等于10ms。

2. tLOW:SCL 時鐘低電平的時間

紅色方框已經將tLOW的時序框起來了。

這個時序要求為:SCL的下降沿VIL上升沿VIL的時間。

協議要求大于4.7us。

3. tSU:STA:重復起始信號的建立時間

紅色方框已經將tSU:STA的時序框起來了。

這個時序要求為:當發生重復起始信號時,SCL上升沿的VIH到SDA的VIH的時間。

協議要求大于4.7us。

重復信號發生有很多種情況,比如:主機對從機寫一個數據讀兩個數據,在讀寫切換的時候不需要發送停止信號,主機直接發送重復起始信號就可以重新開始尋址更換讀寫方向。

4. tHD:STA:起始信號的保持時間

紅色方框已經將 tHD:STA的時序框起來了。

這個時序要求為:當I2C主機開始向從機發起數據讀寫時,起始信號SDA下降沿VIL到SCL下降沿VIH的時間。

協議要求大于4.0us。

5. tSU:DAT:數據信號的建立時間

紅色方框已經將tSU:DAT的時序框起來了。

這個時序要求為:SDA的上升沿VIH? or? 下降沿VIL到SCL的上升沿VIL的時間。

協議要求大于250ns。

6. tHD:DAT:數據信號的保持時間

紅色方框已經將tHD:DAT的時序框起來了。

這個時序要求為:SCL的下降沿VIL到SDA的上升沿VIL or 下降沿VIH的時間。

協議要求大于5.0us。

7. Tr:SCL和SDA上升時間的要求

紅色方框已經將Tr的時序框起來了。

這個時序要求為:標準模式下SCL和SDA的上升沿VIL到VIH的時間小于1000ns

8. Tf:SCL和SDA下降時間的要求

紅色方框已經將Tf的時序框起來了。

這個時序要求為:標準模式下SCL和SDA的下降沿VIH到VIL的時間小于300ns

9. tSU:STO:結束信號的建立時間

紅色方框已經將tSU:STO的時序框起來了。

這個時序要求為:SCL的上升沿的VIH到SDA上升沿VIL的時間。

協議要求時間大于4.0us。

10. tBUF:總線空閑時間

紅色方框已經將tSU:STA的時序框起來了。

這個時序要求為:發送一幀數據結束后又開始新的傳輸,SDA上升沿VIH到SDA下降沿VIH的時間。

協議要求時間大于4.0us。

11. Cb:總線負載電容

這個負載電容的spec限制了一組總線上的從器件數量,負載電容指的是pin腳的寄生電容,PCB Layout走線電容等等。按照經驗來說一個從期間的負載電容大概是10pf~30pf左右。

大概時序部分就是這些,在測試I2C的時候我們都需要按照I2C協議中的要求去卡時間,必須滿足I2C時序,不然可能會出現讀寫出錯的情況。


第三部分:I2C的一幀數據的格式

在一二部分我們對I2C的時序進行了一下了解,在第三部分我們看下I2C的一幀數據格式以及通信機制是怎么樣的,

由于I2C總線時雙向的,所以由主機和從機根據實際操作輪流控制總線,細品,你細細品。

先上圖:

1. START:首先由主機發送起始信號,這個時候所有從機接收到起始信號,開始準備好通信,此時主機控制總線。

2. ADRESS:主機發完起始信號后,開始進入尋址階段,主機發送7位I2C地址,此時主機控制總線。

3.R/W_N:主機發送完地址后緊跟著讀寫位,表明接下來我要進行寫操作還是讀操作,在發送完讀寫位后,此時主機釋放總線。

4.ACK:這個是從機的應答位,此時總線的控制權由主機切換為從機控制總線,

? ? ? ? ? ? ?當從機接收到主機發來的地址和自己的地址一致后,會將ACK拉低。

? ? ? ? ? ? ?如果主機尋址的地址根本不存在時,由于主機已經釋放總線,此時總線會被上拉電阻拉至高電平。

?5.DATA:當主機發出的地址+讀寫信號由從機應答后。

? ? ? ? ? ? ? ? 寫操作的時候此時總線由主機控制,主機發送8位數據。

? ? ? ? ? ? ? ? 讀操作的時候此時總線由從機控制,從機發送8位數據。

6.ACK:寫操作的時候由從機控制總線發出。

? ? ? ? ? ? ? 讀操作的時候由主機控制總線發出。

7. STOP:在傳輸完一幀數據后,主機發送停止信號,停止總線的數據傳輸,停止信號發出后,總線處于空閑狀態

四、最終問與答


1)為啥開漏輸出就需要加上拉電阻呢 ?


:通常在IO內部簡化為一個NMOS管,

? ? ? ?當柵極輸入高時,由于漏極懸空,導致無法輸出高電平,因此就需要外加上拉電阻用于驅動高電平(1)的輸出。

? ? ? ?當柵極輸入低時,MOS管導通,漏極和源極導通,等效于漏極接地,因此漏極電平為低電平(0)。

? ? ? ?因此就可以知道I2C是通過外部上拉電阻來驅動高電平的。


2)那么問題又來了,為啥I2C的IO要配置成為開漏輸出模式呢?


:開漏輸出模式可以實現一個邏輯功能,就是 “? 線與? ” 。在IO結構圖中可以看出,在I2C總線上畫有兩個從設備,實際上I2C可以掛很多從設備,從設備的數量主要受總線負載電容小于400pf的限制。線與就是當I2C總線上下掛很多從設備,只要有一個從設備將總線拉低,那么總線就處于被占用的狀態,也就是為了使用更高級的功能,在下一章節:《 服務器總線協議_第二章----I2C總線進階 》我會給大家重點講解I2C是如何使用線與,在此繼續向下講解。

服務器總線協議_第二章----I2C總線協議進階:https://blog.csdn.net/qq_35341807/article/details/107524532


3)為什么要求負載電容的要求?


答:負載電容會影響信號的上升時間,因為I2C協議對于SCL和SDA的信號上升下降時間是有要求的,因此電容不能超過spec要? ? 求的400pf,如果想要在一路I2C下掛很多器件,可以通過使用增加Switch的方式,例如常用的PCA9548,可以通過一路I2C控制8路輸出。


4)I2C總線上拉電阻怎么選?


答:I2C spec如下圖所示:

在Spec中有對最大輸出低電平的要求,要求IO口的灌電流最大為3mA,在3mA的電流驅動下,I/O輸出的最大電壓為0.4V,因此可以通過下面這個公式計算鏈路并聯等效電阻最大值。注意:是一條I2C鏈路的并聯等效電阻!

我們經常使用的上拉電阻通用為3.3V,所以并聯等效電阻最大值為967Ω。在平常使用時候要注意一下盡量使等效電阻大于IK。

由于Device有負載電容,與上拉電阻形成RC等效鏈路,所以導致電阻如果選擇過大會導致信號上升時間增大,所以上拉電阻也不宜選擇過大,通常將一條鏈路的等效電阻設計為4.7K。


————————————————
版權聲明:本文為CSDN博主「菜狗攻城獅」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_35341807/article/details/107393874

總結

以上是生活随笔為你收集整理的服务器总线协议_第一章----I2C总线协议入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。