chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

I2C總線的基本用法 I2C總線硬件問題匯總

FPGA之家 ? 來源:RT-Thread ? 2023-12-26 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

1 i2c 基本用法

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

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

2 硬件問題匯總

2.1無法正常拉高拉低引腳

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

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

2.2電氣特性無法滿足

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

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

3a2adcb4-a385-11ee-8b88-92fbcf53809c.jpg

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

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

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

3a3451c2-a385-11ee-8b88-92fbcf53809c.jpg

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

3 SDA 死鎖

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

3a39e24a-a385-11ee-8b88-92fbcf53809c.jpg

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

3a421302-a385-11ee-8b88-92fbcf53809c.jpg

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

3.1 反復(fù)重啟導(dǎo)致死鎖

3.1.1 現(xiàn)象

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

3.1.2 解決方式

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

3.1.3 9 個時鐘信號

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

(a) 從機響應(yīng)階段

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

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

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

(c)其他情況

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

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

(d)結(jié)論

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

3.2 多個 i2c 設(shè)備導(dǎo)致死鎖

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

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

來源:RT-Thread

審核編輯:湯梓紅

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

    關(guān)注

    11

    文章

    3484

    瀏覽量

    67511
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1541

    瀏覽量

    127881
  • 引腳
    +關(guān)注

    關(guān)注

    16

    文章

    1735

    瀏覽量

    52922
  • 串行總線
    +關(guān)注

    關(guān)注

    1

    文章

    186

    瀏覽量

    31125

原文標題:再談I2C,硬件問題匯總及死鎖解決辦法

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    i2c總線介紹

    I2C介紹   I2C總線是兩線式串行總線。    I2C總線
    發(fā)表于 08-13 17:29 ?0次下載

    i2c總線ppt(I2C總線器件應(yīng)用)

    I2C總線器件應(yīng)用第一節(jié) I2C總線器件應(yīng)用概述I2C總線工作原理
    發(fā)表于 08-13 17:34 ?0次下載

    i2c總線的特點

    i2c總線的特點:2 I2C 總線使設(shè)計人員和廠商都得益.. 3 2.1 設(shè)計人員的得益.. 4 2.2 廠商的得益. 5
    發(fā)表于 08-05 09:05 ?26次下載

    I2C總線規(guī)范與I2C器件C51讀寫程序

    I2C總線規(guī)范與I2C器件C51讀寫程序:本文簡要介紹了I2C總線,并給出了
    發(fā)表于 08-22 17:51 ?95次下載

    I2C總線在Linux系統(tǒng)中的驅(qū)動設(shè)計

    介紹I2C總線的基本概念和工作原理,敘述I2C總線擴展器件ZLG7290的功能特點。在以S3C2410為微控制器,ZLG7290為
    發(fā)表于 12-29 16:52 ?40次下載

    什么是i2c總線

    什么是i2c總線  下載請點擊: i2c總線協(xié)議中文版 
    發(fā)表于 11-05 09:26 ?3064次閱讀

    并口模擬I2C總線的設(shè)計

    并口模擬I2C總線的設(shè)計 試驗?zāi)康模赫J識計算機并口和I2C總線,用計算
    發(fā)表于 09-11 10:31 ?4380次閱讀
    并口模擬<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的設(shè)計

    I2C總線詳解

    I2C總線定義  I2C(Inter-Integrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控
    發(fā)表于 06-30 11:09 ?4017次閱讀

    基于CPLD的I2C總線接口設(shè)計

    在電路設(shè)計中,I2C總線是比較常用的兩線式串行通信方式,大多數(shù)的CPU都擅長于并口操作,不具備直接操作I2C總線接口的能力。為了使不具備I2C
    發(fā)表于 02-12 16:11 ?95次下載
    基于CPLD的<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>接口設(shè)計

    SPI總線I2C總線工作原理

    SPI總線I2C總線工作原理,本內(nèi)容詳細介紹了SPI總線I2C總線的工作原理和比較
    發(fā)表于 12-08 16:55 ?0次下載

    基于51的I2c總線

    I2c總線,基于51的I2c總線,程序?qū)W習(xí)。快來下載學(xué)習(xí)吧
    發(fā)表于 01-13 11:49 ?34次下載

    i2c

    單片機i2c總線操作;單片機i2c總線操作;單片機i2c總線操作;
    發(fā)表于 05-17 11:09 ?35次下載

    i2c總線用來做什么_i2c總線數(shù)據(jù)傳輸過程

    I2C總線控制器為微控制器或微處理器提供控制I2C總線的接口,它控制所有I2C總線的特殊序列、協(xié)
    發(fā)表于 11-24 14:16 ?7514次閱讀

    I2C總線的基本通信總結(jié)

    在電子設(shè)計開發(fā)中I2C大家已經(jīng)很熟悉了,每一種電子產(chǎn)品小到電子開關(guān),大到衛(wèi)星通信都會利用的I2C總線。據(jù)統(tǒng)計I2C在電子產(chǎn)品中占據(jù)了93%的份額,幾乎任何一種電路都要使用。
    的頭像 發(fā)表于 08-26 14:08 ?1.9w次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的基本通信總結(jié)

    I2C串行總線協(xié)議是什么?I2C總線有哪些優(yōu)點?

    I2C串行總線協(xié)議是什么?I2C總線有哪些優(yōu)點? I2C(Inter-Integrated Circuit)是一種串行
    的頭像 發(fā)表于 09-12 11:18 ?2375次閱讀