Other Parts Discussed in Thread: TCAN4550
主题中讨论的其他器件:TCAN4550
我在 RK3568的 spi0、spi3上运行两个 tcan4550芯片。
如果我将消息发送至 FAST。(1ms)
这将运行一段时间、然后突然写入套接字返回 WRITE:没有可用的缓冲空间。
该状态将一直保持到 IF 关闭/ IF 向上的 CAN 接口。
如何解决此问题?
谢谢。
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.
Other Parts Discussed in Thread: TCAN4550
我在 RK3568的 spi0、spi3上运行两个 tcan4550芯片。
如果我将消息发送至 FAST。(1ms)
这将运行一段时间、然后突然写入套接字返回 WRITE:没有可用的缓冲空间。
该状态将一直保持到 IF 关闭/ IF 向上的 CAN 接口。
如何解决此问题?
谢谢。
您好、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 缓冲区数、则会收到错误消息、指出没有可用空间。
此致、
乔纳森