bq30z554-R1读取电量的问题
//设置了两个宏定义
#define RelativeStateOfCharge 0x0D //读取剩余电量的寄存器
#define SLAVE_ADDRESS 0x10 //16是写 17是读
//读取芯片寄存器
u16 Signal_Read(unsigned char readaddr)
{
u16 reg_data1,reg_data2,reg_data;
IIC_Start();
IIC_Send_Byte(SLAVE_ADDRESS);
IIC_Wait_Ack();
IIC_Send_Byte(readaddr);
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(SLAVE_ADDRESS+1);
IIC_Wait_Ack();
reg_data1=IIC_Read_Byte(1);
reg_data2=IIC_Read_Byte(0);
IIC_Stop();
reg_data=(reg_data2<<8)+reg_data1;
return reg_data;
}//这个这个i2c时序我成功读取过别的芯片的寄存器,时序应该没问题
我是按照如下的时序进行读取的:
//在主函数中读取剩余电量
i=Signal_Read(RelativeStateOfCharge);
是否这样就可以直接读取出电量呢,我没有配置任何寄存器,就是直接从0x0D寄存器中直接读取的数据。但是没有成功,返回的值是0xffff。还要怎样调试才能正确读取出电量呢,谢谢。
没有CRC校验么?
请按照SBS1.1 通讯标准。或者可以用monitor直接看以下EV2300是如何发送指令帧的