IO口模拟 IIC 读取 BQ20Z95读取电量信息 这样的方法对吗?
这个程序 能读到 数据 但是 不知道为什么 每次都出来的都不太一样 有时是实际的一半 有时 又莫名的出现了一个 0X17 难道是时 BQ20Z95 再向M3 写数据也会先给个0X17 写数据吗 打个比方 我现在电量是100 有时收到的数据是0X64 有时收到的是 0X32 有的时候 会是0X17 求大神指导下 我的问题 到底在哪儿。我邮箱:wujc@gwsoft.com.cn MR_WU
IIC_Start();
IIC_Send_Byte(0X16|0x00);//»
IIC_Ack();
IIC_Send_Byte(0X0e);
IIC_Ack();
IIC_Start();
IIC_Send_Byte(0X16|0x01);
IIC_Ack();
buf[0]=IIC_Read_Byte();
IIC_Stop();
自己给自己回复下哈 问题找到了 用逻辑分析仪 做了波形分析 程序 流程是 start +send(16 )+ack +send(0x0d )+ ACK +start +send(0x17 ) +ack +dlay_ms(2) +Read(1byte)+Nack clk=16us 希望对你们有帮助
首先得确保模拟IIC的时序正确。
你可参考这个顺序来读取BQ20Z95的数据:
Start + Device address + Write + ACK + Command + ACK + Sr +Device address + Read + ACK + Byte #0 + ACK + Byte #1 +ACK + PEC + NACK + Stop
举个例子,要读Full Charge Capacity 0x10,则:
Read Word: cmd=10, result=AB 0A
16 10 17 AB 0A 13(H)
谢谢