Other Parts Discussed in Thread: BQ25703
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 functions
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?