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.

[参考译文] TCAN4550-Q1:CAN 总线:无可用缓冲空间

Guru**** 2756835 points

Other Parts Discussed in Thread: TCAN4550

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1294758/tcan4550-q1-can-bus-no-buffer-space-available

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

我在 RK3568的 spi0、spi3上运行两个 tcan4550芯片。
如果我将消息发送至 FAST。(1ms)
这将运行一段时间、然后突然写入套接字返回 WRITE:没有可用的缓冲空间。
该状态将一直保持到 IF 关闭/ IF 向上的 CAN 接口。
如何解决此问题?
谢谢。

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

    您好、Alan!

    我已将其分配给了我们的一位专家。 请允许我们花一些时间来了解这一点,因为这是一个感谢的星期,我希望他会在下周回到你。

    -鲍比

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

    您好、Alan!

    我不清楚您是仅尝试从两个 TCAN4550芯片发送消息、还是尝试在两个芯片之间发送和接收 CAN 消息、还是来自一个较大总线上的其他 CAN 收发器。

    与 TCAN4550的所有通信均通过 SPI 接口完成、因此发送或接收 CAN 消息速度的限制因素取决于 SPI 通信的速度和效率。  发送和接收 CAN 消息时、总需要时间来读取和写入寄存器以确定要使用的 TX 和 RX 缓冲器、然后从 MRAM 写入或读取消息内容、 然后发送或确认消息所花费的时间可能比 CAN 消息本身传输所花费的时间更长。  因此、您应该根据 SPI 通信确定发送或接收消息所需的时间量、以确定 CAN 消息之间所需的最小延迟、从而避免缓冲空间用尽。

    可考虑的选项包括:

    -监控 RX 和 TX FIFO/缓冲器填充状态,以确定您是否正在接近已满状态。

    -增加分配的缓冲区数。  如果发送的消息比处理速度快、这不能防止出现溢出情况、但它可能会在溢出之前留出一些额外的缓冲区空间和时间。

    -将 SPI 数据速率提高到可以可靠支持的最大水平。  TCAN4550的最大 SPI 频率为18MHz。

    -使用 SPI 突发模式进行多字传输,方法是在单个 SPI 事务中发送多个数据字,并相应地设置 SPI 头字的长度字段。  这将减少重复的 SPI 标头字、其中包括每个连续 MRAM 地址位置的地址和读取/写入操作代码、并减少从 MRAM 缓冲区写入/读取 CAN 消息所需的总时间。

    -如果 CAN 消息试图传输到 CAN 总线上的其他节点而不是传输到自身,请确保在发送新消息之前成功传输这些消息,以确保 TX FIFO/缓冲器空间可用于发送新消息。  这些消息可能未赢得仲裁、仍可能在等待总线上的传输。  如果您尝试发送的消息数多于拥有的 TX 缓冲区数、则会收到错误消息、指出没有可用空间。

    此致、

    乔纳森