stm32硬體i2c到底是不是個坑

時間 2021-08-30 10:37:12

1樓:匿名使用者

下面是我在測試中得到的幾個結論:

1、硬體i2c的clk在50khz及以下的情況下工作,不會出現任何情況下的卡住。(本人測試時間為20h)

2、硬體i2c的clk在常用的100khz和400khz下工作,99%的概率下會在1小時之內卡住,甚至只有幾十秒。

3、硬體i2c的clk在任何頻率下工作,在讀取或者傳送資料時,都絕對不允許其它中斷事件打斷它的工作,否則一定會卡住,只是時間問題。

綜上,硬體i2c的穩定工作情況是:工作在50khz及以下,並且保證無其它任何中斷打斷它的工作。這樣只適用於某些對速率要求不高的場所,比如eeprom的讀取等,而對於高速器件例如某些型號的ad晶片,就不能用了。

如果你一定需要高速率(400khz),那麼推薦大家使用stm32的替代方案gd32(兆易創新),它與stm32完全相容但是解決了stm32的硬體i2c bug,經過本人實際測試,在400khz的情況下工作,48小時無任何錯誤發生。但是仍需注意的是不能有外部中斷打斷i2c的工作。

對於st公司推薦的將i2c工作在dma和最高優先順序的中斷,我只能說大家可以根據自己的情況使用,因為如果你使用了ucos ii或者其它實時作業系統,那麼這種設定最高優先順序的方式是絕對不推薦的。如果你是裸機程式,並且任務數量不多,可以考慮這種dma+中斷的方式,否則一定會出現問題,只是測試時間長短問題。

2樓:洪興靚坤

1、硬體i2c的clk在50khz及以下的情況下工作,不會出現任何情況下的卡住。

2、硬體i2c的clk在常用的100khz和400khz下工作,99%的概率下會在1小時之內卡住,甚至只有幾十秒。

3、硬體i2c的clk在任何頻率下工作,在讀取或者傳送資料時,都絕對不允許其它中斷事件打斷它的工作,否則一定會卡住,只是時間問題。

綜上,硬體i2c的穩定工作情況是:工作在50khz及以下,並且保證無其它任何中斷打斷它的工作。這樣只適用於某些對速率要求不高的場所,比如eeprom的讀取等,而對於高速器件例如某些型號的ad晶片,就不能用了。

如果你一定需要高速率(400khz),那麼推薦大家使用stm32的替代方案gd32(兆易創新),它與stm32完全相容但是解決了stm32的硬體i2c bug,經過本人實際測試,在400khz的情況下工作,48小時無任何錯誤發生。但是仍需注意的是不能有外部中斷打斷i2c的工作。

對於st公司推薦的將i2c工作在dma和最高優先順序的中斷,大家可以根據自己的情況使用,因為如果你使用了ucos ii或者其它實時作業系統,那麼這種設定最高優先順序的方式是絕對不推薦的。如果你是裸機程式,並且任務數量不多,可以考慮這種dma+中斷的方式,否則一定會出現問題,只是測試時間長短問題。

最後需要說明的是:

(1)以上只是考慮了最純粹的硬體i2c**,對於某些使用了軟體彌補的方法,例如在經常卡住的部分設定超時退出,不在本文的討論範圍內,因為這樣已經破壞了正常的i2c協議。

(2)由於使用stm32的較高境界是使用中斷排程任務而不是死等迴圈,而硬體i2c對於中斷打斷十分忌諱,所以隨著你的程式設計和對作業系統理解水平的提高,你會越來越感覺stm32硬體i2c是個坑。

所以,stm32的硬體i2c確實是個坑,可以正常工作的環境要求十分苛刻。

stm32中硬體iic執行時候,老是停在下面這裡,是主模式選擇失敗,我選擇的是 i2c_mode_i2c ,有關係麼

3樓:匿名使用者

不用搞這個了stm32的iic通訊有個bug。

因為ack訊號時間很短暫,一旦錯過了這個短暫的ack訊號,stm32就掛了。

想用iic的話,就用軟體模擬吧。

4樓:知識哥哥

stm32f103的硬體i2c著實不好用,但cortex-m0核心的f051對硬體i2c做了很大程度修改,比m3的要好用。

stm32學習困惑,stm32 學習困惑

正點原子的iap例程,應該能幫到你一點。stm32的內部快閃記憶體 flash 地址起始於0x08000000,一般情況下,程式檔案就從此地 址開始寫入。此外stm32是基於cortex m3核心的微控制器,其內部通過一張 中斷向量表 來響應中斷,程式啟動後,將首先從 中斷向量表 取出復位中斷向量執...

stm32執行一句語句需要多少,STM32執行一句語句需要多少ns

那要看你設定stm32的主頻是多少hz了,另外,有的指令是單週期的,還有是多週期完成的,看你用什麼指令了,單週期指令比如nop就可以用 stm32語句的執行時間是多少 stm32有多個系列,主頻也不一樣 可配置 misp也不一樣,可以通過測試來得到。如果需要延時的話,stm32定時器比較多,可以使用...

stm32的優勢主要有哪些,STM32的優勢主要有哪些

以下是stm32的優勢介紹,供參考 1.除新增的功能強化型外設介面外,stm32互連繫列還提供與其它stm32微控制器相同的標準介面,這種外設共用性提升了整個產品家族的應用靈活性,使開發人員可以在多個設計中重複使用同一個軟體。新stm32的標準外設包括10個定時器 兩個12位1 msample s ...