请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:BQ34110 主题中讨论的其他器件: BQSTUDIO
我在拆封 BQ34110时遇到意外行为。 我已经编写了一个测试例程、在该例程中、我会对 BQ 进行连续密封和解封、并检查状态。 当我执行 unseal (无完全访问)时、会发生意外行为。 状态仅返回密封状态。 只有在我添加了较长的延迟(四秒-下面摘录的第45行)后、我才能够成功地通过未密封的位获得状态。
有趣的是、如果我执行完全解封序列(解封密钥后跟完全访问密钥)、则不需要长时间延迟。 这是预期行为吗? 我在 TRM 中找不到该信息。
不过、我注意到、使用 BQStudio 在单击 unseal 和 unseque_full_acess 按钮后会增加较长的延迟。
下面是测试函数的摘录。 我希望该守则能充分自我扩展。
静态空 test_seal_dunseal (void) { int res; uint16_t wait = 50; //强制取消密封完全访问 { res = bq34110_unseal (&default_keys、true); UTEST_assert (res = 0、""); wait_dicks (wait); } //检查未密封状态 {uint16_keys、trl status = 0xt_ref;trl = uint_ref = uint_status (trl = 0xt_ref);uint_ref = uint_ref = uint_status; UTEST_ASSERT (res =0、""); UTEST_ASSERT (op_status!= ref、""); UTEST_ASSERT ((op_status & 0x0006)= 0x0002、""); } // Seal BQ34110 { uint16_t ref = 0xFFFF; uint16_t op_status = 0x0002、"trl_assert (ctrl_wait = 0_trl);(trl_trl_res_trl、trl_res_rs = b34110);(ctrl、ctrl trl_rs = nl、ctrl、trl、trl、trl、trl、trl、trl、trl、trl、trl、trl、 UTEST_ASSERT (res =0、""); UTEST_ASSERT (op_status!= ref、""); UTEST_ASSERT ((op_status & 0x0006)= 0x0006、""); } //取消 密封(非完全访问){uint16_t ref = 0xFFFF;uint16_t op_status= 0x0006、"* wait_status"(tick = unsef );tick = unquit = unquick (tret = unquit = r等待);(trick = unquick = unquick (r等待)(tret = 80 )(trick = unquick、unquick = r等待);( RES = bq34110_cmd (CMD_OPERATION_STATUS、READ_OP、&OP_STATUS); UTEST_ASSERT (RES = 0、""); UTEST_ASSERT (OP_STATUS!= ref、""); UTEST_ASSIGN (OP_STATUS & 0x0006)= 0x0004、""); } / UTTINT_PRU = 0x110 、UCTR = 0x34t (trl = UCTR = 0x110、UTRF_PRE = 0x16 );UTR_PRU (UTR_PRU = 0x34t = UCTR = 0x110、UCTR = 0xFFFF、UTR_PRE = 0x34t、UTR_PRE = 0x110、UTRF (UTRE RES = bq34110_cmd (CMD_OPERATION_STATUS、READ_OP、&OP_STATUS); UTEST_ASSERT (RES = 0、""); UTEST_ASSERT (OP_STATUS!= ref、""); UTEST_ASSERT (OP_STATUS 和0x0006)= 0x0006、"uEST_ASSERT = 0x0006; } // unt REST_PRICIT = 0x34t (uREFFF = 0x16 );(uREFULT = uPRIT = uPRE = 0x00016)(uENTRE = uREFFF、UTRE = uENTRE = 0x00016)(uREF_PRE = uENTRE = uFFFF、UTRE = uFFFF) RES = bq34110_cmd (CMD_OPERAT_STATUS、READ_OP、&OP_STATUS); UTEST_ASSERT (RES = 0、""); UTEST_ASSERT (OP_STATUS!= ref、""); UTEST_ASSERT (((OP_STATUS & 0x0006)= 0x0002、""); } }