国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

一般情況下,I2C設(shè)備焊接沒什么問題,按照設(shè)備手冊一步步來,基本上就順風(fēng)順?biāo)軌蛴闷饋怼H绻@么一個(gè)簡單的東西,有時(shí)候想要的結(jié)果死活不出來,反復(fù)的檢查問題的原因,查詢解決辦法,核查設(shè)備的數(shù)據(jù)手冊,甚至發(fā)送和接收的每一條命令與數(shù)據(jù)都知道是什么意思,仍然無法解決問題,那該怎么辦呢?

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

1 I2C基本用法

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

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

2 硬件問題匯總

2.1無法正常拉高拉低引腳

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

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

2.2電氣特性無法滿足

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

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

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

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

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

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

3 SDA 死鎖

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

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

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

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

3.1.1 現(xiàn)象

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

3.1.2 解決方式

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

3.1.3 9 個(gè)時(shí)鐘信號(hào)

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

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

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

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

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

(c)其他情況

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

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

(d)結(jié)論

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

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

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

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


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

    關(guān)注

    463

    文章

    54031

    瀏覽量

    466412
  • I2C總線
    +關(guān)注

    關(guān)注

    8

    文章

    417

    瀏覽量

    63364
  • SCL
    SCL
    +關(guān)注

    關(guān)注

    1

    文章

    244

    瀏覽量

    18028

原文標(biāo)題:“I2C”的那些坑,如何邁過去?

文章出處:【微信號(hào):mcuworld,微信公眾號(hào):嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    RK平臺(tái)I2C開發(fā):從硬件原理到實(shí)戰(zhàn)排查

    在嵌入式開發(fā)中,I2C 總線是連接外設(shè)的 “橋梁”—— 小到傳感器、EEPROM,大到 LCD 驅(qū)動(dòng)器、音頻芯片,都離不開它的控制。而瑞芯微(Rockchip)系列芯片作為主流嵌入式方案,其 I2C 控制器的開發(fā)是很多工程師的必備技能。
    的頭像 發(fā)表于 02-05 13:42 ?1063次閱讀
    RK平臺(tái)<b class='flag-5'>I2C</b>開發(fā):從<b class='flag-5'>硬件</b>原理到實(shí)戰(zhàn)排查

    I2C 為什么只要兩根線就能搞定通信?

    到目前為止,我們已經(jīng)討論了SPI通信和UART通信的基礎(chǔ)知識(shí),現(xiàn)在讓我們討論本系列的最后一個(gè)協(xié)議,即集成電路間協(xié)議(I2C)。如果您曾經(jīng)構(gòu)建過使用OLED顯示器、氣壓傳感器或陀螺儀/加速度計(jì)模塊
    的頭像 發(fā)表于 01-04 09:14 ?1701次閱讀
    <b class='flag-5'>I2C</b> 為什么只要兩根線就能搞定通信?

    基于FPGA的I2C控制模塊設(shè)計(jì)

    I2C_WRITE_WDATA.v模塊實(shí)現(xiàn)I2C寫時(shí)序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的頭像 發(fā)表于 12-26 09:48 ?5069次閱讀
    基于FPGA的<b class='flag-5'>I2C</b>控制模塊設(shè)計(jì)

    AS32X601的I2C模塊操作EEPROM詳解

    國科安芯推出的AS32X601系列MCU芯片內(nèi)置的I2C模塊提供了符合工業(yè)標(biāo)準(zhǔn)的兩線串行制接口,可用于MCU和外部I2C設(shè)備的通訊。I2C總線使用兩條串行線:串行數(shù)據(jù)線SDA和串行時(shí)鐘線SCL
    的頭像 發(fā)表于 12-21 21:39 ?1029次閱讀
    AS32X601的<b class='flag-5'>I2C</b>模塊操作EEPROM詳解

    I2C死鎖的問題

    在實(shí)際使用過程中,I2C比較容易出現(xiàn)的一個(gè)問題就是死鎖 ,死鎖在I2C中主要表現(xiàn)為:I2C死鎖時(shí)表現(xiàn)為SCL為高,SDA一直為低。 在I2C主設(shè)備進(jìn)行讀寫操作的過程中,主設(shè)備在開始信
    發(fā)表于 12-04 06:00

    深入剖析I2C協(xié)議

    I2C是由Philips開發(fā)的簡單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,I2C協(xié)議屬于半雙工協(xié)議(即同一時(shí)刻,數(shù)據(jù)單向流動(dòng))。此外
    的頭像 發(fā)表于 08-21 15:10 ?3691次閱讀
    深入剖析<b class='flag-5'>I2C</b>協(xié)議

    第十八章 I2C通信測試

    本章介紹了I2C協(xié)議,其物理層用SDA和SCL雙線,支持多設(shè)備:協(xié)議層含起始/停止信號(hào)、應(yīng)答機(jī)制等。還講解W55MH32的I2C外設(shè)及初始化,并進(jìn)行了通信測試代碼的分析。
    的頭像 發(fā)表于 06-19 17:07 ?1323次閱讀
    第十八章 <b class='flag-5'>I2C</b>通信測試

    STM32H7CubeMX配置硬件I2C,讀寫失敗是什么問題呀?

    STM32H7CubeMX配置硬件I2C,讀寫失敗什么問題呀,同樣的操作F4和F1都能正常使用,應(yīng)該不存在i2c地址錯(cuò)誤,操作都是一樣的,但H7就是用不了。I2C_WaitOnFlag
    發(fā)表于 06-12 06:21

    SPC574s如何使用SPC5Studio自帶的I2C庫實(shí)現(xiàn)I2C通信?

    SPC574s并沒有硬件I2C外設(shè),可以使用SPC5Studio自帶的SW I2C庫來實(shí)現(xiàn),但是由于SPC5Studio軟件資料太少,I2C一直沒有數(shù)據(jù),各位有相關(guān)的資料嗎?
    發(fā)表于 06-09 06:22

    SPC574s如何使用SPC5Studio自帶的I2C庫實(shí)現(xiàn)I2C通信?

    SPC574s并沒有硬件I2C外設(shè),可以使用SPC5Studio自帶的SW I2C庫來實(shí)現(xiàn),但是由于SPC5Studio軟件資料太少,I2C一直沒有數(shù)據(jù),各位有相關(guān)的資料嗎?
    發(fā)表于 06-05 08:17

    SPC574s如何使用SPC5Studio自帶的I2C庫實(shí)現(xiàn)I2C通信?

    SPC574s并沒有硬件I2C外設(shè),可以使用SPC5Studio自帶的SW I2C庫來實(shí)現(xiàn),但是由于SPC5Studio軟件資料太少,I2C一直沒有數(shù)據(jù),各位有相關(guān)的資料嗎?
    發(fā)表于 05-14 07:10

    簡單了解I2C接口

    在電子電路的復(fù)雜世界里,各種電路模塊設(shè)備需要相互通信才能協(xié)同工作 ,I2C接口就像是電路模塊設(shè)備間的溝通橋梁,今天就帶大家深入了解它。
    的頭像 發(fā)表于 05-08 14:15 ?2567次閱讀
    簡單了解<b class='flag-5'>I2C</b>接口

    基于RT-Thread的I2C(軟件) 實(shí)踐 | 技術(shù)集結(jié)

    一、軟硬件介紹(一)I2C(軟件)I2C是一種廣泛應(yīng)用于嵌入式系統(tǒng)中的短距離串行通信協(xié)議,支持多主多從設(shè)備模式,主機(jī)通過時(shí)鐘信號(hào)SCL和數(shù)據(jù)線SDA與從機(jī)進(jìn)行數(shù)據(jù)交互。在RT-Thread操作系統(tǒng)中
    的頭像 發(fā)表于 05-06 18:44 ?1061次閱讀
    基于RT-Thread的<b class='flag-5'>I2C</b>(軟件) 實(shí)踐 | 技術(shù)集結(jié)

    是德DSOX4034A示波器I2C總線信號(hào)分析

    在現(xiàn)代電子設(shè)計(jì)與調(diào)試中,I2C(Inter-Integrated Circuit)總線作為一種廣泛應(yīng)用的串行通信協(xié)議,因其簡單性、靈活性和低功耗特性,成為許多嵌入式系統(tǒng)和電子設(shè)備中不可或缺的通信方式
    的頭像 發(fā)表于 03-19 13:47 ?1254次閱讀
    是德DSOX4034A示波器<b class='flag-5'>I2C</b>總線信號(hào)分析

    I2C總線復(fù)用

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