怎麼把I2C匯流排裡的引數調整合適,有沒有什麼相關測試軟體?

2025-03-29 14:50:13 字數 2736 閱讀 9932

i2c匯流排出錯

1樓:網友

1、首先確認你的i2c的速率,軟體模擬的話就與mclk直接相關了,自然微控制器的速率下降就會正常;如果是硬體i2c的話需要看時鐘**是不是mclk並作修改。

2、看你的電路並沒有進行上拉也就是sda和scl需要接或者10k的電阻至vcc即可。

3、如果你的i2c是等待延時的話建議修改delay引數或者使用返回ack查詢方式。

4、有問題隨時hi我,可以給你傳乙份除錯通過的**!

2樓:學海方舟

1、用示波器檢查一下波形,看看是不是受到干擾啦;

2、檢查接地,看有沒有共地;

3、降低上拉電阻的阻值;

4、檢查上拉電阻的位置,儘量靠近master

3樓:網友

你說的微控制器的速度是指什麼?

你要確定一下i2c clock的頻率,是不是超過了at24c256所能接受的時脈頻率了。

4樓:蘭色的閃電

兩次寫資料之間有沒有等待前一次的資料寫完?可以等20ms,或者再寫判斷有沒有正確的ack訊號。

i2c匯流排有哪些優點

5樓:

1. 硬體簡單,資源消耗少。只有時鐘和資料線。

2. 時鐘同步和仲裁的實現原理也很簡單,以開漏/集電極開路門以線路邏輯簡單實現。

3. 協議設計精巧、易用、靈活。資料、位址、指令都可以傳。

4. 使用廣泛,現在幾乎所有的ic廠商都在晶元上整合了i2c。

5. philips 對i2c協議的ip已經過期,license上幾乎不用考慮。

i2c匯流排的最大長度是多少

6樓:小陳

i2c匯流排的最大長度是:小於200mm~300mm,跟傳輸速度、佈線等有關係,延長距離可以用i2c中繼器晶元,nxp如p82b715、p82b96等等;在標準上沒有看到明確規定有效的傳輸距離。

i2c傳輸的距離應該取決訊號的穩定性,而穩定性由匯流排負載,傳輸速度,匯流排電容,甚至外部干擾等因素決定,因此有可能出現5公尺的通訊距離換個位置或者加個裝置就出問題。

7樓:網友

在標準上沒有看到明確規定有效的傳輸距離。但是i2c傳輸的距離應該取決訊號的穩定性,而穩定性由匯流排負載,傳輸速度,匯流排電容,甚至外部干擾等因素決定。因此有可能出現5公尺的通訊距離換個位置或者加個裝置就出問題。

最主要的是出現問題的時候能夠想辦法解決:

1. 如果是實際應用需要保證傳輸波形的上公升沿,下降沿,高低電平達到規定的要求即可排除線長的影響。

如何檢測i2c的開始條件和結束條件

8樓:芥末留學

開始條件檢測:

1)儘量選用帶復位輸人的i2c從器件,從i2c匯流排死鎖產生的原因可以發現i2c匯流排死鎖的乙個必要條件是主裝置復位了而從裝置沒有復位。

如果從裝置選用帶復位輸入的晶元,將主從裝置的復位訊號連線在一起,當外部產生復位事件時,主從裝置同時復位,這樣就不會發生i2c匯流排死鎖現象了。

這種方法的缺點也是顯而易見的,首先,大部分i2c從器件都沒有復位輸入,器件選型受到了很大的限制;

其次,這種對於主裝置整合看門狗引起的復位也沒喚檔雹有效果。

2)將所有的從i2c裝置的電源連線在一起,通過m0s管連線到主電源,而mos管的導通關斷由i2c主裝置來實現一般來說,i2c主裝置都是具有運算單元的處理器。

控制功能可以通過處理器的gpio來實現。

每次主裝置復位時,執行程式控制gpio關斷mos,使從裝置失去電源。

然後延時一段時間後再導通mos管,給從裝置上電,從而達到讓從裝置強制復位的效果。

這種方法能彌補第一種方法的不足,但蠢祥是會增加電源設計的複雜性,影響layout設計時電源的完整性;

同時還需要更改處理器的底層boot**,影響底層軟體的通用性和可移植性。

結束條件檢測:

在i2c主裝置中增加i2c匯流排恢復程式。

每次i2c主裝置復位後,如果檢測到sda資料線被拉低,則控制i2c中的scl時鐘線產生9個時鐘脈衝(針對8位資料的情況),這樣i2c從設和帆備就可以完成被掛起的讀操作,從死鎖狀態中恢復過來。

這種方法有很大的侷限性,因為大部分主裝置的i2c模組由內建的硬體電路來實現。

軟體並不能夠直接控制scl訊號模擬產生需要時鐘脈衝。

使用此種方法可以使用io模擬i2c,scl時鐘易控制。

i2c是什麼

9樓:你可能是豬嗎

i²c(inter-integrated circuit)是內部整合電路的稱呼,是一種序列通訊匯流排,使用多主從架構,由飛利浦公司在1980年代為了讓主機板、嵌入式系統或手機用以連線低速周邊裝置而發展。i²c(讀作"i-squared-c" ),還有可選的拼寫方式是i2c(讀作i-two-c)以及iic(讀作i-i-c),在中國則多以"i方c"稱之。

10樓:網友

i2c匯流排是雙向、兩線(scl、sda)、序列、多主控(multi-master)介面標準,具有匯流排仲裁機制,非常適合在器件之間進行近距離、非經常性的資料通訊。在它的協議體系中,傳輸資料時都會帶上目的裝置的裝置位址,因此可以實現裝置組網。如果用通用io口模擬i2c匯流排,並實現雙向傳輸,則需乙個輸入輸出口(sda),另外還需乙個輸出口(scl)。

注:i2c資料瞭解得比較少,這裡的描述可能很不完備)

這裡有詳細的。

ii2和i2的區別,C語言i 2和i 2的區別

i i 2 和 i 2的區別主要有以下三點 1 運算順序不相同 簡單說就是i i 2 比 i 2多了一次對變數 i 的運算。i i 2是先進行i 2的運算得出一個結果,再賦值給i。i 2就是先賦值然後在進行加法。2 得到的結果不相同 c語言中i 2 等同於 i i 2 這是簡略寫法,但是計算時演算法...

C裡把輸入流作為函式形參應該怎麼用

void func istream p void func istream p c 怎麼把函式作為形參在另一個函式中並實現函式呼叫?謝謝 include using namespace std typedef int pfun int a,int b 函式指標 int add int a,int b...

c語言怎麼把東西寫到檔案裡,再從檔案輸出到螢幕上

用writeprivateprofilestring 和getprivateprofilestring 兩個函式就可以了啊,不用開啟檔案 關閉檔案,定位,移動檔案指標之類的 為防止有人說c下不能用,特寫一個簡單的 include include include struct struct char ...