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.

[参考译文] TCAN4550EVM:TCAN4550上的 CAN 消息丢失

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/966350/tcan4550evm-can-message-loss-on-tcan4550

器件型号:TCAN4550EVM
主题中讨论的其他器件:TCAN4550

您好!

我将使用 TCAN4550和 NXP 的 imx8微型板来发送和接收消息。当我将 CAN 消息从模拟器发送到 TCAN 并 进一步发送到微型板时、发送频率为1、2、5、10、20、50ms 的多个 CAN 消息时、会出现巨大的 CAN 消息丢失。 SPI 波特率配置为4mbps、TCAN 配置有56个 RXFIFO 元素、所有消息都存储在 RXFIFO0.ca中 n 我只使用1个 RXFIFO 来避免消息丢失?请帮助我在一次发送多条消息时如何避免消息丢失。

以下是配置-

*
TCAN4x5x_MRAM_Config MRAMConfiguration ={0};
MRAMConfiguration.SIDNumElements = 5;//1;//标准 ID 元素数量,必须为定义的每个元素将过滤器写入 MRAM
MRAMConfiguration.XIDNumElements= 5;//1;//扩展 ID 元素数量,必须为定义的每个元素将过滤器写入 MRAM
MRAMConfiguration.Rx0NumElements = 64;//5;// RX0元素数量
MRAMConfiguration.Rx0ElementSize = MRAM_64_Byte_Data;// RX0数据有效载荷大小
MRAMConfiguration.Rx1NumElements = 5;//0;// RX1元素数量
MRAMConfiguration.Rx1元件大小= MRAM_64_Byte_Data;// RX1数据有效载荷大小
MRAMConfiguration.RxBufNumElements = 0;// RX 缓冲区元素数量
MRAMConfiguration.RxBufElementSize = MRAM_64_Byte_Data;// RX 缓冲区数据有效载荷大小
MRAMConfiguration.TxEventFIFONUMElements = 0;// TX 事件 FIFO 元素数量
MRAMConfiguration.TxBufferNumElements = 2;// TX 缓冲区元素数量
MRAMConfiguration.TxBufferElementSize = MRAM_64_Byte_Data;// TX 缓冲区数据有效载荷大小

提前感谢。

此致、

BIpin

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

    您好、BIpin、

    总消息吞吐量的限制因素是 MCU 通过 SPI 总线从 TCAN4550读取接收到的消息的速度和效率。  SPI 接口的优势是允许 TCAN4550与任何 MCU 配对、而无需 CAN FD 控制器、但该 SPI 接口也会带来额外的开销。

    我不知道您是如何配置 MCU 的固件的、但下面提供了一些有关如何优化 MCU 以实现最大 CAN 消息吞吐量的建议。

    • 使用支持的最大 SPI 数据速率。  TCAN4550可支持高达18Mbps 的速率、如果您可以将 SPI 速率从4Mbps 提高到更快的速率、则通过 SPI 接口读取消息所需的绝对时间会缩短、从而允许接收更多消息。
    • 一次对多个数据字使用批量或猝发读取。  使用多字读取在单个 SPI 事务中读取和完整消息、只需对起始位置使用单个地址"写入"即可。  如果您当前正在一次读取一个数据字、则必须为每个字写入地址。  对于一个64字节数据消息、RX 消息中有17个字、其中包括标头。  读取整个消息允许您保存16次地址写入。  此外、如果您可以从存储器中读取多个连续消息、则可以进一步降低开销。  例如、如果自上次读取后有5条消息到达、则可以一次性读取所有消息、前提是它们没有从 FIFO 的末尾绕回 FIFO 的开头。  您需要注意这种绕回、并在每次读取第一个 FIFO 位置时启动新的 SPI 读取。
    • 优化 MCU 主循环并减少在读取消息之间执行的函数数量。  还要确保处理传入数据的函数得到优化。

    增加 FIFO 深度将使 TCAN4550能够在填满并拒绝消息之前存储更多消息、但真正的瓶颈在 SPI 接口中、以及 MCU 清空 FIFO 的速度。  您可以进行的每次优化都将增加在给定时间段内可以支持的 CAN 消息量。

    此致、

    Jonathan