Hi,
I continue to encounter issues while using CAN-FD. I am utilizing the IWR6843AOP integrated into a custom board with modified OOB firmware for CAN usage. My goal is to operate multiple such boards on a common CAN bus. During code debugging, I have made several observations:
A) When I configure mcanCfgParams->errInterruptEnable = 0U
and mcanCfgParams->dataInterruptEnable = 0U
, I am able to operate several boards on the bus. However, in this setup, there are no interrupts for message reception, thus no callbacks are invoked.
B) Conversely, when I set mcanCfgParams->errInterruptEnable = 1U
and mcanCfgParams->dataInterruptEnable = 1U
, only a single board can function on the bus. If additional boards are added (or when sending some generated messages to the bus), the code ceases to work - likely halting before a callback is invoked, based on my debugging experience.
I have identified some aspects of the configuration that I am unsure about:
-
In the context of receiving CAN-FD messages, should
mcanCfgParams->filterConfig.rrfe
be set to1U
instead of0x0U
? -
I am puzzled by this configuration, considering the valid value range:
mcanCfgParams->msgRAMConfig.rxFIFO1waterMark = 64U
;mcanCfgParams->msgRAMConfig.rxFIFO1OpMode = 64U
;
Where:
/*! Rx FIFO1 Watermark
* 0 = Watermark interrupt disabled
* 1-63 = Level for Rx FIFO 1 watermark interrupt
* others = Watermark interrupt disabled
*/
uint32_t rxFIFO1waterMark;/*! Rx FIFO1 Operation Mode
* 0 = FIFO blocking mode
* 1 = FIFO overwrite mode
*/
uint32_t rxFIFO1OpMode;
Moreover, I cannot trigger the condition if (reason == CANFD_Reason_RX)
in MCANAppCallback
. Additional debug prints have indicated that the callback function is never called with CANFD_Reason_RX
as a reason.
Thank you for your assistance.
Regards,
Adam