Other Parts Discussed in Thread: HALCOGEN
Dear sir,
I have working CAN driver for pooling and interrupt modes.
i'm trying to implement DMA functionality for CAN, from datasheet and TI forum I got to now that only RX DMA can be implemented for (TMS570LC4357-EP board) with the help of IF3 interface register (IF3UEy).
But HALCOGEN has not generated any API/ functions to handle DMA, and even not utilized any IF3 registers in the driver code, but utilized IF1 and IF2 for Transmission and Reception purpose.
when i try to updating IF3UEy register with Rx message box number (from Table 27-33 ), after updating IF2 message box. Driver is not receiving the CAN data in pooling mode and interrupt mode,but transmission are working as expected. The registers NWDATx and IF2DATx are always zero in-case of reception.
Below steps are followed for configuring the message box. (same as Halcogen Code except 7th step).
- Checked for IF2STAT busy bit.
- Assigning vale for IF2MSK
- Assigning vale for IF2ARB
- Assigning vale for IF2MCTL
- Assigning vale for IF2CMD = ((T_UINT8)( M_IFxCMD_WR |M_IFxCMD_MASK | M_IFxCMD_ARB | M_IFxCMD_CONTROL | M_IFxCMD_CLRINTPND));
- Assigning vale for IF2NO = 0x2UL
- Assigning vale for IF3UEy[0] = 0x2UL.(NEWLY ADDED)
Kindly let me know why IF3UEy register is creating issue for RX, so that i can continue DMA implementations. if there is any working CAN DMA example for TMS570LC4357-EP board, kindly share it for reference.
Thanks & Regards
Subramanya A