主题中讨论的其他器件: HALCOGEN
尊敬的先生:
我有用于池化和中断模式的 CAN 驱动程序。
我正在尝试为 CAN 实现 DMA 功能、从数据表和 TI 论坛、我现在可以在 IF3接口寄存器(IF3UEy)的帮助下为(TMS570LC4357-EP 板)实现 RX DMA 功能。
但 HALCOGEN 没有生成任何处理 DMA 的 API/函数、甚至没有在驱动程序代码中使用任何 IF3寄存器、而是将 IF1和 IF2用于发送和接收。
当我尝试使用 Rx 消息框编号更新 IF3UEy 寄存器(来自表27-33)时,在更新 IF2消息框后。 驱动器未在池模式和中断模式下接收 CAN 数据、但传输按预期工作。 在 接收时、寄存器 NWDATx 和 IF2DATx 始终为零。
按照以下步骤配置消息框。 (与 Halcogen 代码相同、但第7步除外)。
- 已检查 IF2STAT 忙位。
- 为 IF2MSK 分配 vale
- 为 IF2ARB 分配分拣
- 为 IF2MCTL 分配 vale
- 为 IF2CMD 分配 vale =((T_uint8)(M_IFxCMD_WR |M_IFxCMD_MASK | M_IFxCMD_ARB | M_IFxCMD_CONTROL | M_IFxCMD_CLRINTPND);
- 为 IF2NO 分配 vale = 0x2UL
- 为 IF3UEy[0]分配 vale = 0x2UL.(新添加)
请告诉我为什么 IF3UEy 寄存器会给 RX 造成问题、以便我可以继续 DMA 实施。 如果 有适用于 TMS570LC4357-EP 电路板的 CAN DMA 示例、请分享以供参考。
谢谢、此致
苏布拉马尼亚 a