Hi,
I have designed a sample board to play with the BQ25703A, the problem is that I can read and write every register, but when I try to write these commands,
ChargeCurrent,MinSystemVoltage,
BQ25703A seems to reset and do not accept the commands.
Also when the battery pack is disconnected the ChargeOption0 command would take effect, but when I connect the battery pack it would not get the values.
Here is some parts of my code
int status;
//ChargeOption3 Reset All Registers to default
BQ25703WriteReg(0x34,0x6000);
//ChargeOption0
BQ25703WriteReg(0,0x060E);
status=BQ25703ReadReg(0x0);
//ChargeOption1
BQ25703WriteReg(0x30,0x9211);
status=BQ25703ReadReg(0x30);
//ChargeOption2
BQ25703WriteReg(0x32,0x02BF);
status=BQ25703ReadReg(0x32);
//ChargeOption3
BQ25703WriteReg(0x34,0x0000);
status=BQ25703ReadReg(0x34);
//ProchotOption0
BQ25703WriteReg(0x36,0x4A54);
status=BQ25703ReadReg(0x36);
//ProchotOption1
BQ25703WriteReg(0x38,0x1000);
status=BQ25703ReadReg(0x38);
//ADCOption
BQ25703WriteReg(0x3A,0xE0FF);
status=BQ25703ReadReg(0x3A);
//MaxChargeVoltage
BQ25703WriteReg(0x04,0x41A0);
status=BQ25703ReadReg(0x04);
//ChargeCurrent @1A
BQ25703WriteReg(0x02,0x0400);
status=BQ25703ReadReg(0x02);
//MinSystemVoltage @14.336V
BQ25703WriteReg(0x0C,0x3800);
status=BQ25703ReadReg(0x0C);
//IIN_HOST @1A
BQ25703WriteReg(0x0E,0x1400);
status=BQ25703ReadReg(0x0E);
//InputVoltage @8.192
BQ25703WriteReg(0x0A,0x2000);
status=BQ25703ReadReg(0x0A);
//OTGVoltage @12.67V
BQ25703WriteReg(0x06,0x2000);
status=BQ25703ReadReg(0x06);
//OTGCurrent @1.6A
BQ25703WriteReg(0x08,0x2000);
status=BQ25703ReadReg(0x08);
read and write functons
void BQ25703WriteReg(int add,int data)
{
static HAL_StatusTypeDef mySTs;
unsigned char write_message[3];
write_message[0]=add;
write_message[1]=data;
write_message[2]=data>>8;
mySTs=HAL_I2C_Master_Transmit(&hi2c1,BQ25703_ADD,write_message,3,1000);
}
int BQ25703ReadReg(int add)
{
int res=0;
unsigned char write_message[1];
write_message[0]=add;
unsigned char read_data[2]={0};
HAL_I2C_Master_Transmit(&hi2c1,BQ25703_ADD,write_message,1,1000);
//start to read RTC Data
HAL_I2C_Master_Receive(&hi2c1,BQ25703_ADD,read_data,2,1000);
res=(read_data[1]<<8) | read_data[0];
return res;
}
Do you have any Idea what's wrong?