首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 移植 LTC2943 電源驅動:I2C 通訊正常但暫存器全讀為 0 的排查方向

     編輯:程式設計綜合問答

現象

Android 4.4 移植 LTC2943 燃料計 IC,編譯與 I2C 傳輸層皆通過,但系統啟動後讀取所有暫存器皆為 0。

排查清單

  1. 裝置樹 / Board 檔案:確認 .dts 中 ltc2943 節點的 reg (I2C 位址)、compatible、interrupt (若支援 ALERT 腳位) 設定正確。
  2. 驅動 Probe 時機:驅動是否在電源管理子系統就緒前註冊?檢查 module_init 優先級或 late_initcall。
  3. 電源域 / Regulator:IC 是否已上電?確認 vdd regulator 在驅動 probe 前啟用,且電壓符合規格。
  4. I2C 速率:LTC2943 最高 400kHz,檢查總線速率設定 (i2c_bus.frequency)。
  5. 暫存器鎖定/休眠:部分燃料計需寫入解鎖序列或退出 Sleep 模式才能讀寫,參考 Datasheet CONTROL 暫存器。
  6. Kernel Log:dmesg | grep -i ltc2943 看驅動是否印出偵測訊息、錯誤碼。

關鍵指令

# 手動讀取暫存器確認硬體
i2ctransfer -y 4 w1@0b0110000 0x00 r1   # 讀取 0x00 暫存器

參考資源

  • Kernel 文件:Documentation/power/supply/ltc2943.txt
  • 類似移植案例:android sensor driver porting, android power supply driver
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved