<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應用 > I2C總線設(shè)計注意事項

          I2C總線設(shè)計注意事項

          作者: 時間:2018-12-29 來源:網(wǎng)絡 收藏

            對于硬件工程師,I2C再熟悉不過了,兩根線,一根數(shù)據(jù)SDA一根時鐘SCL。當時在使用avr CPU設(shè)計數(shù)據(jù)采集器產(chǎn)品的CPU主板,外掛了Silicon lab的溫濕度傳感器Si7013,實時時鐘,主要實現(xiàn)溫濕度、時鐘及電流電壓等信號通過I2C總線到達CPU進行處理,并且由MCU EFM32WG290F64控制在液晶上和上位機界面上的CPU自帶的I2C總線外掛的六個I2C從設(shè)備,如下圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/201812/396200.htm

            

            圖1:Avr的I2C接口電路圖

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

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

            

            圖2:在100Khz下,采用2.2K的上拉電阻測試出的I2C波形

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

            為了解決這種問題,在網(wǎng)絡上找到一種采用IO模擬I2C的方式,調(diào)試了一周后,發(fā)現(xiàn)這個問題得到了解決。將I2C接口當做普通IO來操作可能是改動最小的一種方式。其實針對這個問題,還有一些辦法可以使用:

            1)盡量選用帶復位輸人的I2C從器件。

            2)將所有的從I2C設(shè)備的電源連接在一起,通過MOS管連接到主電源,而MOS管的導通關(guān)斷由I2C主設(shè)備來實現(xiàn)。

            3)在I2C從設(shè)備設(shè)計看門狗的功能。

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

            由于avr CPU帶多個I2C從設(shè)備出現(xiàn)死鎖的問題,雖然能夠通過IO模擬解決問題,但是對于編程來說比較麻煩,IO模擬在高速上面效果并不好。后來更換了Silicon Labs的MCU,型號為EFM32WG290F64,做了一個最小系統(tǒng)板,外圍電路不變,I2C死鎖問題不再存在,有效地解決了我的I2C問題。采用EFM32WG290F64讀到的I2C波形如下:

            

            圖3:EFM32WG290F64讀到的I2C波形

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

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

            2)需要滿足上升沿和下降沿的時序關(guān)系;

            3)I2C上拉電阻和速率有著密切的聯(lián)系,需要選擇合理;

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



          關(guān)鍵詞: I2C總線

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();