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

F28377D的DCAN message ID 问题

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Susan Yang:请问您现在是使用自己的板子测试还是TI的launchpad? 现在通信成功了吗?我们的CAN示例程序并非为Launchpad定制,所以对应的I/O初始化可能需要更改成您对应的。另外时钟方面也需要注意。

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Susan Yang:

您直接使用的例程未做修改?下图是我的测试结果

另外附上相关的论坛链接 https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/784738?tisearch=e2e-sitesearch&keymatch=TMS320F280049

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Charles Ji:

回复 Susan Yang:

谢谢您,从您的运行的例程来看好像是用的C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts这个吧,这个例程我试过确实ID 可以更新显示出来,
但我用的是driverlib里的例程 C:\ti\c2000\C2000Ware_1_00_06_00\driverlib\f2837xd\examples\cpu1\can\can_ex2_loopback_interrupts.c 这个例程,id是不更新显示的,忙烦您再帮忙看一下,谢谢

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Susan Yang:

回复 Charles Ji:

请您看一下can_ex2_loopback_interrupts.c内的说明

The CAN peripheral is configured to transmit messages with a specific CAN ID.

该例程使用特定的ID,所以没有更新显示

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Charles Ji:

回复 Susan Yang:

您好, 我还是不能理解,

在我看来can_ex2_loopback_interrupts和 can_loopback_interrupts 这两个例程应该都是同一个功能,两个里面都有The CAN peripheral is configured to transmit messages with a specific CAN ID.这句话,

不同的是can_ex2_loopback_interrupts用的是最新的driverlib ,
而can_loopback_interrupts 用的是deprecated 里的driverlib,所以两个例程的配置函数都是不一样的,

但是can_loopback_interrupts 这个例程,我能看出IFR2ARB 里的ID 位在实时更新的,
而can_ex2_loopback_interrupts这个例程,IFR2ARB 里的ID 位不更新,可以被随便改

我的问题就是,是不是使用新的这个driverlib,需要配置哪个函数,才能读出显示ID 位,:) , 如果我理解的不对,还请您指正

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Susan Yang:

回复 Charles Ji:

试了一下确实在DATA在一直更新,但是ID没有更新。我研究一下后给您回复

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Charles Ji:

回复 Susan Yang:

太感谢了

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Susan Yang:

回复 Charles Ji:

很抱歉,现在才给您回复

我咨询了美国的工程师,他们也是出现了这样的情况,正在修改调试中

http://e2e.ti.com/support/microcontrollers/c2000/f/171/p/799958/2966758#2966758

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Charles Ji:

回复 Susan Yang:

谢谢您,等待中

运行 c2000ware里的F2837xD 的 CAN例程 C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd\examples\cpu1\can_loopback_interrupts, 发现CAN_IF2ARB 寄存器的ID 位 并没有更新成当前接收的message obj的 ID ,请问这是怎么回事?应该怎么配置才能是ID位更新呢?

Charles Ji:

回复 Susan Yang:

您好,请问有结果了吗,我升级到了c2000ware 2.00.2,还是一样的问题。

赞(0)
未经允许不得转载:TI中文支持网 » F28377D的DCAN message ID 问题
分享到: 更多 (0)