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 ...