BQ27510-G2读不到寄存器值
芯片的IIC通信是有应答的,但是我读了很多寄存器,像VOLT、TEMP、AI,读到的值都是0xFF7F。
我没有对芯片做任何的初始化(目前我也不知道要怎么初始化);热敏电阻没有接(我是和BQ24192配合,BQ27510接了103之后,BQ24192寄存器值有些不正常了,所以只能去掉了);REF2.5V 引脚是正常的。
不知道是什么原因引起的读不到寄存器的值?
目前还没有EV2400等工具,所以现在只想读取 电压、电流等一些值
TI提供了用MSP430 MCU I2C读写Gauge的示例代码,:http://www.ti.com.cn/analog/cn/docs/litabsmultiplefilelist.tsp?literatureNumber=slva413a&docCategoryId=1&familyId=412
读取电压是不需要配置的,主要检查一下程序代码,适当降低通信速率是否能够改善以及数值是否没有正确处理。
用示波器抓取一下读取电压的波形,与论坛里这个帖子的波形进行比较。
http://www.deyisupport.com/question_answer/analog/battery_management/f/35/t/46539.aspx
今天看了IIC的波形,从波形上看,发送0xAA后马上得到ACK,发送寄存器地址后ACK比较慢,但是后面的数据确实是低位 0x7F 高位0xFD 电压是64895mV肯定不对。
后面8位的SCL不知道为什么上不去了。
板子上这个模拟的IIC带了的其他3个设备都没问题啊
还有两个分别读取LSB 和MSB的波形图,都是0x7F。
LSB:
MSB:
代码:
IIC_Start(); IIC_Send_Byte(BQ27510_ADDR); IIC_Wait_Ack(); IIC_Send_Byte(bq27510CMD_VOLT_LSB); IIC_Wait_Ack(); IIC_Start(); IIC_Send_Byte(BQ27510_ADDR+1); IIC_Wait_Ack(); BQ27510temp[0] = IIC_Read_Byte(0); // BQ27510temp[1] = IIC_Read_Byte(0); IIC_Stop();
有没有尝试更换一个IC看是否正常,另外BQ27510最新的是G3版本的,建议使用最新版本的芯片。
两个IC都是这种情况,我已经快放弃这颗芯片了