TI中文支持网
TI专业的中文技术问题搜集分享网站

RM57L843: 关于SL_SelfTest_CAN( )诊断API的retVal始终返回0的问题

Part Number:RM57L843

你好,目前我们从SL_RM57L843_NoOS移植了SL_SelfTest_CAN( )这个API,但是试了很多种方式包括更改HCG的配置(勾选了CAN的Enable Ram ECC),或者换它形参列表里的测试类型,发现它的返回值retVal始终是0,也就是说这个API根本没起到任何作用,也不知道问题究竟出在了哪里,还望指教 谢谢~

另外,我想问一下,像这个API,它假如检测出 ECC SECDED 机制真的出现了异常,将通过什么形式反馈给我呢

 

Green Deng:

你好,工程师将在工作时间为你解答。

,

Cherry Zhou:

您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!

,

Cherry Zhou:

yuyang xie 说:更改HCG的配置

您好,如果不调用 canInit() ,那么 CAN 模块处于复位状态,并且 HAL GUI 中的 CAN RAM ECC 配置未编程为 CAN 控制寄存器。

如果 CAN 模块处于复位状态,自检将返回 PALSE。

如果 CAN 模块已复位,但 CAN ECC (PMD) 未使能,则自检功能返回 false。

如果两者都为 true ,如果在测试后未设置错误标志,则自检将返回 false。

,

yuyang xie:

它这个上面说的ture和false有点模糊不是太清楚,是不是就像您说的,就是说当CAN未复位、PMD未使能,并且如果真的检测到SECDED机制出现了问题,这三种情况下它都会返回false是嘛?

,

yuyang xie:

我发现加了初始化,并关闭ECC后,程序正常,但是返回0

但是打开ECC后,程序直接跑进了一个中断,就像下图这样,请问是为啥呀

,

Cherry Zhou:

抱歉回复晚了。

可以通过 CAN 控制寄存器中的 PMD 位域使能或禁用 SECDED 功能。 如果使能了 SECDED,将会自动生成并检查 ECC 位。 向 CAN CTRL 寄存器写入值不应导致数据中止。

即使检测到 2 位 ECC 错误,也不会产生数据中止。但 ECC 控制和状态寄存器中的 DEFLG 以及error、状态寄存器中的每一位都会被置位。

,

yuyang xie:

没事儿,您说的这个ECC寄存器的位被置位了之后,按理说也不会导致程序跑飞呀, 然后我把这个工程上传上去了,至今没能找出问题出在了哪儿,您要是有空的话能帮忙看一下吗,感谢感谢~

Project_1.rar

,

Cherry Zhou:

好的帮您再跟进给工程师问下,预计下周工作日内给您答复哈。

,

yuyang xie:

好的,感谢~

,

Cherry Zhou:

您好,工程师这边测试过了,但是他这边没有任何问题。

请问下ESM 状态寄存器、 CP15 数据故障状态寄存器、地址寄存器以及 R14_abt 中的值是多少?

,

yuyang xie:

我发现一个问题,就是关于PMD的使能,数据手册里和CCS里关于这个寄存器的描述不一样,然后我现在设置成了0x01,发现不进入之前那个中断了,但是它的返回值依旧是0,照理说我把该打开的都打开了已经。

,

Cherry Zhou:

好的已经帮您反馈给工程师了哈,有答复尽快回复您。

,

Cherry Zhou:

抱歉回复晚了,请参考以下帖子:

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1091539/rm57l843-regarding-the-problem-that-the-retval-of-the-sl_selftest_can-diagnostic-api-always-returns-0?tisearch=e2e-sitesearch&keymatch=SL_SelfTest_CAN%2528

赞(0)
未经允许不得转载:TI中文支持网 » RM57L843: 关于SL_SelfTest_CAN( )诊断API的retVal始终返回0的问题
分享到: 更多 (0)