主题中讨论的其他部件:BQ2.7426万
工具/软件:Linux
我正在为主线Linux驱动程序/电源/电源/bq27xxx_battery. c开发补丁集,以启用从设备树条目配置以下量表DM字段:DesignCapacity,DesignEnergy,TerminateVoltage。
TI的Andrew Davis向我介绍了以下代码,他负责驱动程序的维护。 写入DM块后,它将读取其校验和,以验证它是否与发送的校验和: http://git.ti.com/bms-linux/bqtool/blobs/master/gauge.c#line330匹配
该故障码可能损坏仪表。
我将上述bqtool逻辑应用于我的增补软件集,我们已经在两个器件上成功测试了将近100次。 我犯了一个错误,写后使用比bqtool更小的延迟(BlockDataChecksum, v)。 这导致相关DM损坏(子类82,块0)。 即使在从以下文档中将DM重置为系统默认值后,电量计也无法正确测量电池。 http://www.ti.com/lit/ds/symlink/bq2.7425万-g2a.pdf
我注意到另一个DM字段超出范围(子类105,偏移0),但我无法将其重置为CPU_to_be32 (0x3ef1205c),十六进制自:Perl -e 'printf ("%08x\n"),解包("i",pack ("f",0.4.7095万)))'
我计划在主线驱动程序中记录此硬件错误,如下所示: https://github.com/networkimprov/linux/blob/anvl-v4.9 bq27x-dt-dc/drivers/POWER/supply_bq27xxx_battery.c#L880 8.1
我想知道:
1)为什么我无法重置子类105,偏移0? (注意:在损坏之前,我无法重置子类82,偏移36。)
2) BQ27*系列中的其它仪表是否有此错误? 其中一些模块在不同的DM块中保留DesignCapacity和TerminateVoltage,因此驱动程序可以为第一个块写入(BlockDataChecksum,v),然后立即写入(DataClass, id) write (DataBlock,n),以便读取/修改下一个块。 到今天为止,我唯一要隔离两个此类更新的方法是长时间延迟。
谢谢你。