This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
大家好、您可以帮助了解 CAN API 吗?下面是 mcan_multi_message_tx 项目的代码
/*将 Tx 消息写入消息 RAM。 */
DL_MCAN_writeMsgRam (MCAN0_INST、DL_MCAN_MEM_TYPE_BUF、0、&txMsg0);
/*将 Tx 消息写入消息 RAM。 */
DL_MCAN_writeMsgRam (MCAN0_INST、DL_MCAN_MEM_TYPE_BUF、1、&txMsg1);
/*添加传输请求。 */
DL_MCAN_TXBufAddReq (MCAN0_INST、0);
/*添加传输请求。 */
DL_MCAN_TXBufAddReq (MCAN0_INST、1);
我的客户需要使用 FIFO;因此、他们将 DL_MCAN_MEM_TYPE_BUF 更改为 DL_MCAN_MEM_TYPE_FIFO
DL_MCAN_writeMsgRam (MCAN0_INST、DL_MCAN_MEM_TYPE_FIFO、0、&txMsg0);
但是、当它们更改为 DL_MCAN_MEM_TYPE_FIFO 时、代码不起作用。
请告诉我们如何将 API 用于 FIFO。
此致、
Frangline。
嗨、Frangline、在上面的代码中、似乎仍在引用 TXBuf、而不是 TXFifo。 如果按住 CTRL 并点击 DL_MCAN_TXBufAddReq、它应该会将您带到 dl_mcan.h 文件中所引用的声明和定义。 您可以 在该视图中查看是否需要进行任何更改。 我看到其中的多个 FIFO 函数可能会导致问题。 能否提供有关代码、所做的任何其他更改以及 SysConfig 设置的更多详细信息?
-Brian
Brian、您好!
感谢重放、我们正在尝试在 FIFO 模式下使用完整的 CAN 缓冲区 RAM (前512字节作为 Rx FIFO 缓冲区、后512字节作为 TX 缓冲区、随附下图)
使用上述经典 CAN 和以下代码对 RAM 进行上述配置后、我们无法一次传输1条以上的消息、接收也是如此
/*将 Tx 消息写入消息 RAM。 */
DL_MCAN_writeMsgRam (MCAN0_INST、DL_MCAN_MEM_TYPE_FIFO、0、&txMsg0);
/*将 Tx 消息写入消息 RAM。 */
DL_MCAN_writeMsgRam (MCAN0_INST、DL_MCAN_MEM_TYPE_FIFO、0、&txMsg1);
/*添加传输请求。 */
DL_MCAN_TXBufAddReq (MCAN0_INST、0);
/*添加传输请求。 */
DL_MCAN_TXBufAddReq (MCAN0_INST、1)
我们正在尝试了解当 CAN RAM 配置为 FIFO 时要使用哪些 API 进行传输、如果有任何响应、我们将不胜感激。
谢谢你
Brian、您好!
是的、我们不使用 FIFO 事件、因此我们将其保持为0。 我们将 CAN RAM 仅用于 FIFO
在了解可用的 API 后、现在我们可以使用以下代码一次传输32条消息以进行传输、但我们在接收 CAN 消息时仍然面临问题
对于接收 CAN 消息、我们不知道当 FIFO 中填充多条消息时要使用哪个 API。
尊敬的 Shivaraj:
您应该能够通过以下代码读取这些 RX 数据:
if ((gInterruptLine1Status & MCAN_IR_RF0N_MASK) == MCAN_IR_RF0N_MASK) { rxFS.num = DL_MCAN_RX_FIFO_NUM_0; while ((rxFS.fillLvl) == 0) { DL_MCAN_getRxFIFOStatus(MCAN0_INST, &rxFS); } DL_MCAN_readMsgRam( MCAN0_INST, DL_MCAN_MEM_TYPE_FIFO, 0U, rxFS.num, &rxMsg); DL_MCAN_writeRxFIFOAck(MCAN0_INST, rxFS.num, rxFS.getIdx); processRxMsg(&rxMsg); gInterruptLine1Status &= ~(MCAN_IR_RF0N_MASK); }
谢谢!
此致
Johnson