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.
您好专家、
我在我的一侧实施了 DCAN 接收 FIFO 演示(F28388D 的 CM 内核,基于 SysBIOS),并使其正常工作。 但我可能需要您提供有关在 F28388D 的 CM 内核上使用 FIFO 的进一步建议。
1.我甚至没有看到 DCAN 发送 FIFO 演示,这种 FIFO 是否存在?
通常、我们使用 FIFO 来缩短 CPU 响应中断的时间。 如果我们已经使用 Tx 或 Rx 中断对 DCAN 进行编程、那么使用 FIFO 是否仍然有益? 我要求这样做是因为我没有找到专门针对 FIFO 模式设计的中断配置,如 SCI 或 SPI。
3.根据我的代码,如果我们使用 driverlib API,应该如何重置 FIFO 以获得更多数据? 您能否演示此器件?
4.欢迎就该准则提出任何建议。
谢谢
谢尔登
[引述]1. 我甚至没有看到 DCAN 发送 FIFO 演示,这种 FIFO 是否存在?[/QUERP]
不,到目前为止,我们在 C2000Ware 中没有此示例。
[引述]2. 通常、我们使用 FIFO 来缩短 CPU 响应中断的时间。 如果我们已经使用 Tx 或 Rx 中断对 DCAN 进行编程、那么使用 FIFO 是否仍然有益? 我要求这样做是因为我没有找到专门为 SCI 或 SPI 等 FIFO 模式设计的中断配置。
当 FIFO 被填满时、您会怎么做?
您好、Haresh、
目前、我不知道在填充 CAN 接收 FIFO 时可以触发什么事件。 因此、我只需阅读第一个邮箱并移动接收缓冲区、如下所示。
否则、如果(status == RX_MSG_OBJ_ID) { // //获取收到的消息 // // CAN_readMessage (CANA_base、RX_MSG_obj_ID、rxMsgData); CAN_readMessage (CANA_base、RX_MSG_obj_ID、rxbuffer_pointer); if (i ==3){ _asm (" bkpt #0"); }否则{ rxbuffer_pointer = rxbuffer_pointer + 4; } I ++; // //到达这一点意味着 RX 中断发生在上 //报文对象2、报文 RX 完成。 清除 //消息目标中断。 // CAN_clearInterruptStatus (CANA_base、RX_MSG_OBJ_ID); // //递增计数器以跟踪已有多少消息 //已收到。 在实际应用中、这可用于将标志设置为 //指示何时接收到消息。 // rxMsgCount++; // //由于接收到消息,请清除所有错误标志。 // errorFlag = 0; }
我按如下方式初始化 FIFO:
// //初始化用于接收 CAN 消息的接收消息对象。 //消息对象参数: // 消息对象 ID 号:2. // 消息标识符:0x1 // 消息帧:标准 // 消息类型:接收 // 消息 ID 掩码:0x0 // 报文对象标志:接收中断 // 消息数据长度:4字节 // CAN_setupMessageObject (CANA_base、RX_MSG_OBJ_ID、0x1、CAN_MSG_FRAME_STD、 CAN_MSG_OBJ_TYPE_RX、0、CAN_MSG_OBJ_RX_INT_ENABLE | CAN_MSG_OBJ_FIFO、 MSG_DATA_LENGTH); // //初始化用于接收 CAN 消息的接收消息对象。 //消息对象参数: // 消息对象 ID 号:3. // 消息标识符:0x1 (相同) // 消息帧:标准 // 消息类型:接收 // 消息 ID 掩码:0x0 (相同) // 报文对象标志:接收中断 // 消息数据长度:4字节 // CAN_setupMessageObject (CANA_base、RX_MSG_OBJ_ID_0、0x1、CAN_MSG_FRAME_STD、 CAN_MSG_OBJ_TYPE_RX、0、CAN_MSG_OBJ_RX_INT_ENABLE | CAN_MSG_OBJ_FIFO、 MSG_DATA_LENGTH); // //此 ID 编号较高的接收报文对象是接收 FIFO 的最后一个成员 // //初始化用于接收 CAN 消息的接收消息对象。 //消息对象参数: // 消息对象 ID 号:4. // 消息标识符:0x1 (相同) // 消息帧:标准 // 消息类型:接收 // 消息 ID 掩码:0x0 (相同) // 报文对象标志:接收中断 // 消息数据长度:4字节 // CAN_setupMessageObject (CANA_base、RX_MSG_OBJ_ID_1、0x1、CAN_MSG_FRAME_STD、 CAN_MSG_OBJ_TYPE_RX、0、CAN_MSG_OBJ_RX_INT_ENABLE、 MSG_DATA_LENGTH);
您是否有任何关于 FIFO 被填满时应执行什么操作的建议? 我们是否有任何事件发出 FIFO 已填充的信号?
谢谢
谢尔登
您好、Haresh、
我在这里的问题是否有任何更新? 我想在接收一个 FIFO 中的全部三个报文对象时生成一个中断。 我该怎么做?
谢谢
谢尔登
Sheldon、
由于这是脱机处理的、如果问题得到解决、请关闭此主题。