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

AWR1642BOOST: AWR1642 MCAN无法检测到 Bus Off已结束

Part Number:AWR1642BOOSTOther Parts Discussed in Thread:AWR1642

我们的车载项目使用了AWR1642 SOC芯片,在使用MCAN模块的功能时遇到了无法检测出CAN BUS OFF已经结束的问题。我们在进行BUS OFF测试时,将CAN_H和CAN_L连续短接一段时间,这期间可通过读取寄存器MCAN_IR中BO的值来判断已经发生了BUS OFF,问题点在于,短接结束后再读取寄存器MCAN_IR中BO的值仍然为0x1,这就造成了CAN_H和CAN_L短接结束了,却无法判断出来。我们想了解下将CAN_H和CAN_L短接时和结束短接时,哪些寄存器的值发生了相应的变化?这样我们就能判断出BUS OFF的短接已经结束了,以便在规定的时间内完成BUS OFF的恢复工作。

Chris Meng:

你好,

能否参考一下下面论坛讨论的内容?

AWR1843: CANFD Bus Off interrupts vs Bus Off protocol status – Sensors forum – Sensors – TI E2E support forums

,

忡明:

这个问题和我的问题有点区别

,

忡明:

我的问题等同于这个链接的问题e2echina.ti.com/…/awr1642-mcan-bus-off

,

Chris Meng:

你好,

在bus off时候是可以收到相关中断的。请问你是否有使用mmwave sdk3.5?是否有使能相关中断?

C:\ti\mmwave_sdk_03_05_00_04\packages\ti\drivers\canfd\src\canfd.c

static void CANFD_MCANInt0Isr (uintptr_t arg){ CANFD_MessageObject* ptrCanMsgObj; CANFD_DriverMCB* ptrCanFdMCB; uint32_t baseAddr; uint32_t intrStatus; uint32_t index, status, buffIndex; MCAN_RxNewDataStatus newDataStatus;

/* Get the pointer to the CAN Driver Block */ ptrCanFdMCB = (CANFD_DriverMCB*)arg;

/* Increment the number of interrupts received */ ptrCanFdMCB->interrupts++; baseAddr = ptrCanFdMCB->hwCfg.regBaseAddress;

intrStatus = MCAN_getIntrStatus(baseAddr); MCAN_clearIntrStatus(baseAddr, intrStatus);

/* Process Bus-Off condition */ if ((intrStatus & MCAN_INTR_SRC_BUS_OFF_STATUS) == MCAN_INTR_SRC_BUS_OFF_STATUS) { /* Increment the number of interrupts received */ ptrCanFdMCB->busOffInterrupts++;

,

忡明:

我们使用的SDK是这个版本mmwave_sdk_03_05_00_04,我们主要目的是找到可判断的条件,停止BUS_OFF(取消短接CAN_H和CAN_L)时,这些条件能判断出来BUS_OFF已经停止了。中断回调函数CANFD_MCANInt0中有一条语句IsrptrCanFdMCB->interrupts++,按理来说可作为判断条件。目前我们的MCAN没有开启中断,这个情况可先验证下是否可行。

赞(0)
未经允许不得转载:TI中文支持网 » AWR1642BOOST: AWR1642 MCAN无法检测到 Bus Off已结束
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1