I2C 是嵌入式系統中流行的通信協議。 當與slave連接時,每條雙向線上都需要一個上拉電阻。

出現的一個常見問題是“我應該使用多大尺寸的上拉電阻?”。

我認為,與其進行大量理論和計算,不如更容易地展示使用不同電阻值時信號會發生什麼情況。

由於 Arduino 是愛好者中流行的微控制器,我們將在以下示例中使用它。 我們將 Arduino 連接到 DS3231 實時時鐘,這是一個 5 伏設備。 我們還將研究不同速度的 I2C(100 和 400kHz 時鐘信號)對信號的影響。 我們將設置示波器來測量上升時間、頻率和峰值電壓。 頻率? 為什麼我們要測量頻率,我以為時鐘頻率運行在 100kHz...好吧,讓我們看看示波器怎麼說。

由於 SDA(數據)和 SCL(時鐘)線的電容大致相同,因此我們僅改變 SCL 線上的電阻,並在 SDA 線上保留標準 4.7k 歐姆電阻。

在示波器上分析重複時鐘信號比分析數據模式更容易。 讓我們僅使用 Arduino 的內部上拉電阻來進行初步讀數。

 無論如何,讓我們禁用 Arduino 的內部上拉電阻並安裝我們自己的上拉電阻,看看它們如何影響信號。 我們將從 68k 歐姆電阻開始,然後是 47k、33k、10k、6.8k、4.7k、3.3k、2.2k,最後是 1.5k。

 

I2C pull high電阻實際量測

正如您在圖 2 中看到的,信號最終呈現出我們希望看到的方形形狀。 請注意測量的頻率如何接近我們所需的 33k 和 10k 歐姆之間的時鐘頻率。 您還可以看到上升時間如何隨著電阻的減小而減少。 正如您所看到的,4.7k 產生了一個漂亮的信號,上升時間約為 1 微秒。 您會發現 4.7k 是許多單從設備設置中使用的非常常見的電阻。 當然,當您向線路中添加越來越多的設備時,總線電容將會增加,這意味著如果您想保持信號完整性,則必須開始降低電阻 (t = RC)。 每個設計都是獨一無二的,並且無法保證數據表中引用的電容,因此最好的做法是查看示波器上的信號。 那麼為什麼不直接使用一個非常低的電阻來開始,這不應該減少上升時間以給我們盡可能的方波信號嗎? 嗯,是的,也不是。 I2C 標准設置了一些需要遵循的限制; 幸運的是,這些限制可以幫助我們縮小電阻值的範圍。 計算最小上拉電阻的簡單公式是 Rp = (Vcc - 0.4)/3mA,對於 5V 系統,該電阻約為 1.5k 歐姆。 計算最大電阻的公式實際上基於標準模式 (100kHz) 的最大上升時間(1 微秒),該公式為 Rp = 1us/Cb <省略乘以0.8473>,其中 Cb 是一條信號線的總總線電容。 因此,對於我們的示例,總總線電容約為 20pF(根據數據表,Arduino 為 10pF,根據數據表,DS3231 也是 10pF),這會產生 50k 歐姆的高壓側值。 顯然,在線路中添加更多的 DS3231 RTC 將改變我們應該使用的最大允許電阻(再添加 1 個將其降至 33.3k,另一個將其降至 25k,等等...)。 需要注意的是,每個 I2C 設備都有自己的電容,因此請務必查看數據表,以便了解該值是多少。

 

接下來,我們將使用相同的電路,但這次我們從標準模式切換到快速模式 (400kHz)。 正如您所看到的,相對於時鐘頻率而言,上升時間非常慢。 測得時鐘頻率約為 171kHz,明顯慢於所需的 400kHz。 另請注意,在切換到佔空比的後半部分之前,峰值電壓僅達到 3.28V。 我們將使用相同的電阻器重複上面的相同測試。 在開始之前,讓我們看一下確定上拉電阻值和下拉電阻值的計算。 最低值上拉電阻的計算與上面相同,在低端產生 1.5k; 然而,快速模式的最大上升時間從 1 微秒減少到 300 納秒。 正如您所看到的,使用該公式並替換最大總線電容 400pF 會得到 750 歐姆的上限電阻,這實際上低於第一次計算中的最低值電阻。 因此,對於 5 伏系統,建議的最大總線電容降至約 200pF。 因此,在構建電路時,請確保密切關注總總線電容。 因此,讓我們安裝電阻器,看看它們如何影響信號質量(圖 4)。 請注意,在我們從 6.8k 歐姆過渡到 4.7k 歐姆之前,測得的時鐘頻率不會接近 400kHz。 您還可以看到當我們從 2.2k 歐姆過渡到 1.5k 歐姆時,信號如何呈現良好的形狀。

I2C pull high電阻實際量測

出處來源:https://www.thebackshed.com/forum/uploads/BobD/2013-01-26_175209_I2C_-_Effects_of_Varying_Pullup_Resistors.pdf

 

I2C感測器推薦如下

 

1.BME280 I2C or SPI 溫度/濕度/壓力感測器

2.AHT20 溫濕度 I2C 感測 模組 高精度 溫度 濕度 

3.GY-49 MAX44009 數位 光照度 光強度感測器模組 i2c介面 高精度

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 JL8051 的頭像
    JL8051

    不會的就放這邊

    JL8051 發表在 痞客邦 留言(0) 人氣()