我發送我的數據trought I2C(使用DMA每1秒)。 我爲SCK和SDATA增加了兩個上拉電阻。 現在有奴隸,所以因爲沒有迴應,主人只發送奴隸地址,這就是全部。I2C,上拉電阻(STM32發現)
它的測試板有時會發生這種情況,我鬆了一會兒這些上拉電阻。 當這種情況發生時,我無法獲得更多的數據,而且SCK的滴答速度如此之快,可以用於這個頻率。 有沒有辦法如何解決它,後退沒有幫助,我不得不重置我的董事會。
我無法解釋這種行爲,它完全殺死總線。
我發送我的數據trought I2C(使用DMA每1秒)。 我爲SCK和SDATA增加了兩個上拉電阻。 現在有奴隸,所以因爲沒有迴應,主人只發送奴隸地址,這就是全部。I2C,上拉電阻(STM32發現)
它的測試板有時會發生這種情況,我鬆了一會兒這些上拉電阻。 當這種情況發生時,我無法獲得更多的數據,而且SCK的滴答速度如此之快,可以用於這個頻率。 有沒有辦法如何解決它,後退沒有幫助,我不得不重置我的董事會。
我無法解釋這種行爲,它完全殺死總線。
正如你自己已經看到的那樣,上拉電阻對i2c總線來說至關重要,無論是sda還是scl線路。通常很明顯,sda線是雙向的,不太明顯的是scl也是有些雙向的,因爲奴隸可以保持低線以節制總線速度。
在很多情況下,由於碰撞或其他物理問題(如鬆動您的拉力),公交車可能會被鎖定,在這種情況下,某些奴隸不會正確釋放總線,因爲他們知道他們仍在處理中。這種情況可以通過發送輸出SCL脈衝的主機來解決,並且最終在線路釋放時停止。但是,如果你說沒有奴隸,這可能不是你的情況。
恐怕您的問題可能與主控的i2c外設沒有看到線路因預期高而斷線而變高,我認爲在你的情況下最好的解決方案是,你應該確保你不會放鬆這些拉動。達到此目的的最佳方法是在每條線路上並聯兩個或三個電阻器,這樣,所有2/3個電阻器都必須斷開連接,以使總線「不受污染」。並聯使用兩個10k電阻用於SDA,另外兩個電阻用於SCL。