This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于bq27220更改电池容量的疑问

Other Parts Discussed in Thread: BQ27220

我们的电源设计是容量可以扩展的设计,所以otp模式应该是用不了的。

在平台初始化的时候想通过I2c来动态的更改bq27220的设计容量,但我根据文档上的流程修改总是失败。请问我们该如何进行初始化?以下是我初始化的代码,希望指点一下。

难道直接初始化ram还需要加7.4v电压吗?

ret = write_I2C_bq(2,0x00, 0x01, 0x00); // 0x41
ret = write_I2C_bq(3,0x00, 0x14, 0x04); // 0x41
ret = write_I2C_bq(3,0x00, 0x72,0x36); //

ret = write_I2C_bq(3,0x00, 0xFF,0xFF); // for test, full access
ret = write_I2C_bq(3,0x00, 0xFF,0xFF); // for test, full access


ret = write_I2C_bq(3,0x00, 0x90,0x00); // for test, Enter in CFG_UPDATE
{nrf_delay_ms(2000);}

ret = write_I2C_bq(3,0x3e,0x9f,0x92);

ret = read_I2C_bq(1,0x60,0, &Decap_l);
printf("old_chksum1111111 ==============%x\r\n",Decap_l);
ret = read_I2C_bq(1,0x61,0, &Decap_l);
printf("Data_len11111111 ==============%x\r\n",Decap_l);

ret = read_I2C_bq(1,0x40,0, &Decap_l);
printf("old_dc_msb 1111111 ==============%x\r\n",Decap_l);
ret = read_I2C_bq(1,0x41,0, &Decap_l);
printf("old_dc_lsb 11111111 ==============%x\r\n",Decap_l);
if(ret != true) return ret;
{nrf_delay_ms(2000);}
ret = write_I2C_bq(3,0x40, 0x13,0x88);
ret = read_I2C_bq(1,0x60,0, &temp1); // Read 0x60 Old_Chksum
ret = read_I2C_bq(1,0x61, 0,&temp2); // Read 0x61 data_len

ret = read_I2C_bq(1,0x40,0, &Decap_l);
printf("design cap high222222 ==============%x\r\n",Decap_l);
ret = read_I2C_bq(1,0x41,0, &Decap_l);
printf("design cap low2222222 ==============%x\r\n",Decap_l);

ret = write_I2C_bq(3,0x60, 0xb0,0x24);


ret = write_I2C_bq(3,0x00, 0x91,0x00); // for test, Enter in CFG_UPDATE/

ret = read_I2C_bq(1,0x3b,0, &Decap_l);
{nrf_delay_ms(1000);}


ret = write_I2C_bq(3,0x00, 0x30,0x00); // return to SEALED mode

在这里读取3c,3d寄存器,仍然是默认的3000ma