你好。
我 对 efuse 错误有疑问。
ESM 错误标志组1通道40未被置位、我不知道这 种情况下的原因。
以下 代码是 "sys.selftest.c"中的"efcStuckZeroTest"。
在该函数中、将 "EFC_instruction_info_EN"替换为 "UINT32 ERROR_Checks "。
执行 "efcREG->BOUNDARY = output_enable;"。
我认为这些操作将 为 ESM 组1通道40设置一个单一位错误。
*
/* sourceId:selftest_sourceId_012 */
/* DesignId:selftest_DesignId_014 */
/*要求:HL_SR402 */
布尔 efcStuckZeroTest (空)
{
/*用户代码开始(29)*/
/*用户代码结束*/
uint32 ESM_ESTATUS4、ESM_ESTATUS1;
布尔结果= false;
uint32 error_Checks = EFC_instruction_info_EN |
EFC_instruction_error_EN |
EFC_Autoload_error_EN |
EFC_self_test_error_EN ;
/*为自动加载错误、指令信息、
指令错误和使用边界寄存器的自检错误
驱动值1与所有错误*/
efcREG->BOUNDARY =((uint32) output_enable | error_checks);
/*从引脚寄存器读取。 该寄存器保存当前值
误差的数量。 该值应为0x5c00。如果不是至少一个
上述错误卡在0。 *
if ((efcREG->引脚& 0x5C00U)== 0x5C00U)
{
ESM_ESTATUS4 = esmREG->SR4[0U];
ESM_ESTATUS1 = esmREG->SR1[2U];
/*检查 ESM 组1通道41是否被置位并且组3通道1是否被置位*/
如果(((ESM_ESTATUS4 & 0x200U)=0x200U)&&((ESM_ESTATUS1 & 0x2U)=0x2U)
{
/*卡在零测试通过*/
结果= true;
}
}
/*将引脚恢复为低电平*/
efcREG->BOUNDARY = output_enable;
/*清除组1标志*/
esmREG->SR4[0U]= 0x200U;
/*清除组3标志*/
esmREG->SR1[2U]=0x2U;
/*一旦 LTC 计数器到期,nERROR 引脚将变为非活动状态*/
esmREG->EKR = 0x5U;
返回结果;
}
此致