99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

3天內(nèi)不再提示

I2C基本用法,硬件問題匯總

5RJg_mcuworld ? 來源:嵌入式資訊精選 ? 2019-11-27 15:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一般情況下,I2C設備焊接沒什么問題,按照設備手冊一步步來,基本上就順風順水能夠用起來。如果這么一個簡單的東西,有時候想要的結果死活不出來,反復的檢查問題的原因,查詢解決辦法,核查設備的數(shù)據(jù)手冊,甚至發(fā)送和接收的每一條命令與數(shù)據(jù)都知道是什么意思,仍然無法解決問題,那該怎么辦呢?

本文主要針對I2C設備,講解如何解決I2C設備主機與從機直接無法正常數(shù)據(jù)交互的問題,側重點是針對硬件設計不太合理、I2C設備設計不標準導致總線故障的情況,并且通過分析現(xiàn)象,提出解決方案。對于在設備初始化中,沒有設置相應的寄存器或者發(fā)送命令,而導致的無法獲取想要的數(shù)據(jù)情況,不作詳細介紹。

1 I2C基本用法

I2C總線是一種簡單、雙向二線制同步串行總線。所有主機在 SCL 線上產(chǎn)生它們自己的時鐘來傳輸總線上的報文,SDA 線傳輸每個字節(jié)必須為 8 位,每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制,每個字節(jié)后必須跟一個響應位。在空閑狀態(tài)時,SCL 與 SDA 均為高電平。

通常一些低功耗I2C設備,芯片引腳使用上拉輸出即可滿足與其正常數(shù)據(jù)交互,還有一些I2C設備,則需要在總線上外加一個上拉電阻,此時相應的 I/O 配置成開漏輸出,其他的按照芯片手冊進行標準配置。

2 硬件問題匯總

2.1無法正常拉高拉低引腳

首先確定 SDA 與SCL 引腳能夠被拉高、拉低,檢測方式直接軟件控制 I/O 口輸出引腳低電平/高電平,測量引腳電壓是否能夠隨著芯片引腳的設置輸出相應的狀態(tài)。

如果不能被拉低,檢測虛焊、上拉電阻斷開、I2C設備是否正常、芯片引腳是否損壞等問題,確保能夠正常被拉高或者拉低。

2.2電氣特性無法滿足

如果正常拉高、拉低的情況下,依然無法正常讀取數(shù)據(jù)。通常建議,根據(jù)負載電流更換小阻值的電阻。

如果需要詳細知道原因,就具體查詢I2C設備電氣特性。大多數(shù)I2C設備電氣特性,大致下圖所示

通常這塊內(nèi)容在I2C設備電氣特性這一塊,主要講解電平拉高拉低的最長時間、最短時間,以及處于高電平與電平的閾值與持續(xù)時間等等內(nèi)容。

硬件設計,為了降低單片機的功耗與保護芯片引腳,在滿足負載電流和負載電容相關要求的前提下,阻值設置通常比較大。如果同一個總線上掛載多個I2C設備, 即使在 I/O口配置正確的前提下,也會導致驅動能力不足。

現(xiàn)象是拉高電壓不足,在拉高、拉低過程中消耗時間過長。這兩個問題通常還引起數(shù)據(jù)線與時鐘線:拉高時,高電壓持續(xù)時間過短;拉低時,低電壓持續(xù)時間過短。用示波器抓取圖形:從波形上看,顯示是尖波、斜波、雜波等不符合I2C設備電氣特性的波形;從數(shù)據(jù)上看,數(shù)據(jù)線高電平持續(xù)時間過小 ,上升沿時間過長 ,下降沿時間過長等等數(shù)據(jù)超出設備電氣特性的有效值。典型雜波圖,如下所示

如果出現(xiàn)此類異常,建議更換小一點的電阻,用來增強總線驅動能力,提高電平轉換速度。應當注意的是每個MCU的耐受電流不一樣,減小電阻應避免超過相應引腳承受電流的最大值。

3 SDA 死鎖

如果I2C設備的數(shù)據(jù)偶爾能夠正確獲取,但是仍然會在總線發(fā)送數(shù)據(jù)或者命令的時候,爆出總線讀寫錯誤,那么有可能遇到下面的死鎖問題,死鎖時候,就是數(shù)據(jù)線被拉低,主機無法拉高。死鎖一般發(fā)生在從機上,且為數(shù)據(jù)線死鎖。因為I2C總線是共享的,如果需要確定,是否是從機死鎖,可以參照下面兩幅圖,串聯(lián)電阻進行測試

如上圖所示,如果從機死鎖,即從機拉低電平,此時檢測到的電壓為1/3 Vcc。

如上圖所示,如果主機死鎖,即主機拉低電平,此時檢測到的電壓為 1/11 Vcc。依據(jù)這個原理,可以準確判定死鎖的具體位置,多個傳感器依據(jù)類似方式進行定位。

3.1 反復重啟導致死鎖

3.1.1 現(xiàn)象

如果設備需要反復重啟,很有可能在從機設備返回數(shù)據(jù)的時候,SDA被鎖住。具體原因是從機設備在回數(shù)據(jù),還沒有發(fā)送完成,主機時鐘消失,從機等待時鐘信號, MCU重啟,如果從機設備的電源沒有復位,從機繼續(xù)等待 MCU 時鐘信號,數(shù)據(jù)一直被鉗住,總線無法完成數(shù)據(jù)交互。

3.1.2 解決方式

解決重啟導致總線死鎖,一種方式可以如同 rt-thread 驅動解決方式一樣,在系統(tǒng)復位的時候,提供9個時鐘信號,解初總線死鎖;另一種是在按下復位鍵初始化的時候,給從機設備電源斷電重啟,這個需要引腳控制。

3.1.3 9 個時鐘信號

I2C設備進行讀寫操作的過程中,在從機鉗住總線的期間,MCU 異常復位,會導致 SDA 死鎖,異常產(chǎn)生出現(xiàn)在倆個階段:從機響應階段、從機發(fā)送數(shù)據(jù)階段。下面將針對這兩種異常,對時鐘信號進行解釋,并且總結其他原因,得出結論。

(a) 從機響應階段

MCU 在開始信號后發(fā)送地址,得到從機設備響應,準備開始返回數(shù)據(jù),在這個時候,從機將 SDA 信號拉為低電平,如果 MCU 異常復位,會導致總線上 SCL 停止發(fā)送時鐘信號,從機等待 MCU 的時鐘信號,產(chǎn)生鉗住并且拉低 SDA 的現(xiàn)象。如果想要解鎖 SDA,從機需要 9 個時鐘信號,使得從機完成響應,釋放 SDA 。

(b) 從機發(fā)送數(shù)據(jù)階段

如果從機響應完成了,開始給MCU返回數(shù)據(jù)。這個數(shù)據(jù)有八位,每一位都有可能為低,如果在數(shù)據(jù)低位,MCU異常復位,停止發(fā)送時鐘信號,從機就會等待 MCU的時鐘信號,產(chǎn)生鉗住并且拉低SDA的現(xiàn)象。如果想要解鎖SDA,從機需要 1-8個時鐘信號,使得從機完成數(shù)據(jù)響應,釋放 SDA 。

(c)其他情況

在從機一個8位數(shù)據(jù)發(fā)送完成后,等待MCU響應, 即使屬于MCU的,從機不再鉗住 SDA,沒有時鐘,數(shù)據(jù)交互停止。

在主機發(fā)送數(shù)據(jù)階段,總線所有權在主機,主機異常,數(shù)據(jù)交互停止,總線釋放。所以,這些情況下,不存在SDA死鎖的情況。

(d)結論

綜上所述,解鎖SDA從機最多需要 9 個時鐘信號,也就是異常復位后,MCU至少發(fā)送需要9個時鐘信號,完成 i2c 總線的SDA解鎖。所以,RT_Thread 為了避免此類問題的產(chǎn)生,在i2c驅動初始化,對總線進行判斷,判斷是否需要解鎖,如果需要,就進行解鎖,確保 i2c設備不會因為這個問題導致數(shù)據(jù)交互失敗。

3.2 多個I2C設備導致死鎖

多I2C設備除了異常復位導致死鎖,還會形成相互干擾的問題,一般情況下,不會把同種從機地址掛在同一條總線上,但除此之外,有些I2C設備設計不是按照標準的I2C總線協(xié)議設計,在I2C總線共享的前提條件下,有的設備只要總線上從機地址就會有響應。這樣由于從機的錯誤響應,使得各個I2C總線異常,甚至鉗住總線,導致 I2C總線進人一種死鎖狀態(tài)。

解決方式,這樣的不標準i2c設備,單獨使用一個總線,避免干擾,或者單獨一個獨立引腳,控制電源。


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

    關注

    460

    文章

    52520

    瀏覽量

    441151
  • I2C總線
    +關注

    關注

    8

    文章

    408

    瀏覽量

    62202
  • SCL
    SCL
    +關注

    關注

    1

    文章

    243

    瀏覽量

    17560

原文標題:“I2C”的那些坑,如何邁過去?

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    I2C總線復用

    帝晶智慧屏I2C總線復用
    的頭像 發(fā)表于 03-11 17:20 ?1417次閱讀

    I2C總線通信原理 如何設計I2C總線電路

    I2C總線通信原理 I2C(Inter-Integrated Circuit)總線是一種用于集成電路之間進行通信的串行通信協(xié)議。它最早由飛利浦公司(現(xiàn)被恩智浦電子收購)于1982年推出,是一種簡單
    的頭像 發(fā)表于 01-31 15:01 ?1141次閱讀

    I2C總線的優(yōu)缺點分析

    設備之間的通信,這大大減少了所需的引腳數(shù)量,降低了硬件成本。此外,由于其簡單性,I2C總線也易于實現(xiàn)和維護。 2. 多主機和多從機支持 I2C總線支持多個主機和多個從機,這意味著在同一
    的頭像 發(fā)表于 01-17 15:50 ?1167次閱讀

    I2C總線與Arduino的接口示例

    在現(xiàn)代電子設計中,I2C總線因其簡單性和靈活性而廣受歡迎。它允許多個設備共享同一通信線路,從而節(jié)省空間和成本。Arduino,作為一個多功能的微控制器平臺,自然也支持I2C通信。 I2C總線
    的頭像 發(fā)表于 01-17 15:34 ?1608次閱讀

    I2C總線的工作模式介紹

    在現(xiàn)代電子系統(tǒng)中,I2C總線作為一種多主機、多從機的串行通信協(xié)議,扮演著至關重要的角色。它允許多個設備共享同一總線,進行數(shù)據(jù)傳輸,從而簡化了系統(tǒng)設計并降低了成本。 I2C總線的基本特性 I2C總線由
    的頭像 發(fā)表于 01-17 15:32 ?998次閱讀

    I2C總線故障排除技巧

    導致整個系統(tǒng)的功能受到影響。 1. 檢查硬件連接 1.1 確認電源和接地 首先,確保I2C設備的電源和接地連接正確無誤。不良的電源或接地連接可能導致信號不穩(wěn)定,從而引發(fā)通信錯誤。 1.2 檢查總線線纜 檢查SDA和SCL線是否正確連接,并且沒有損壞。在長距離傳
    的頭像 發(fā)表于 01-17 15:20 ?2354次閱讀

    I2C總線設備地址設置方法

    通常是一個7位或10位的數(shù)字,用于標識總線上的每個設備。在7位尋址模式下,地址范圍是0x00到0x7F,而在10位尋址模式下,地址范圍是0x000到0x3FF。I2C地址的最低位(LSB)通常用于指示讀/寫操作。 硬件地址設置 1. 地址引腳配置 許多
    的頭像 發(fā)表于 01-17 15:17 ?4250次閱讀

    I2C總線應用實例分析

    在現(xiàn)代電子系統(tǒng)中,I2C總線因其簡單、靈活和高效的特點而被廣泛應用于各種設備之間的通信。 I2C總線概述 I2C總線由Philips(現(xiàn)為NXP)在1980年代初期開發(fā),最初用于音頻和視頻設備
    的頭像 發(fā)表于 01-17 15:09 ?753次閱讀

    RISC V的I2C操作

    _0_io_scl_write(system_i2c_0_io_scl_write),.system_i2c_0_io_scl_read(system_i2c_0_io_scl_read),WriteEnable信號的處理
    的頭像 發(fā)表于 11-01 11:06 ?733次閱讀

    I2C協(xié)議的基礎知識

    本文從I2C協(xié)議的概述開始,描述協(xié)議的歷史、不同速度模式、物理層和數(shù)據(jù)幀結構,最后介紹I2C混合電壓系統(tǒng)中電平兼容性以及上拉電阻大小計算。
    的頭像 發(fā)表于 10-22 15:51 ?2210次閱讀
    <b class='flag-5'>I2C</b>協(xié)議的基礎知識

    使用USCI I2C主站

    電子發(fā)燒友網(wǎng)站提供《使用USCI I2C主站.pdf》資料免費下載
    發(fā)表于 10-21 09:30 ?0次下載
    使用USCI <b class='flag-5'>I2C</b>主站

    I2C噪聲毛刺濾波

    電子發(fā)燒友網(wǎng)站提供《I2C噪聲毛刺濾波.pdf》資料免費下載
    發(fā)表于 10-08 14:39 ?6次下載
    <b class='flag-5'>I2C</b>噪聲毛刺濾波

    了解I2C總線

    電子發(fā)燒友網(wǎng)站提供《了解I2C總線.pdf》資料免費下載
    發(fā)表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b>總線

    I2C基本指南

    電子發(fā)燒友網(wǎng)站提供《I2C基本指南.pdf》資料免費下載
    發(fā)表于 09-10 09:40 ?0次下載
    <b class='flag-5'>I2C</b>基本指南

    CAN轉I2C橋接器

    電子發(fā)燒友網(wǎng)站提供《CAN轉I2C橋接器.pdf》資料免費下載
    發(fā)表于 08-28 11:10 ?0次下載
    CAN轉<b class='flag-5'>I2C</b>橋接器