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.

BQ27542-G1: 没有找到默认密钥修改及电池识别相关的例程

Part Number: BQ27542-G1


按着如图手册上描述的步骤进行操作,无法修改密钥,可能是哪一步漏了或者误操作,修改完密钥后使用新密钥无法识别,仍然需要使用默认密钥;可不可以在上位机软件Battery Management Studio中查看修改密钥、进行电池识别

程序如下:

unsigned char key[16] = {0x11,0x22,0x45,0x67,0x89,0xAB,0xCD,0xEF,0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10}; //默认{0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10};

security_dm_t->class = (di)->dm_regs[BQ27XXX_DM_UNSEALED_KEY_MSB].subclass_id;
security_dm_t->block = (di)->dm_regs[BQ27XXX_DM_UNSEALED_KEY_MSB].offset / BQ27XXX_DM_SZ;

ret =bq27xxx_battery_unseal(di);
// ret =bq27xxx_battery_fullmode(di);
if(ret < 0)
goto out;

ret = bq27xxx_write(di, BQ27XXX_DM_CTRL, 0, TRUE);
if(ret < 0)
goto out;

ret = bq27xxx_battery_read_dm_block(di, security_dm_t);
if(ret < 0)
goto out;

// di->unseal_key = 0x36720414;

// security_dm_t->data[0] = (uint8_t)(di->unseal_key >> 24);
// security_dm_t->data[1] = (uint8_t)(di->unseal_key >> 16);
// security_dm_t->data[2] = (uint8_t)(di->unseal_key >> 8);
// security_dm_t->data[3] = (uint8_t)(di->unseal_key);

/// Authen Key3 - Key0
memcpy(security_dm_t->data + 8, key, 16);

security_dm_t->dirty = TRUE;

bq27xxx_battery_write_dm_block(di, security_dm_t);

bq27xxx_battery_seal(di);