為什麼 BetaFlight Configurator 無法看到 ICM-45686

為什麼 BetaFlight Configurator 無法看到 ICM-45686

深入探討由韌體和 Configurator 感測器列表之間的競爭條件引起的感測器顯示錯誤

症狀

TFC1 的 ICM-45686 IMU 被 BetaFlight 韌體正確偵測,並在飛行控制中完美運作。但 BetaFlight Configurator 應用程式拒絕在感測器標籤頁中顯示感測器 ID。當相同的板子燒錄 MPU9250 韌體時,感測器正常顯示。

這種脫節 — 韌體偵測到感測器但 Configurator 不顯示 — 指向通訊不匹配而非硬體問題。

根本原因

BetaFlight 和 BetaFlight Configurator 歷史上維護著分開且並行的支援感測器列表。韌體在 accgyro.h 中有感測器枚舉,而 Configurator 應用程式在 sensor_types.js 中有自己的匹配列表。

問題:這些列表隨著感測器的新增和移除而頻繁更新。當新的感測器如 ICM-45686 被添加到韌體列表但尚未添加到 Configurator 列表時,枚舉 ID 就會分歧。韌體會報告感測器 ID 0x07(ICM-45686),但 Configurator 不知道 0x07 代表什麼。

一個修復方案已提交至 BetaFlight(PR #15009),並於 2026 年 3 月 20 日合併。Configurator 不再依賴硬編碼的感測器列表,而是透過 CLI 動態查詢飛行控制器支援的感測器名稱。這完全消除了同步問題。

時間問題

我們的韌體分支創建於 2026 年 3 月 15 日 — 修復合併前五天。這意味著從該分支構建的任何韌體都會出現 ICM-45686 顯示錯誤。更新到主分支(PR 合併後)構建的韌體立即解決了問題。

更新後,Configurator 在感測器標籤頁中正確顯示了 ICM-42688(以及延伸的 ICM-45686)感測器名稱。

通用感測器測試韌體

為了簡化對三種 TFC1 硬體變體(ICM-45686、ICM-42688、MPU-6000)的測試,建構了一個單一韌體影像,可自動偵測板子上存在的任何 IMU。該影像在 ICM-45686 和 ICM-42688 變體上測試並成功偵測。MPU-6000 版本在 Waveshare RP2350B-CORE 板子上運作正常,但由於 USB 枚舉問題阻止進入燒錄模式,實際 TFC1 硬體上的測試仍在等待中。

自動偵測韌體消除了為每個硬體版本構建和燒錄不同韌體的需要 — 這是一個開發和現場除錯的生活品質改進。

有任何問題?需求?建議?

我們期待聽到您的聲音!

您正在尋找