请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: TMS320F28374S
尊敬的专家:
客户开发过程中存在 2 个问题:
- 需要 FIFO 模式演示代码:TI 的 F2837x TRM 介绍了可以使用数据缓冲区处理 CAN 消息、这是通过邮箱 RAM 重复使用和 CAN FIFO 缓冲区来实现的、但我在 SDK 中未找到演示代码、是否有任何演示代码指导客户如何配置 CAN 以在 FIFO 缓冲区模式下传输数据? 这将提高客户 CAN 消息处理效率。
- CAN 繁忙位无法指示 CAN 消息传输状态:
客户使用以下代码发送一批数据、在代码中会轮询 CAN_IF1CMD_BUSY“来检查 CAN 是否空闲以及是否可以发送下一个 CAN 帧、但测试结果是、即使“CAN_IF1CMD_BUSY"位“位被清零、正确的 CAN 消息帧传输仍需要额外延迟、没有时间延迟、无法正确发送下一个 CAN 帧。
UINT16_t CanTransmit (CanFrame* CanFrame)
{
G_transmitTestCnt++;
//轮询可以忙位
if ((((CanaRegs.CAN_IF1CMD.all)& CAN_IF1CMD_BUSY)!= CAN_IF1CMD_BUSY){
can_SetupMessageObject (12、canFrame->canId.all、
CAN_MSG_FRAME_EXT、CAN_MSG_OBJ_TYPE_TX、0、
CAN_MSG_OBJ_NO_FLAGS、CAN_DATA_NUM);
//发送 8 个字节的数据
CAN_SendMessage (12、CAN_DATA_NUM、canFrame->data);
G_transmitTestCnt2+;
返回 true;
}
返回 false;
}
感谢并期待您的答复。
此致
Joe