記錄一次從stm32F1向F4移植模擬iic的困惑

2021-08-21 09:34:45 字數 1140 閱讀 9376

通訊的ic 是fdc2214 ,在f1執行時通訊正常,移植到f4時只需要修改下引腳io的初始化,以及輸入輸出方向。

但是在測試時候發現了乙個問題,在向fdc2214寫入資料時,msb的最高位始終無法寫入 。

這裡是對使用f103和f407對暫存器進行讀寫操作的測試結果。

暫存器f407

f103

寫入初值

rcount_ch0

347b

34fb

34fb

settlecount_ch0

001b

001b

001b

clock_dividers_c_ch0

2002

2002

2002

drive_current_ch0

7bc0

7bc0

7800

error_config

0000

0000

0000

mux_config

420d

c20d

c20d

config

1401

1401

1401

drive_current_ch1

7800

7bc0

7800

通過對比發現,f103寫入和讀取的值是大部分一致的。

只有 mux_config 在stm32f103和f407中讀取的資料時不同的。進一步測試發現 是最高位資料發生了錯誤。

傳送設定時,寫入0xc20d,實際寫入為0x420d

分析原因,應該是在寫通訊過程中發生了錯誤。

最後誤打誤撞發現了問題的原因和解決辦法,在這裡告訴大家:

問題出在sda引腳設定方向這裡。

這裡是本來的**,可能是f4換輸入輸出方向有一點問題。

//io方向設定

#define fdc_sda_in()

#define fdc_sda_out()

最後的解決方案就是在換向之後加入乙個延時,問題解決;

//io方向設定

#define fdc_sda_in()

#define fdc_sda_out()

STM32F1和F4的區別

stm32f1和f4的區別 第一點區別 核心不一樣 stm32f1是cortex m3的核心。stm32f4是cortex m4的核心。晶元工藝不一樣。因為stm32最早2010年左右就出來的mcu,而f4比f1晚幾年研發出來,在設計製成上要優良一些 系統構架也不一致,f4的主系統有多層ahb匯流排...

STM32F4與STM32F1的區別

作為cortex m3市場的最大佔有者,st公司在2011年又推出基於cortex m4核心的stm32f4系列產品,相對與stm32f1 f2等cortex m3產品,stm32f4最大的優勢,就是新增了硬體fpu單元以及dsp指令,同時,stm32f4的主頻也提高了很多,達到168mhz 可獲得...

STM32F1與STM32F4間CAN通訊除錯

can通訊的除錯不單是軟體上的除錯,也需要對硬體進行檢查。在調通之前一直有兩個疑惑干擾判斷 結論在文末 1.不同的can晶元是否存在不相容。2.不同型號的stm32是否can通訊是否存在差異。stm32f1與stm32f4之間can通訊的除錯過程 僅以stm32f1作介紹 標準庫 1.確定引腳與資源...