我有个笔记本电池,电源芯片的型号是SN8765,查不到资料,貌似是定制芯片。我想使用STM32的软件IIC读取电池电量,使用SMBUS协议的芯片的寄存器地址一般是一样的吧。
从机地址是0x16,单片机读取一直是FF。使用上位机IIC软件读取到值也不准确,例如电池电量0F,读到是一个定值df f3,放电一段时间后还是不变,明显错误。
请问使用单片机读取电量的步骤一般是什么,读取之前还需要解锁吗?
读取部分代码如下,第一次弄这个请勿见笑,谢谢大家了
u8 getBatteryInfo(u8 slaveAddr, u8 Comcode,u8 *data, u8 size) { //uint8_t buff[2]; IIC_Start(); IIC_Send_Byte(slaveAddr);//发送地址 IIC_Wait_Ack(); IIC_Send_Byte(Comcode); //发送命令 IIC_Wait_Ack(); delay_us(750); IIC_Start(); IIC_Send_Byte(slaveAddr+1);//发送地址 IIC_Wait_Ack(); delay_us(50); while(size-1){ *data = IIC_Read_Byte(1); IIC_Ack(); delay_us(10); data++; size--; } delay_us(60); *data++ = IIC_Read_Byte(0); IIC_Stop(); delay_ms(5); }