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.

[参考译文] TMS320F28386D:读取时可以 FIFO 模式数据接收

Guru**** 2454880 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1067089/tms320f28386d-can-fifo-mode-data-reception-while-reading

部件号:TMS320F28386D
“线程:测试”中讨论的其它部件

您好,

我正在浏览 TRM 并阅读以下内容:

在下一批消息之前,需要读取并清除 FIFO 缓冲区的所有消息对象
可以存储。 否则无法保证真正的 FIFO 功能,因为的消息对象是
部分读取缓冲区将根据正常(降序)优先级重新填充。

在我们的应用程序中,如果我们在 CAN 总线上收到数据,我们每1毫秒检查一次,这意味着在最坏的情况下,我们可以根据 消息的有效负载大小接收4到7帧数据。

当我们检索这些数据时,排放不会停止,因此 我可以相当地想象一个角落案例,在清空 FIFO 的同时,我会收到一个新的帧。

为了保证 FIFO 功能,您建议如何处理它?

此致,

克莱蒙特

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

    克莱门特,您好!

    我们的 CAN 专家目前已不在办公室,请期待下周初收到回复。

    此致,

    Marlyn

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

    Clement,

                   确实可能会有一个角落的案例,正如你所指出的那样。 您是否对 CAN 流量进行了最坏的案例分析? 您的比特率是多少? CAN 通信中的最小/最大帧长度是多少?

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

    哈雷什,

    我不能接受可能有一个角落案例的事实。

    我想我需要定义预期的消息 ID,而不是使用 FIFO 模式。

    由于这是我们系统中的配置界面,我目前尚未对 CAN 通信进行最坏的案例分析。

    我们的比特率为500kbps,在此阶段未定义帧,因此我们可以期待1到8字节的帧。

    但是,无论帧大小如何,我们都不打算对中断做出反应,我们宁愿循环解叠消息(每1毫秒)。

    克莱蒙特

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

    Clement,

                   考虑到来自远程节点的传输是异步的,因此在清空 FIFO 的同时,始终可能会收到新帧。 这与比特率或帧大小无关。 你会同意吗?  

    我可以想到一个想法:CAN_TEST 寄存器包含一个称为 RX 的位,它监控 CANRX 引脚的实际值。 假设正在进行接收,如果您监视此引脚6位,则必须至少降低一次(由于位填充规则)。 如果是您,您可能需要为我们的12人回路。 如果检测到位低,您可以等到接收完成,清空 FIFO,然后返回到主例程。 这是否适合您?  

    另一个方面是,我想提醒大家注意这一错误:在 DCAN FIFO 模式下,收到的消息可能会在 FIFO 缓冲区中排列不正常。 请参阅 www.ti.com/lit/sprz458第9页

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

    哈雷什,

    [引用 userid="10172" url="~/support/icons/c2000微控制器-group/c2000 /f/c2000微控制器-forume/1067089/tms320f28386d-can-fifo 模式数据接收同步读取/3952798#3952798">考虑从远程节点传输,您可能始终收到新的异步帧,同时可能会清空该帧。 这与比特率或帧大小无关。 你会同意吗?  [/引用]

    我完全同意,这是我所担心的,并希望得到证实。

    [引用 userid="10172" url="~/support/icros/c2000微控制器-组/CC2000 /f/c2000微控制器-论坛/1067089/tms320f28386d-fifo-mode-data-recept-while-read/3952798#3952798"]

    我可以想到一个想法:CAN_TEST 寄存器包含一个称为 RX 的位,它监控 CANRX 引脚的实际值。 假设正在进行接收,如果您监视此引脚6位,则必须至少降低一次(由于位填充规则)。 如果是您,您可能需要为我们的12人回路。 如果检测到位低,您可以等到接收完成,清空 FIFO,然后返回到主例程。 这是否适合您?  

    [/引用]

    不会 µs,如果我们在变速器的启动阶段,它会在250到300 μ m (如果不是更多)期间卡住我们的开关,这取决于位填料,这是我们实时周期的三分之一。

    我们不想这样做,但我想我们需要根据预期的帧 ID 进行筛选。

    [引用 userid="10172" url="~/support/icrons/c2000微控制器-组/CC2000 /f/c2000微控制器-论坛/1067089/tms320f28386d-fifo 模式-数据接收-同时读取/3952798#3952798]另一个注释,我希望在 FIFO 缓冲器期间注意您的消息: 请参阅 www.ti.com/lit/sprz458.第9页

    感谢您的指点。 幸运的是,这不一定是我们的问题。

    非常感谢花时间回答我的问题。

    克莱蒙特