0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在I2C總線上需要接上拉電阻?您對I2C上拉電阻足夠了解嗎

精通單片機與嵌入式 ? 來源:玩轉單片機與嵌入式 ? 作者:濟南行遠智能科技 ? 2022-11-24 09:19 ? 次閱讀

相信很多人都清楚,在I2C總線上需要接上拉電阻?但是您針對對I2C上拉電阻足夠了解嗎?本文帶您詳細掌握一下I2C的上拉電阻。目錄如下:

上拉電阻的含義、上拉電阻在 I2C 電路中的作用

根據VOL和IOL計算I2C上拉電阻的最小值

根據總線電容計算上拉電阻的最大值

一:I2C的上拉電阻

我們知道,在I2C的電路中,在SCL、SDA線與電源之間通常會接一個電阻,這個電阻稱之為上拉電阻。

但什么是上拉電阻? 上拉電阻主要用于為信號線或GPIO引腳提供默認狀態(tài)。通常選擇幾K或幾十K阻值的電阻。阻值較大的電阻確保不會通過電阻不斷地將過多的電流引入到信號線上(5V Vdd / 10KΩ = 0.5mA 電流)。在常見的MCU中有大約幾十K的電阻可以通過代碼啟用的上拉電阻將 GPIO 引腳預設為邏輯高電平狀態(tài)。

在I2C 的電路中,I2C設備(芯片)的 SCL 和 SDA 的內部電路是“開漏”的,這意味著它們可以吸收電流,但無法提供電流。

通俗點講就是:這種信號可以被設置為低電平,但不能被設置為高電平。

所以我們在電路中以邏輯高電壓的形式給這些信號提供電流,在常見的芯片中,電壓通常為5V或3.3V。為了提供這個高電壓,你需要分別在在 5V 和 SCL 、SDA 總線之間連接了一個上拉電阻。如下圖所示:

d7c20d34-6b83-11ed-8abf-dac502259ad0.png

但是,I2C上拉電阻的阻值和封裝可不是隨便選擇的。也是有理論依據的。

二:上拉電阻最小值計算

在數字TTL電路中,通常情況下定義的高低電平電壓值如下:

“低電平的電壓”VL=0.3 x Vdd

“高電平的電壓”VH=0.7 x Vdd

所以,我們將I2C設備接到5V系統的電路中時,SDA和SCL的電壓高于3.5V時被識別為“高電平”,低于1.5V時被識別為“低電平”。在1.5V~3.5V之間的電平,我們不能確定為高or低~ I2C設備內是有mosfet的,我們需要保證電壓值高于一定值才能使mosfet導通,但電壓值也不能高太多,否則容易造成mosfet損壞。

此處以LED舉例:假設LED的壓降是1.7V,需要高于1.7V的電壓才能使LED導通,但是電流必須在LED的限定值以內。如壓降為1.7V、額定電流為30mA的LED,想要LED點亮的理想情況是:(5V-1.7V)/30mA=110歐。所以針對該LED選用的限流電阻為110歐。

對于I2C引腳,在芯片手冊中可以清楚的查到VOl(輸出低電壓)和IOL(輸出低電流)。以AT24C128 EEPROM芯片的手冊為例:

d7f876b2-6b83-11ed-8abf-dac502259ad0.png

按照上述參數計算:(5-0.4)V / 2.1mA=2.2K。

我們計算出的這個值,就是I2C總線上拉電阻的最小值。我們如果選用更小的電阻值,就可能對I2C設備造成損壞。

三:上拉電阻最大值計算

電容是無處不在的,I2C總線也不例外。I2C電路中SDA和SCL引腳也會存在某種形式的引腳電容。

同樣,查看AT24C128的數據手冊可以查到對應的引腳電容。如下圖所示。

d822b198-6b83-11ed-8abf-dac502259ad0.png

包括引腳電容、PCB電容等所有的疊加,我們可以理解成有一堆的小電容連到I2C總線上,現在暫且將這些電容的累加定義為Cbus。

我們之所以關心Cbus,是因為在信號變化的過程中,其實是對Cbus進行充電和放電,這樣會影響到信號的延時時間。

這些電容是如何充電的呢?就是通過VCC和上拉電阻給電容充電。

從AT24C128手冊中可發(fā)現,SDA的引腳電容為8pF,SCL的引腳電容為6pF。假設PCB的電容平均值為10pF。則,在SDA總線的電容總計18pF;在SCL總線的電容總計為16pF。

關于PCB電容怎么計算,本公眾號將以專門的文章進行講解,此處不再講述。歡迎持續(xù)關注本公眾號。

我們現在關注的是上拉電阻的阻值最大值應該是多少才能保證SDA和SCL在要求的時間內進行信號高低電平的切換。引入總線電容就是為了確定上拉電阻最大值。

在AT24C128的收據手冊中,也可以查詢到上升時間tR的值,如下圖。

d83e1604-6b83-11ed-8abf-dac502259ad0.png

tR就是I2C總線最大允許的上升時間。除了芯片手冊有規(guī)定tR值,I2C總線也規(guī)定了tR的值如下:

d88d8f5e-6b83-11ed-8abf-dac502259ad0.png

下面引入上拉電阻計算的重量級公式:

d8ab467a-6b83-11ed-8abf-dac502259ad0.png

到目前為止,我們已經確定了tR和Cb的值,就可以計算出上拉電阻的最大值。以400KHz的快速模式I2C為例計算:

Rp sda max=300ns/(0.8473x18pf)≈ 18K

Rpscl max=300ns/(0.8473x16pf)≈18K

所以,18K就是我們確定的I2C總線上拉電阻的最大值。

結合2.2K的最小值,I2C總線的上拉電阻只能選擇:2.2K~18K之間的阻值,一般選擇4.7K或10K。

四:總結

上面的計算我們是只計算了I2C總線只有AT24C128的情況,只需要選用2.2K~18K之間的電阻即可。

當I2C總線掛接的設備增加、PCB布線不同等多個方面都會影響到上拉電阻阻值的選擇。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 上拉電阻
    +關注

    關注

    5

    文章

    355

    瀏覽量

    30442
  • SDA
    SDA
    +關注

    關注

    0

    文章

    123

    瀏覽量

    27952
  • SCL
    SCL
    +關注

    關注

    1

    文章

    239

    瀏覽量

    16985
  • I2C接口
    +關注

    關注

    1

    文章

    124

    瀏覽量

    25020

原文標題:【硬件】I2C的上拉電阻可不是隨便選的……超全講解I2C的上拉電阻

文章出處:【微信號:精通單片機與嵌入式,微信公眾號:精通單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    電阻的含義、電阻I2C電路中的作用

    我們知道,I2C的電路中,SCL、SDA線與電源之間通常會接一個電阻,這個電阻稱之為
    發(fā)表于 09-08 14:43 ?6894次閱讀

    I2C總線上電阻的計算實例

    。當開路漏極接口未將線路驅動為低電平時,電阻器將線路拉高。電阻器的值是
    發(fā)表于 06-02 10:17 ?1285次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>的計算實例

    I2C為什么要接上電阻?

    I2C為什么要接上電阻?因為它是開漏輸出。
    發(fā)表于 07-08 16:14 ?2418次閱讀
    <b class='flag-5'>I2C</b>為什么要<b class='flag-5'>接上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>?

    聊聊I2C總線上電阻

    I2C總線上電阻的選擇以及作用,以及計算方法。
    的頭像 發(fā)表于 07-14 12:49 ?3499次閱讀
    聊聊<b class='flag-5'>I2C</b><b class='flag-5'>總線上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>

    開發(fā)板I2C總線上為什么沒有電阻

    開發(fā)板I2C連接到RTC(RX8010)芯片,I2C總線上沒有接上電阻,LS1012A手冊上說
    發(fā)表于 01-05 06:28

    I2C總線上電阻設計要點

    ,I2C電阻最小值確定為什么I2C需要
    發(fā)表于 11-29 08:00

    i2c電阻大小_i2c電阻的作用

    I2C電阻可以是1.5K,2.2K,4.7K, 電阻的大小對時序有一定影響,對信號的上升時間和下降時間也有影響,一般接1.5K或2.2
    的頭像 發(fā)表于 11-24 14:27 ?2.6w次閱讀

    I2C總線一定要接上電阻電阻阻值怎么確定?

    I2C為什么要接上電阻?因為它是開漏輸出。 1 為什么是開漏輸出? I2C協議支持多個主設備與多個從設備
    的頭像 發(fā)表于 06-21 10:30 ?1.5w次閱讀

    I2C為什么要接上電阻

    I2C為什么要接上電阻?因為它是開漏輸出!
    的頭像 發(fā)表于 06-21 16:34 ?1.2w次閱讀
    <b class='flag-5'>I2C</b>為什么要<b class='flag-5'>接上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>?

    I2C電阻設計

    I2C電阻 一些PCB的layout中,大家往往會看到
    發(fā)表于 01-14 14:10 ?9次下載
    <b class='flag-5'>I2C</b><b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>設計

    I2C總線的常見通信方式

    SDA和SCL需要接上電阻,根據總線上I2C設備數量,系統的通信速度,設計選擇不同的
    發(fā)表于 06-29 11:28 ?6518次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的常見通信方式

    I2C電阻如何選擇合適的阻值?

    I2C總線是微電子通信控制領域中常用的一種總線標準,具備接線少,控制簡單,速率高等優(yōu)點。I2C電路中常見的
    的頭像 發(fā)表于 05-10 16:17 ?5569次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>如何選擇合適的阻值?

    I2C的開漏輸出和電阻

    信息和接收信息無法同時進行,I2C工作時的傳輸速率標準模式下可達100kbit/s,快速模式下可達400kbit/s,高速模式下可達3.4Mbit/s。I2C總線采用漏極開路的設計,
    的頭像 發(fā)表于 07-02 16:39 ?4767次閱讀
    <b class='flag-5'>I2C</b>的開漏輸出和<b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>

    電阻I2C電路中的作用 I2C電阻的計算方法

    相信很多人都清楚,I2C總線上需要接上電阻?但是
    的頭像 發(fā)表于 07-25 10:37 ?2139次閱讀
    <b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b><b class='flag-5'>在</b><b class='flag-5'>I2C</b>電路中的作用 <b class='flag-5'>I2C</b><b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>電阻</b>的計算方法

    I2C總線上電阻的必要性

    數據線加上電阻。這一設計不僅關乎技術的實現,更涉及系統安全和信號傳輸效率的優(yōu)化。本文將深入探討I2C總線上加上
    的頭像 發(fā)表于 09-09 17:16 ?195次閱讀