----- 正文 -----
先贊↓后看,養成習慣!
一、電氣性能
電氣性能包含下圖時鐘頻率、IO電平、時序定義等內容,下面將一一介紹(注意:本文只介紹標準模式下的數據,其它模式數據參考協議原文文檔)
以下的時序是常見的,項目中I2C實際波形需要符合這些時序的要求,因此測試中應該用示波器抓到實際波形然后查看每個時序,當然以上只是標準協議,不同的器件要求可能有所不同,需要查詢相應的數據手冊確定極限值。其他的時序可以參考原文,不再贅述。
1. VIH與VIL
VIH:高電平閾值電壓,高于此電壓才會判斷為高電平,一般取VDD+0.5V或5.5V中的小值,例如3.3V的系統中,取3.3+0.5等于3.8V
VIL:低電平閾值電壓,低于此電壓才會判斷為低電平,一般最小值為-0.5V,最大值為0.3VDD,這里的最大最小值器件生產誤差或者不同器件的微小差異,后續的最大值最小值也是類似。
2. tlow
指低電平持續時間,也就是SDA或SCL一個時鐘周期內電平低于0.3VDD的持續時間。標準模式下最小為4.7us。
3. tHIGH
指高電平持續時間,也就是SDA或SCL在一個周期內電壓大于0.7VDD后直到電壓再低于0.7VDD時持續的時間。標準模式下最小為4.0us。
4. tr與tf
tr是指數據上升沿時間,即SDA從0.3VDD到0.7VDD這一段時間,標準模式下最大為1us,最小不限
tf是指數據下降沿時間,即SDA從0.7VDD到0.3VDD這一段時間,標準模式下最大為0.3us,最小不限
5. tHD;STA
指開始保持時間,數據SDA變為低電平(SDA低于0.3VDD瞬間開始)一直到SCL開始變為低電平(SCL低于0.7VDD瞬間)這段時長,標準模式下最小值為4.0us
6. tSU;STA
指起始建立時間,只有在發完上一個數據Re-Start時才會有這個時序,從SCL變為高電平(SCL電壓大于0.7VDD瞬間)開始到SDA開始變為低電平(SDA低于0.7VDD瞬間)這一段時間的時長,標準模式下最小為4.7us。
7. tSU;DAT
指數據建立時間,數據SDA完成電平變換(指SDA由0V變為0.7VDD瞬間或從VDD變為0.3VDD瞬間開始)一直到時鐘SCL開始采集(指SCL大于0.3VDD)這一段時長,標準模式下最小250ns。
8. tHD;DAT
指數據保持時間,時鐘SCL高電平結束后變為低電平(指SCL低于0.3VDD瞬間開始)一直到數據SDA完成電平轉換(指SDA由0V變為0.7VDD瞬間或從VDD變為0.3VDD瞬間開始)這一段時長,標準模式下最小5us。
9. tSU;STO
指結束建立時間,從SCL變為高電平(指SCL高于0.7VDD瞬間開始)到SDA開始變為高電平(指SDA高于0.3VDD瞬間)這段時間的時長,標準模式下最小4.0us。
二、上拉電阻的計算
對于標準模式(即通信速率為100k),上拉電阻受電源電壓、輸入電流和總線電容影響,引腳輸入電流有限,一般為3mA,總線電容Cb最大為400pF。
由于引腳輸入電流有限,過大可能損壞設備,因此可以計算上拉電阻的最小值Rpmin=(VDD-0.3VDD)/0.003,取0.3VDD是因為低電平最大值為0.3VDD。以VDD為3.3V計算,Rp的最小值為(3.3-3.3*0.3)/0.003=0.77kΩ
另外由于前面講過的上升沿時間tr最大值(標準模式1us)影響,可以計算上拉電阻的最大值。
上升沿其實就是對電容Cb充電的過程,按照tr的定義可以得出以下式子:(其中R為Rp,C為Cb)
以tr最大為1us,Cb最大為400pF計算得:
因此Rp取值范圍在0.77k到2.86k之間,建議取靠近中間的值,實際總線電容可能沒有400pF,因此也可以稍微取大一些,常見的是4.7k。