主题中讨论的其他器件:SEGGER、 HALCOGEN
您好!
TRM 第8.4.10章的说明和寄存器内容似乎相互冲突。
说明:测试将始终失败:
但是说明希望通过将第4位(FAULT_INS)设置为值0来提供无故障运行检查的选项。 但根据我的经验、尽管 FAULT_INS 位值、STC 自检将始终失败、这种行为是否应该发生? SafeTI-library 状态检查器 sl_SelfTest_Status_STC ()-fucntion 返回 true 并标记 ST_FAIL、即使 FAULT_INS=0至"ST_Result"、"CPU1Failure"和"CPU2Failure"变量、因此"TimeoutFailure"是 ST_PASS、因此不会发生。
第二个问题是自检期间 STCTPR 寄存器中的超时值。 当运行自检(STCSCSCR 位 selfcheck_key == 0xA)时、最大值0xFFFFFFFF 会在某个位置挂起 CPU、而如果"STC_run"作为 sl_SelfTest_STC ()函数的参数给出、则相同的值有效。 在自检/相位中、值0x1000挂起 CPU、至少值0x100和更小的值起作用...
这里是代码、其中启动测试的行为取决于所选的超时值
stcSelfTestConfig.stcClockDiv = 0; /* STC 时钟分频器= 1 */
stcSelfTestConfig.intervalCount = 1; /*仅一个时间间隔*/
stcSelfTestConfig.restartInterval0 = true; //从间隔0开始*/
stcSelfTestConfig.timeoutCounter = 0x100U;// 0x1000 ---不起作用,挂起 CPU; //超时计数器*/
_sl_HoldNClear_nError();
SL_SelfTest_STC (STC_COMPARE_SELFCHECK,TRUE,&stcSelfTestConfig);
这里是实际工作的 STC 测试示例、其中 STC_MAX_TIMEOUT 为0xFFFFFFFF、这起作用
stcSelfTestConfig.stcClockDiv = 0; /* STC 时钟分频器= 1 */
stcSelfTestConfig.intervalCount = 24; /*仅一个时间间隔*/
stcSelfTestConfig.restartInterval0 = true; //从间隔0开始*/
stcSelfTestConfig.timeoutCounter = STC_MAX_TIMEOUT; /*超时计数器*/
sl_SelfTest_STC (STC_run、true、&stcSelfTestConfig);