電路功能:
實現i2c雙向匯流排系統中3.3v與5v電平的雙向轉換,且不需要方向選擇訊號,而且還能將掉電的匯流排部分和剩下的匯流排系統隔離開來,保護低壓器件防止高壓器件的高電壓毛刺。
整個電路工作過程:
從電路中可以看出,sda和scl的電平轉換電路結構是一樣的,每個匯流排上都串有乙個分立的mosfet,和相應的上拉電阻。
分析這個電路時要分清楚的電路的工作狀態:
狀態1:匯流排上沒有資料傳輸時(空閒狀態):
匯流排上沒有資料傳輸時,i2c器件的sda和scl引腳保持高阻態,經上拉電阻r1和r2上拉到3.3v,也就是sda和scl在空閒狀態都保持高電平。
這樣q1和q2兩個n-mos的vgs都為0v,兩個mosfet(q1,q2)不能導通。那麼高電壓部分的i2c匯流排,通過上拉電阻r3和r4上拉到5v。這樣mosfet的兩端匯流排空閒時都為高電平,滿足i2c匯流排的電氣特性。
狀態2:3.3v的i2c器件下拉匯流排低電平:
此時,n-mos管的s極變為低電平,而門極g保持為3.3v的高電平。vgs高於閥值,n-mos管開始導通。
然後高電壓5v部分的匯流排線路通過導通的n-mos管被低電壓端的i2c器件下拉到低電平,此時兩部分的匯流排線路都是低電平而且電壓電平相同。符合i2c匯流排要求。
狀態3:5v的i2c器件下拉匯流排線路到低電平
當有乙個5v的器件下拉匯流排線路到低電平時,通過n-mos管的體二極體作用,將n-mos的s極拉低,使vgs的電壓高於導通閥值,n-mos導通進一步的拉低s極電壓,也就是將3.3v系統匯流排電平進一步下拉到低電平。此時兩部分的匯流排線路都是低電平而且電壓電平相同。
從上面分析可以看出這三種狀態顯示了邏輯電平在匯流排系統的兩個方向上傳輸,與驅動的部分無關。
上述的3個狀態,第乙個狀態實現了電平轉換功能。而第二個和第三個狀態的邏輯都是線「與」的功能,只要有一端為低電平,也會使另外一端為低電平。
注意:可以看出本例中mos管的gs間最大電壓為3.3v,所以選擇的mos管的開啟閥值電壓要低於3.3v,否則不能使mos管開啟,電平轉換就無法工作了。
I2C匯流排相關 5
static const struct i2c algorithm hi i2c algo 這個結構體是驅動端的.通過adapter?適配到device端 也就是說在匯流排上建立乙個device,最終會呼叫到這個結構體裡面的函式static inthi i2c xfer struct i2c ada...
3 3V與5V的電平轉換
現在大多數的mcu基本都是3.3v供電,而外圍器件依舊存在一些5v供電的,兩者之間的通訊不可避免的需要電平之間的轉換。這裡介紹乙個可以實現兩個電平的相互轉換的電路,網上相關的介紹也很多,近期的乙個專案設計剛好用的,特此記錄一下。tr1 tr2為分立的 nmos 三極體,s為源極,d為漏極,g為柵極。...
i2c匯流排時序
一心想踏入linux device driver的世界,想著i2c匯流排相對於usb等其他匯流排較為簡單,就以i2c作為切入點,希望可以逐步理解ldd的設計思想,並能理解其裝置模型的概念。在此對近期於i2c匯流排及驅動原始碼的理解做備忘,以免徒勞。平台友善之臂s70 tiny6410 cpusams...