在诊断模式下、我使用产品数据表第61页注释中详述的过程对 CRC 校验硬件进行测试。
来自数据表:
在诊断状态下、可以执行检查以确认 CFG_CRC_ERR
当 SAFETY_CFG_CRC 寄存器中存储的值不匹配时、该位会设置为1
和 CRC8涵盖的配置寄存器计算得出的值。 如果
CFG_CRC_EN 在 CFG_CRC_ERR 位设置为1时清零、然后是器件
转换至安全状态、设置 EE_CRC_ERR 位并清除 CFG_CRC_EN 位。 更改为
为了避免这种向安全状态的转换、必须通过运行来清除 CFG_CRC_ERR 位
设置 EE_CRC_CHK 位来设置 EEPROM CRC。 在 EPPROM CRC 运行时、
EE_CRC_ERR 位被置位。 假设 EEPROM CRC 良好、两者都是
EE_CRC_ERR 和 CFG_CRC_ERR 位被清除。 以检查 CFG_CRC_ERR 位是否为
0对于匹配的 CRC、匹配的 CRC 值应存储在 SAFETY_CFG_CRC 中
寄存器。 然后、必须将 CFG_CRC_EN 位清零并再次设置为1、这样才能重新运行
配置寄存器上的 CRC、导致 CFG_CRC_ERR 位为0。
当系统从断电状态启动时、此功能按预期工作。 当 EE_CRC_EN 置1时、EE_CRC_ERR 标志会立即置1。 大约800uS 后、EE_CRC_ERR 和 CFG_CRC_ERR 标志会按预期清除。 代码通过遵循注释中列出的过程正常退出。
当使用 IGN 引脚在 POST_RUN_RST=1和 IGN_PWRL=1的情况下对系统进行循环时、相同的代码会失败。 通过设置 CFG_CRC_ERR 标志、CFG_CRC_EN 过程按预期工作。 当 EE_CRC_CHK 被置位时、EE_CRC_ERR 位永远不会被置位以指示正在进行检查。 ~800uS 后、该过程不会清除 CFG_CRC_ERR 标志、从而使软件处于停滞状态、等待 CFG_CRC_ERR 清零、指示 EE_CRC 测试成功完成。
我假设一些寄存器值或内部过程在 IGN 与加电下不会重新设置相同的值、但无法精确定位。 图5-16器件控制器状态图表示这两条路径(IGN 和上电)都应导致电源进入复位状态、我假设这会使所有内部值复位、而与启动复位的值无关。
您能否解释两个复位启动器(上电和 IGN 重新排序)之间可能有何不同、以及这可能会如何影响 EE_CRC_EN 响应?
谢谢