news 2026/4/18 11:09:53

RK3588 Android12开发板充电调试踩坑记:BQ25703地址写错,CW2017参数不对,我这样解决的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RK3588 Android12开发板充电调试踩坑记:BQ25703地址写错,CW2017参数不对,我这样解决的

RK3588 Android12开发板充电调试实战:从错误日志到解决方案的完整思考路径

凌晨三点,示波器的荧光在昏暗的实验室里格外刺眼。当第37次尝试读取BQ25703的Chip ID依然返回-6时,我开始怀疑人生——这到底是硬件问题、软件配置错误,还是芯片规格书在说谎?作为嵌入式开发者,这种"明明按照文档操作却死活不工作"的经历实在太熟悉了。本文将完整还原我在RK3588 Android12开发板上调试BQ25703充电IC和CW2017电量计时踩过的坑,以及如何通过系统化思维最终解决问题。

1. 问题现象与初步分析

系统启动后,通过dmesg命令查看内核日志,发现两条关键错误信息:

[ 10.068822] bq25700-charger 6-006d: Error applying setting, reverse things back [ 10.068830] bq25700-charger: probe of 6-006d failed with error -22

以及CW2017相关的错误:

[ 10.068681] cw2017 6-0063: battery-profile must be 80 bytes [ 10.068685] cw2017 6-0063: Failed to parse cw2017 properties

错误分析思路

  1. 错误码解读

    • -22在Linux内核中对应EINVAL,表示无效参数
    • battery-profile must be 80 bytes明确指出了参数长度问题
  2. 问题分类

    • BQ25703:配置冲突或硬件通信问题
    • CW2017:电池参数格式不正确

提示:遇到驱动加载失败时,首先关注probe failed的错误码和具体描述,这往往能直接指向问题根源。

2. CW2017电量计调试:参数格式的陷阱

CW2017电量计的报错相对明确——电池参数长度不符合要求。但在实际调试中,我发现几个关键点:

参数长度差异

型号参数长度备注
CW201568字节旧版电量计
CW201780字节需要完整配置所有参数

常见错误来源

  1. 直接复制粘贴网上找到的CW2015参数
  2. 参数数组缺少必要的填充字节
  3. 字节序或数据类型定义错误

正确的设备树配置

cw2017: cw2017@63 { status = "okay"; compatible = "cellwise,cw2017"; reg = <0x63>; cellwise,battery-profile = /bits/ 8 < 0x5A 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x9E 0xC8 0xD2 0xC5 0xC2 0xCF 0x53 0x25 /* 完整80字节参数 */ >; cellwise,dual-cell = <1>; cellwise,monitor-interval-ms = <5000>; cellwise,alert-level = <10>; cellwise,design-capacity-amh = <5000>; power-supplies = <&bq25703>; };

调试技巧

  • 使用hexdump工具验证参数长度
  • 与硬件工程师确认电池特性参数
  • 在用户空间通过sysfs节点测试参数写入

3. BQ25703通信失败:规格书不可全信

当CW2017问题解决后,BQ25703仍然报错:

[ 18.446271] wgf:bq25700 --> Chip ID : -6 [ 18.446277] bq25700-charger 6-006d: Cannot read chip ID.

系统化排查步骤

  1. 硬件层检查

    • 确认电源供电正常(3.3V和5V)
    • 检查I2C上拉电阻(通常4.7kΩ)
    • 测量SCL/SDA信号质量(示波器观察)
  2. 软件层验证

    • 降低I2C时钟频率测试(从400kHz降到10kHz)
    • 尝试不同的I2C总线
    • 使用i2c-tools手动探测设备地址
  3. 关键发现: 规格书标注的I2C地址是0x6D,但实际使用0x6B才能正常通信:

# 使用i2c-tools探测设备 i2cdetect -y 6 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- 5b -- -- 60: -- -- -- 63 -- -- -- -- -- -- 6b -- -- -- -- --

最终正确的设备树配置

bq25703: bq25703@6b { status = "okay"; compatible = "ti,bq25703"; reg = <0x6b>; interrupt-parent = <&gpio0>; interrupts = <RK_PB7 IRQ_TYPE_LEVEL_LOW>; ti,charge-current = <2500000>; ti,max-input-voltage = <20000000>; /* 其他必要参数 */ };

4. 电流限制引发的系统不稳定

在解决基本通信问题后,又遇到一个隐蔽的bug:系统在不接电池时会出现反复重启。通过以下步骤定位问题:

  1. 日志分析

    • 系统在启动过程中突然复位
    • 电源管理子系统无异常日志
  2. 电源监测

    • 发现DC输入电压在启动时跌落
    • 电流被限制在500mA(SDP模式默认值)
  3. 问题根源: 设备树中ti,input-current-sdp配置过低:

/* 修改前(问题配置) */ ti,input-current-sdp = <500000>; // 500mA /* 修改后(正确配置) */ ti,input-current-sdp = <2500000>; // 2.5A

电源配置经验总结

  • 始终考虑最坏情况下的电流需求
  • 测试不同电源模式(电池/DC/USB供电)
  • 监控系统启动过程的电流波形

5. 调试方法论与工具链

通过这次调试,我总结出一套嵌入式电源调试的方法:

调试工具组合

  1. 硬件工具

    • 示波器(查看I2C波形、电源纹波)
    • 逻辑分析仪(长时间捕获通信数据)
    • 可调电源(模拟不同输入条件)
  2. 软件工具

    • i2c-tools(i2cdetect, i2cget, i2cset)
    • sysfs接口实时监控电源状态
    • power_supply内核子系统调试信息

典型调试流程

  1. 确认硬件连接正确(电源、信号线)
  2. 验证基础通信(I2C/SPI设备地址)
  3. 检查设备树配置(寄存器地址、参数格式)
  4. 监控运行时行为(电流、温度等传感器数据)

在RK3588这类复杂SoC平台上,电源管理往往涉及多个子系统协同工作。保持耐心、系统化地排除问题,才是解决这类复杂调试问题的关键。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 11:09:45

测试数据隐私趋势:GDPR与CCPA合规比较 —— 软件测试从业者实战指南

数字时代的合规测试新战场在数据驱动的全球商业环境中&#xff0c;软件测试的疆域已从传统的功能、性能验证&#xff0c;扩展到数据隐私与安全这一至关重要的合规领域。欧盟《通用数据保护条例》与美国《加州消费者隐私法案》的相继实施&#xff0c;不仅重塑了企业的数据处理模…

作者头像 李华
网站建设 2026/4/18 11:09:43

免费解锁Cursor AI Pro功能:告别试用限制的终极解决方案

免费解锁Cursor AI Pro功能&#xff1a;告别试用限制的终极解决方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your t…

作者头像 李华
网站建设 2026/4/18 11:09:42

WeMod增强器终极指南:三步免费解锁专业功能完整教程

WeMod增强器终极指南&#xff1a;三步免费解锁专业功能完整教程 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer WeMod增强器是一款专为游戏玩家设计的开…

作者头像 李华
网站建设 2026/4/18 11:09:35

B站CC字幕下载完整指南:3分钟学会免费获取B站视频字幕

B站CC字幕下载完整指南&#xff1a;3分钟学会免费获取B站视频字幕 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 还在为无法保存B站视频字幕而烦恼吗&#xff1f…

作者头像 李华
网站建设 2026/4/18 11:08:54

Anthropic Labs 推出 Claude Design:与 Claude 协作创建精美视觉作品

介绍 Anthropic Labs 的 Claude Design2026 年 4 月 17 日&#xff0c;Anthropic Labs 推出了 Claude Design&#xff0c;这是一款能让用户与 Claude 协作&#xff0c;创建精美的视觉作品&#xff0c;如设计稿、原型、幻灯片、单页资料等的新产品。Claude Design 由功能最强大的…

作者头像 李华
网站建设 2026/4/18 11:07:42

你的服务器密码够安全吗?一个脚本快速检测Linux密码策略合规性

你的服务器密码够安全吗&#xff1f;一个脚本快速检测Linux密码策略合规性 每次服务器被攻破后&#xff0c;安全报告里总会出现那句熟悉的结论&#xff1a;"弱密码是导致此次入侵的主要原因"。作为运维工程师&#xff0c;我见过太多因为密码策略松懈引发的安全事故—…

作者头像 李华