WinCE设备电池电量采集问题
2014-07-20 16:19
232 查看
这次WinCE操作系统桌面电池图标始终显示小插头图标,表示系统正在使用交流电供电,未使用电池。导致这种现象产生的最表面原因是WinCE电源管理器没有检测到有电池存在。
1 为什么没有检测到电池存在?
电池模块是通过IIC总线与主板通信。电源模块作为IIC总线的从设备,上层主板作为主设备。主设备通过IIC请求从设备信息,并返回信息给WinCE的电源管理器。这里最重要的问题是IIC总线的通信协议有没有用程序正确表达!可以通过研究研华最后一次提供的驱动源码来回答这个问题,在驱动源码中,可以清晰的看见,研华已经将关于IIC的操作封装成了方便调用的函数,如IICOpen(),IICSetSlaveAddress(),IICRead()等,研华为什么要封装好这些函数,因为在主板上使用了三路IIC,检测电池信息只是用到了其中一路,其他设备也用到了IIC总线,所以它们也需要IIC的这些操作函数。所以可以知道我们不必把关注点放在IIC的通信协议上。
第二个原因,也是我现在最怀疑可能出问题的地方是:从设备的地址不正确。和电池提供方沟通的过程中,它们提供了好几个IIC地址,最后一次给的是0b 0001011。也就是16进制的0xB。关于地址,这里有一个非常微妙的细节。它们提供的地址是7位的,第8位根据是读还是写表现不同,如果是读,第8位应该是0,如果是写,第8位应该是1。微妙就微妙在,不管你是读还是写,你都是传进去0xB,而不是0b 0001 0110或者0b 0001 0111。因为最后一位不用你去写,程序会根据你是读还是写自动补齐这一位。所以这里可能是导致IIC没通信上的最可能原因。因为从设备地址搞错了,地址错了,它们肯定就联系不上了。
2 为什么会有这样的总结,因为我们借了一块好的电池,打算用他们的电池试一下,研究所说它们电池地址是0x34,而我们用这个地址去读,怎么也读不出来,用0x68反而能读出来。后来跟卫国斌交流后,他解释说,0x68是0x34左移一位的结果,也就是相当于在0x34的末尾加一个0,而这个0也就是表示读。
综合这一切,我总结出,我们也可能是这个原因导致IIC没有通信上。
1 为什么没有检测到电池存在?
电池模块是通过IIC总线与主板通信。电源模块作为IIC总线的从设备,上层主板作为主设备。主设备通过IIC请求从设备信息,并返回信息给WinCE的电源管理器。这里最重要的问题是IIC总线的通信协议有没有用程序正确表达!可以通过研究研华最后一次提供的驱动源码来回答这个问题,在驱动源码中,可以清晰的看见,研华已经将关于IIC的操作封装成了方便调用的函数,如IICOpen(),IICSetSlaveAddress(),IICRead()等,研华为什么要封装好这些函数,因为在主板上使用了三路IIC,检测电池信息只是用到了其中一路,其他设备也用到了IIC总线,所以它们也需要IIC的这些操作函数。所以可以知道我们不必把关注点放在IIC的通信协议上。
第二个原因,也是我现在最怀疑可能出问题的地方是:从设备的地址不正确。和电池提供方沟通的过程中,它们提供了好几个IIC地址,最后一次给的是0b 0001011。也就是16进制的0xB。关于地址,这里有一个非常微妙的细节。它们提供的地址是7位的,第8位根据是读还是写表现不同,如果是读,第8位应该是0,如果是写,第8位应该是1。微妙就微妙在,不管你是读还是写,你都是传进去0xB,而不是0b 0001 0110或者0b 0001 0111。因为最后一位不用你去写,程序会根据你是读还是写自动补齐这一位。所以这里可能是导致IIC没通信上的最可能原因。因为从设备地址搞错了,地址错了,它们肯定就联系不上了。
2 为什么会有这样的总结,因为我们借了一块好的电池,打算用他们的电池试一下,研究所说它们电池地址是0x34,而我们用这个地址去读,怎么也读不出来,用0x68反而能读出来。后来跟卫国斌交流后,他解释说,0x68是0x34左移一位的结果,也就是相当于在0x34的末尾加一个0,而这个0也就是表示读。
综合这一切,我总结出,我们也可能是这个原因导致IIC没有通信上。
相关文章推荐
- 嵌入设备电池电量
- 用SynCE解决Linux/BSD...下的WinCE/WM设备同步问题
- 如何解决想WinCE设备上复制文件,断电不保存的问题
- 查询ios设备的电池循环次数以及目前的电量
- 获取设备电池电量及状态
- WinCE 电池电量数模转化及百分比转化
- iOS开发-runtime获取设备电池电量
- 获取Android设备电池电量状态
- 【rzxt】巧用电池小工具 电量问题全掌握
- Android设备的电池续航时间优化(Optimizing Battery Life)——(一)监听电池电量和电池的充电状态
- 用SynCE解决Linux/BSD...下的WinCE/WM设备同步问题
- 电量不再是问题 5款最值得推荐的iPhone电池套
- Android设备的电池续航时间优化(Optimizing Battery Life)——(一)监听电池电量和电池的充电状态
- 获取Android设备电池电量状态
- 电池电量问题 BatteryService
- WinCE中解决“图片采集及压缩”问题的开发历程
- 【Android Training - Performance】优化电池续航能力[Lesson 1 - 监测设备的电量与充电状态]
- 手持设备电池电量检测(0)
- 获取WinCE电池电量
- 获取Android设备电池电量状态