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.

[参考译文] TDA4AL-Q1:有关 CAN 水印的一些问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1296897/tda4al-q1-some-questions-about-can-watermark

器件型号:TDA4AL-Q1

您好!

我对水印设置有点困惑。

1. FIFO 中的消息是否多于水印、所以系统将一直触发中断?

2.我想读出 FIFO 中的所有 msgs,但我没有找到相应的函数,您能告诉我吗?

3.如果设备在50ms 内发送20个数据包给我,帧间隔可能达到200us ,所以为了接收数据而不丢失帧,什么是适合我的水印?

谢谢

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

    您好!

    感谢您根据请求再次提出 E2E

    1. FIFO 和水印:水线位决定接收缓冲区何时生成中断。 如果 FIFO 包含的消息超过水线位、它将触发中断、直到缓冲器的消息计数低于水线位。 因此、是的、如果消息数量超过水印、系统将继续生成中断、直到 FIFO 的消息计数降至此阈值以下。
    2. 从 FIFO 中读出消息:通常情况下、必须从 FIFO 中取消排队或读取消息、直到消息为空。 can_mcanReadRxFIFO API 将会执行该操作。
    3. 设置适当的水印:为防止帧丢失并确保及时接收消息、需要考虑接收的消息速率和系统的处理能力。 如果您预计在50ms 内到达20个数据包、平均每秒400个数据包、则需要一个水印来处理这一速率而不会溢出。 鉴于帧间隔为200us、您可能需要相对较高的水线位以防止溢出。 确定精确的水线位可能需要根据系统性能进行测试和优化。

    此致

    M·塔伦

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

    您好!

    感谢您的答复。

    我参考"pdk_j721s2/packages/ti/CSL/example/mcanEvmLoopback/mcan_evm_loopback_app_main_k3.c"中的读取方法、并使用"mcan_readMsgRam"函数从 FIFO 读取数据、但我如何知道 FIFO 中有多少数据未读? 另外、如何知道 FIFO 中的数据是否为空?

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

    您好、Li Liu、

    我认为我们需要查看 MCAN_RXF0S 寄存器的 FOGI 和 FOFL 位、以便了解有多少数据仍为未读或知道 FIFO 0中的填充级别。

    如果可能的话、请连接一个调试器并在每次中断生成时观察这些值。

    此致

    M·塔伦