I2C總線設計注意事項

2020-11-25 電子產品世界

  對於硬體工程師,I²C再熟悉不過了,兩根線,一根數據SDA一根時鐘SCL。當時在使用avr CPU設計數據採集器產品的CPU主板,外掛了Silicon lab的溫溼度傳感器Si7013,實時時鐘,主要實現溫溼度、時鐘及電流電壓等信號通過I²C總線到達CPU進行處理,並且由MCU EFM32WG290F64控制在液晶上和上位機界面上的CPU自帶的I²C總線外掛的六個I²C從設備,如下圖1所示。

本文引用地址:http://www.eepw.com.cn/article/201812/396200.htm

  

  圖1:Avr的I²C接口電路圖

  最初時候,此CPU主板的I²C接口僅掛了實時時鐘和溫度晶片,採用CPU自帶的I²C接口。在調試時,波形都比較正常,上升沿和下降沿都能符合要求,通常跑的速率為100KHz。然而後期改版,需要在I²C接口上增加四個I²C設備,線路也相應地變長,在調試的時候,就發現CPU主板上電後,I²C工作異常,偶爾會讀不到任何信息。

  經過了長時間的查問題階段,發現通過I²C接口的SDA和SCL上拉電阻的大小與放置位置都是有講究的。通常I²C上拉電阻放在CPU引出的位置,若沒有外掛的I²C晶片就不需要加上拉電阻,這點在我們的CPU主板是沒有問題的。然後就是上拉電阻,這個通常講的就是與速率有關,我們將上拉電阻從4.7K,2.2K,1K甚至幾百歐姆都測試過,在1K和2.2K的情況下,上升沿和下降沿會比較陡一點。速率100KHZ下採用2.2K的上拉電阻測試出的I2C波形,如圖2所示。

  

  圖2:在100Khz下,採用2.2K的上拉電阻測試出的I²C波形

  最終測出的情況,在上拉電阻為4.7K的時候,速率在100KHZ,波形是正常的;在2.2K的時候,速率在100Khz的時候,波形也是正常;在1K的時候,速率為400Khz,波形也正常;在470歐姆的時候,速率為400KHZ,波形就會畸變。我們採用的上拉2.2K,速率為100KHZ的接口,仍出現CPU板電後I²C工作異常,讀不到任何異常信息。後發現是SDA被一直拉低了,SCL一直為高,I²C被死鎖了。

  為了解決這種問題,在網絡上找到一種採用IO模擬I²C的方式,調試了一周後,發現這個問題得到了解決。將I²C接口當做普通IO來操作可能是改動最小的一種方式。其實針對這個問題,還有一些辦法可以使用:

  1)儘量選用帶復位輸人的I²C從器件。

  2)將所有的從I²C設備的電源連接在一起,通過MOS管連接到主電源,而MOS管的導通關斷由I²C主設備來實現。

  3)在I²C從設備設計看門狗的功能。

  4)在I²C總線上增加一個額外的總線恢復設備,用來監視I²C總線。當設備檢測到SDA信號被拉低超過指定時間時,就在SCL總線上產生9個時鐘脈衝,使I²C從設備完成讀操作,從死鎖狀態上恢復出來。總線恢復設備需要有具有編程功能,一般可以用單片機或CPLD實現這一功能。

  由於avr CPU帶多個I²C從設備出現死鎖的問題,雖然能夠通過IO模擬解決問題,但是對於編程來說比較麻煩,IO模擬在高速上面效果並不好。後來更換了Silicon Labs的MCU,型號為EFM32WG290F64,做了一個最小系統板,外圍電路不變,I²C死鎖問題不再存在,有效地解決了我的I²C問題。採用EFM32WG290F64讀到的I²C波形如下:

  

  圖3:EFM32WG290F64讀到的I²C波形

  另外,設計中通過採用了多片溫溼度傳感器Si7013,精度也非常高,特別在高溫條件下,測試的溼度準確率也非常高。其實I²C接口在我們的設計中再常見不過,但在設計中還是要特別注意以下幾點,能夠充分考慮以下的要點,I²C設計就可以遊刃有餘。

  1)I²C線路的負載電容不能超過400pF;

  2)需要滿足上升沿和下降沿的時序關係;

  3)I²C上拉電阻和速率有著密切的聯繫,需要選擇合理;

  4)如何判斷死鎖的情況,如上面所示,並提供了一系列的解決方案。


相關焦點

  • Linux下I2C總線EEPROM驅動程序設計方法
    而一個具體的總線控制器驅動要使用某一種算法。例如,Linux內核中提供的算法i2e-algo-8260可以用在MPC82xx系列處理器提供的I2C總線控制器上。Linux內核中提供了一些常見處理器如MPC82xx系列的算法驅動。對於I2C設備,基本上每種具體設備都有自己的基本特性。其驅動程序一般都需要特別設計。  在I2C總線驅動程序體系結構中。
  • 救活你的I2C總線故障方案出爐了!
    本文主要針對 i2c 設備,講解如何解決 i2c 設備主機與從機直接無法正常數據交互的問題,側重點是針對硬體設計不太合理、i2c 設備設計不標準導致總線故障的情況,並且通過分析現象,提出解決方案。對於在設備初始化中,沒有設置相應的寄存器或者發送命令,而導致的無法獲取想要的數據情況,不作詳細介紹。
  • 樹莓派怎樣連接多個I2C設備
    i2c總線可以處理多個設備,但是它們應具有不同的i2c地址。有些i2c設備具有用於設置其他i2c地址的跳線,但許多設備卻沒有。在這種情況下,您可以使用i2c多路復用器(硬體)來旋轉i2c SDA(數據)和SCL(時鐘),也可以創建其他i2c總線或更多。
  • 實戰經驗吐血推薦:怎樣在Linux環境下輕鬆實現基於I2C總線的EEPROM...
    MPC8250處理器正是通過內部的I2C總線控制器來和這些連接在I2C總線上的設備進行數據交換的。由於I2C總線的特性,Linux的I2C總線設備驅動程序的設計者在設計驅動程序時採用了獨特的體系結構。使開發I2C總線設備驅動程序與開發一般設備驅動程序的方法具有很大差別。因此,開發I2C總線設備驅動程序除了要涉及一般Linux內核驅動程序的知識外。
  • 淺談I2C隔離器的六大設計注意事項
    淺談I2C隔離器的六大設計注意事項 廠商供稿 發表於 2019-05-20 15:51:56 作者:德州儀器Anthony Viviano 我們整理了一些關於隔離
  • 飛利浦推出業界首款快速模式I2C總線控制器
    I2C總線同時兼有真正即插即用雙線接口的簡潔與用戶眾多帶來的較低實施成本,已經在眾多電子應用中成為控制、維護和配置的實際行業標準串行總線。位於美國加利福尼亞Milpitas的領先IP聯網系統公司Procket Networks 的高級工程師Song Yu說:「Procket Networks使用沒有I2C埠的定製ASIC設計了一個聯網主板。
  • 基於VHDL/CPLD的I2C串行總線控制器設計及實現
    常見的串行總線有USB、IEEE1394、I2C等,其中I2C總線具有使用簡單的特點,在單片機、串行E2PROM、LCD等器件中具有廣泛的應用。  I2C(Inter IC BUS)是Philips公司開發的用於晶片之間連接的總線。
  • CAN總線的特點、幀類型以及應用中的注意事項
    1980年,Bosch的工程師開始研究汽車上高速串行通信的問題,並在1986年發布了CAN(Controller Area Network)總線。CAN以其多主,高速(最高1Mbps),抗幹擾的特性被廣泛應用汽車及各種工業環境。在此我們主要介紹一下CAN總線的特點,幀類型,以及應用中的注意事項。
  • 一種高精度數字傾角測量系統的設計
    本文將詳細地闡述系統硬體電路設計以及軟體設計。本文引用地址:http://www.eepw.com.cn/article/21332.htm 1 系統硬體設計 1.1系統的硬體結構 高精度數字傾角測量系統的硬體結構如圖1所示。單片機選用atmel公司的at89c52,利用其提供的軟體硬體資源,完成系統的控制以及採集數據的計算。
  • 示波器和I2C時序波形圖的關係分析
    示波器和I2C時序波形圖的關係分析 周碧俊 發表於 2018-08-03 16:57:53 I2C簡介 I2C總線只需要兩條線
  • 地磁傳感器參考設計及手機layout 的注意事項
    一:地磁傳感器(YAS529/YAS530)參考設計:注 :1)VDD : 2.5V to 3.6VIOVDD: 1.65V to VDD
  • I2C總線概述及時序總結
    其中輸出為漏極開路的場效應管,輸入緩衝為一隻高輸入阻抗的同相器,這種電路具有兩個特點:1)由於SDA、SCL為漏極開路結構(OD),因此它們必須接有上拉電阻,阻值的大小常為 1k8, 4k7 and 10k ,但1k8 時性能最好;當總線空閒時,兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號變低,即各器件的SDA及SCL都是線與關係。
  • 淺談I2C總線,I2C接口和SPI接口的作用相同
    I2C 總線有時候也叫作 IIC,它已有20多年的歷史了。I2C 接口和 SPI 接口的作用相同,但二者的使用方法有些不同。  I2C 總線用兩根線來連接多支路總線中的多個設備。這種總線是雙向、低速的,並與公共時鐘同步。可以直接將一個設備接到 I2C 總線上或是從該總線上取下,而不會影響其他設備。
  • I2C總線中上拉電阻、電源電壓、總線電容三者之間的
    在我們的實際設計中,需要清楚I2C的總線的兩個特徵:本文引用地址:http://www.eepw.com.cn/article/201609/303555.htm1、串行數據SDA和串行時鐘SCL線都是雙向線路,通過一個電流源或上拉電阻Rp
  • spi與i2c總線有什麼區別
    I2C總線是一個真正的多主機總線,總線上多個主機初始化傳輸,可以通過傳輸檢測和仲裁來防止數據被破壞 。   下來詳細了解I2C總線時序:   1.1 總線數據有效性   I2C總線是單工,因此同一時刻數據只有一個流向,因此採樣有效時鐘也是單一的,是在SCL時鐘的高電平採樣數據。
  • I2C總線是如何工作的
    打開APP I2C總線是如何工作的 發表於 2019-09-13 15:46:00   I2C總線簡介   I2C結合了SPI和UART的優點。
  • 詳解I2C總線鍵盤電路以及驅動程序設計
    >以及驅動程序的設計。允許多主機控制,具有裁決和同步功能,可隨意添加或摘除總線上的子器件等諸多優點,所以已經被廣泛應用。三、電路設計圖2 是筆者設計的MAX7348 應用電路,該電路以凌陽(SPCE061A)單片機為主控制器,結合MAX7348 構成了一個具有40 個按鍵的鍵盤電路,通過程序可以設置按鍵發聲、自動連續按鍵、中斷輸出等功能。
  • I2C總線驅動在嵌入式系統中的兩種實現
    1 引 言I2C總線(Inter-IC Bus)是一種通用的串行總線,是用於IC器件之間連接的二線制總線。他通過串行數據線(Serial Data Lines,SDL)及串行時鐘線(Serial ClockLine,SCL)兩線在連接到總線上的器件之間傳送信息,並根據地址識別每個器件。一個或多個微控制器以及外圍器件可以通過I2C總線接口非常方便的連接在一起構成系統。這種總線結構的連線和連接引腳少,器件間總線簡單。
  • RS485總線簡介
    1.3 RS485總線電氣性能RS485總線電氣性能見表0.1:表0.1 RS485總線電氣性能性能指標RS485總線● RS485總線構成的網絡只能以串行布線,不能構成星形等任意分支。串行布線對於小區實際布線設計及施工造成很大難度,不遵循串行布線規則又將大大降低通訊的穩定性。● RS485總線自身的電氣性能決定了其在實際工程應用中穩定性較差,在多節點、長距離場合需對網絡進行阻抗匹配等調試,增添工程複雜性。