最近在用stm32f411驅動mpu6500,發現總是會發生dmp_load_motion_driver_firmware函式執行不成功,在晚上找了找發現有很多人都發現有這個問題。自己除錯了幾天,修改了如下幾點:
1、在mpu_write_mem函式中增加延遲。
2、在實際除錯中發現如果在呼叫dmp_load_motion_driver_firmware函式的過程中有中斷相應會很容易錯誤,由於的我的使用了freertos作業系統,所以在開啟執行緒後會有上下文切換,很容易造成初始化錯誤。所以將初始化函式全部移到執行緒啟動之前。
3、修改了i2c引腳的驅動,將引腳上拉修改為無上拉,因為不成本身模組上就已經具備了上拉電阻。
實際測試下來基本說不會再出現錯誤。當然如果頻繁進行操作還是會出現錯誤。
補充:經過進一步除錯,實際測試下來採用如下方式效果更好:
i2c busy死鎖->i2c失能->i2c初始化->sda、scl配飾為輸出並置高電平->sda、scl配置為i2c管教復用。關於dmp_load_motion_driver_firmware錯誤問題,建議將該執行緒優先順序提高,避免被打斷。
rtt spi驅動總結
首先配置env工具,選擇spi驅動。spi 一般用4根線表示通訊cs mosi miso clk.其中降低時鐘頻率,通過片選,可以掛載更多的裝置。另乙個重要的就是cpol,cpha.cpol表示時鐘訊號的起始電平,當cpol等於 0時,起始電平為低電平,當cpol等於1時,起始電平為高電平。cpha...
MPU6050帶字元驅動的i2c從裝置驅動2
include include include include include include include include include log.h include mpu6050 reg.h module license gpl module author kevin liu struct ...
驅動學習 字元裝置驅動總結
字元裝置是 3 大類裝置 字元裝置 塊裝置和網路裝置 中較簡單的一類裝置,其驅動程式中完成的主要工作是初始化 新增和刪除 cdev 結構體,申請和釋放裝置號,以及填充file operations結構體中的操作函式,實現file operations結構體中的read write 和ioctl 等函...