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:MRAM 配置问题

Guru**** 2468610 points
Other Parts Discussed in Thread: TCAN4550

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1465924/tcan4550-mram-configuration-problem

器件型号:TCAN4550

工具与软件:

您好!

我需要一些关于 TCAN4550的 MRAM 配置方面的帮助。 我们正在使用 TI 提供的库、并配置 MRAM、如下所示:

TCAN4x5x_MRAM_Config MRAMConfiguration = { 0 };
/// Standard ID number of elements, you MUST have a filter written to MRAM for each element defined
MRAMConfiguration.SIDNumElements = drv_can_config->filter_len;
/// Extended ID number of elements, you MUST have a filter written to MRAM for each element defined
MRAMConfiguration.XIDNumElements = 1;
// RX0 Number of elements
MRAMConfiguration.Rx0NumElements = 5;
// RX0 data payload size
MRAMConfiguration.Rx0ElementSize = MRAM_64_Byte_Data;
// RX1 number of elements
MRAMConfiguration.Rx1NumElements         = 0;
MRAMConfiguration.Rx1ElementSize         = MRAM_8_Byte_Data; // RX1 data payload size
MRAMConfiguration.RxBufNumElements       = 0;                 // RX buffer number of elements
MRAMConfiguration.RxBufElementSize       = MRAM_64_Byte_Data; // RX buffer data payload size
MRAMConfiguration.TxEventFIFONumElements = 0;                 // TX Event FIFO number of elements
MRAMConfiguration.TxBufferNumElements    = 3;                 // TX buffer number of elements
MRAMConfiguration.TxBufferElementSize    = MRAM_64_Byte_Data; // TX buffer data payload size
我们要实现的是、使用具有5个元素的 FIFO0。 问题是、无论我们插入的编号是多少、在读取 REG_MCAN_RXF0S 状态寄存器后、FIFO 满标志始终设置为2条消息。 之后、我们已经收到消息丢失标志。 然后我们尝试配置 FIFO1缓冲器、我们似乎可以配置最多64个元素。 但是、我们开始遇到设置的滤波器似乎不起作用的情况。 我们体验到会随机收到具有特定 ID 的消息。

您认为此配置有任何问题吗?

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

    大家好、Danijel:

    对于以下元素、MRAM 配置显示正确:

    • SID 过滤器元素= drv_can_config->filter_len 的值
    • XID 过滤器元素= 1
    • Rx FIFO 0元素= 5 (具有64字节数据有效载荷容量)
    • Rx FIFO 1元素= 0
    • RX 专用缓冲区元素= 0
    • Tx 事件 FIFO 元素= 0
    • Tx 缓冲区元素= 3 (具有64字节数据有效载荷容量)

    TCAN4550只有2k 个消息 RAM (MRAM)、可分配给不同类型的元件。  根据您的应用、您可能需要或多或少的特定类型的元素、并且您可以根据您的需求定制配置。  但是、总体配置必须适合2k MRAM 块、因此您将无法支持所有元素类型的最大数量。

    问题在于、无论我们插入的数字是多少、在读取 REG_MCAN_RXF0S 状态寄存器后、FIFO 满标志始终设置为2条消息。 之后、我们已经收到消息丢失标志。 [报价]

    读取 RXF0S 寄存器后、要查看是否有新消息以及 RX 缓冲区编号的 Get 索引是否包含 FIFO 中最早的消息、您需要读取该消息、然后将最后读取的消息的索引号写入 RX FIFO 0确认寄存器。  这将释放 FIFO 中的缓冲区编号、以便接收新消息。

    您需要以比接收快的速度读取和确认消息、以避免溢出事件导致丢失消息。

    然而、我们开始遇到设置的过滤器似乎不起作用的情况。 我们遇到了随机收到具有特定 ID 的消息的情况。

    我希望部分 RX 溢出问题也是由滤波器配置导致的。  默认情况下、器件配置为接受所有不匹配的消息并将其存储到 RX FIFO 0中。  因此、如果您不使用消息过滤、默认情况下设备将接受并存储所有消息。

    但是、如果您要使用消息过滤、则需要更改全局过滤器配置寄存器(0x1080)中的值、以便它们"拒绝"不匹配的帧。  这样会将设备配置为仅接受和存储通过其中一个过滤器元素的消息。

    希望这个小幅调整能够显著改善测试结果。

    我还建议您参考以下文档、这些文档是有关如何配置此器件的良好资源。

    请注意、在 Bosch 针对其 IP 发布的 M_CAN 用户手册中、唯一的区别是寄存器地址范围从0x00开始。  TCAN4550为每个 MCAN 寄存器添加了偏移量0x1000。  例如 、对于 MCAN 控制寄存器、M_CAN 用户手册中的地址为0x18、但 TCAN4550的地址为0x1018。

    此致、

    Jonathan

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

    Jonathan、您好!

    感谢您的详细解释。 它看起来像是一些滤波器组件影响 FIFO0寄存器。 按照您的所有指南操作、此问题现已修复。 谢谢!

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

    大家好、Danijel:

    欢迎您、我很高兴听到您的问题已得到解决。

    此致、

    Jonathan