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.

[参考译文] TMS570LS1224:DCAN、为什么有这么多的消息框? 为什么需要64?

Guru**** 2331900 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/596986/tms570ls1224-dcan-why-there-are-so-many-message-boxes-why-we-need-64

器件型号:TMS570LS1224

大家好。

 我已经阅读了 Hercules 系列 Launchpad 的技术文档、但仍然无法全面了解 DCAN 消息框的工作原理。 我认为、

例如,接收消息:

当 Rx 管脚接收到一个 CAN 报文时、"CAN 内核"将把这个报文放入由 FIFO 实现的报文 RAM 中、数据结构是"报文对象"。

2.在正常模式下无法访问"报文 RAM"、只能通过"IFx 寄存器"访问。 IF1和 IF2用于读取和写入、IF3为只读。

我的理解问题是在这里、IFX 寄存器有一个"消息编号"变量、优先级基于"消息编号"。 假设现在 FIFO 中有3条消息、因为这个 Launchpad 是单个线程、结构是 FIFO、所以我只能逐一获取消息、因此、canMESSAGE_BOX1足以完成此任务、为什么有64个消息框?

我知道有一个原因、这就是我提出的原因。 非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好 Joe、

    IFx 寄存器的存在有助于避免 CPU 对消息 RAM 的访问与 DCAN 状态机对消息 RAM 的访问之间的冲突。 出现如此多消息框的原因只是为了实现消息的某些优先级(基于 ID 筛选)、并且也是为了帮助避免由于接收到新消息而丢失消息的数据溢出错误。 请注意、虽然您将访问视为串行访问、但在许多情况下、数据被接收、DMA 事务会将接收到的消息移动到 RAM、以供应用程序处理。 这种情况可能会非常快速、自主地执行 CPU、因此不会限制 CPU 在为其他 RTOS 线程或中断驱动任务执行其他任务时的带宽。