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:如果添加了多个滤波器、则读取错误的 ID

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1303657/tcan4550-q1-read-wrong-ids-if-multiple-filters-added

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

您好!

到目前为止、我们使用了 配备10个滤波器(经典和范围)的 TCAN4550、一切都按预期运行。 添加一个额外范围滤波器后、芯片会正确过滤 ID、但读取它们之后、值是错误的。 有什么可能会出错的想法吗?

我们尝试处理一些未筛选并输入的 ID、但值如下:

0x5A3、 0x5A4 -> 0x282

我们尝试过的 Wat:

  • 检查 SIDNumElements=11,
  • 阅读过滤器。 一切看起来都很好

只要我们了解可以使用128个标准 ID 滤波器、正确吗?

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

    大家好、Danijel:

    我是否正确理解了消息被过滤并存储到 RX 缓冲区元件中、但该消息的消息 ID 不正确?

    对于所有元素(RX/TX 缓冲器和 FIFO 元素、SID/XID 滤波器、TX 事件 FIFO 等)、MRAM 配置是什么样的  您是否已验证新配置中没有重叠的存储器部分?

    TCAN4550未执行存储器检查、因此如果存储器部分重叠、则可能会获得错误或错误数据。

    此致、

    乔纳森

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

    尊敬的 Jonathan:

    我已经读出了大多数寄存器、对我来说似乎没有什么不妥。 大多数读出寄存器粘贴如下。 我们使用 TI SLLC469库进行配置。  

    MRAM 配置
    SIDNumElements 0x0B
    XIDNumElements 0x01
    Rx0NumElements 0x05
    Rx0ElementSize 0x07
    Rx1NumElements 0x00
    Rx1元件大小0x07
    RxBufNumElements 0x00
    RxBufElementSize 0x07
    TxEventFIFONumElements 0x00
    TxBufferNumElements 0x03
    TxBufferElementSize 0x07

    GFC
    字0x00000028
    RRFE 0x00
    RRFS 0x00
    ANFE 0x02
    ANFS 0x02
    保留0x00000000

    设备配置_rd
    字0xc8000460
    RESERVED0 0x00
    SWE_DIS 0x00
    DEVICE_RESET 0x00
    WD_EN 0x00
    RESERVED1 0x06
    nWKRQ_CONFIG 0x00
    INH_DIS 0x00
    GPIO1_GPO_CONFIG 0x01
    RESERVED2 0x00
    FAIL_SAFE_EN 0x00
    GPIO1_CONFIG 0x00
    WD_ACTION 0x00
    WD_BIT_RESET 0x00
    nWKRQ_VOLTAGE 0x00
    RESERVED3 0x00
    GPO2_CONFIG 0x00
    RESERVED4 0x00
    CLK_REF 0x01
    RESERVED5 0x00
    WAKE_CONFIG 0x03

    mcan_ie_rd
    字0x00000001
    RF0NE 0x01
    RF0WE 0x00
    RF0FE 0x00
    RF0LE 0x00
    RF1NE 0x00
    RF1WE 0x00
    RF1FE 0x00
    RF1LE 0x00
    HPME 0x00
    Tce 0x00
    TCFE 0x00
    TFEE 0x00
    TEFNE 0x00
    TEFWE 0x00
    TEFFE 0x00
    TEFLE 0x00
    TSWE 0x00
    MRAFE 0x00
    TOOE 0x00
    DRXE 0x00
    BECE 0x00
    BEUE 0x00
    ELOE 0x00
    EPE 0x00
    Ewe 0x00
    BoE 0x00
    WDIE 0x00
    PEAE 0x00
    PEDE 0x00
    ARAE 0x00
    保留0x00

    滤波器
    [0]
    字0x0ea806ab
    SFID2 0x06ab
    保留0x00
    SFID1 0x06a8
    SFEC 0x01
    SFT 0x00


    [1]
    字0x8b9507c0
    SFID2 0x07c0
    保留0x00
    SFID1 0x0395
    SFEC 0x01
    SFT 0x02


    [2]
    字0x0d820584
    SFID2 0x0584
    保留0x00
    SFID1 0x0582
    SFEC 0x01
    SFT 0x00


    [3]
    字0x8b5507c0
    SFID2 0x07c0
    保留0x00
    SFID1 0x0355
    SFEC 0x01
    SFT 0x02


    [4]
    字0x885507c0
    SFID2 0x07c0
    保留0x00
    SFID1 0x0055
    SFEC 0x01
    SFT 0x02


    [5]
    字0x8dc407ff
    SFID2 0x07ff
    保留0x00
    SFID1 0x05c4
    SFEC 0x01
    SFT 0x02


    [6]
    字0x8bd507c0
    SFID2 0x07c0
    保留0x00
    SFID1 0x03d5
    SFEC 0x01
    SFT 0x02


    [7]
    字0x0d9b059f
    SFID2 0x059f
    保留0x00
    SFID1 0x059b
    SFEC 0x01
    SFT 0x00


    [8]
    字0x09000150
    SFID2 0x0150
    保留0x00
    SFID1 0x0100
    SFEC 0x01
    SFT 0x00


    [9]
    字0x8dfa07ff
    SFID2 0x07ff
    保留0x00
    SFID1 0x05fa
    SFEC 0x01
    SFT 0x02


    [10]
    字0x0da205a4
    SFID2 0x05a4
    保留0x00
    SFID1 0x05a2
    SFEC 0x01
    SFT 0x00

    此致、Danijel

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

    尊敬的 Jonathan:

    我没有看到筛选器值有任何看起来存在错误的地方。  不过、我看到您配置了一个 XID 滤波器元件、但您没有提供。  是否将滤波器元件写入 MRAM?  使用 MCAN、您必须向已启用的每个 SID 和 XID 过滤器元素写入一个有效的过滤器。  如果在配置寄存器中启用筛选器元素、但在 MRAM 中将其留空或留空、则在器件尝试检查筛选器中收到的每条消息时可能会收到错误。  

    此致、

    乔纳森

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

    尊敬的 Jonathan:

    我知道这一点、并在之前的一些配置中使用了 XID 滤波器。 问题是、如果我把 XID 编号设为0、那么芯片两次都不工作。 现在、在尝试期间以某种方式删除了滤波器、但将值保留为1、但没有变化。

    XID 编号必须大于0这一说法是否正确? 或者、我一开始是否已经存在某种初始化问题。

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

    Danijel,

    乔纳森在美国度假。 我们将在下周回复您、但可能会是下一周(1月的第一周)。

    此致、

    埃里克·哈克特  

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

    您好、Eric、

    祝大家在这里度过美好的假期、我们将在1月份继续工作。

    此致、Danijel

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

    大家好、Danijel:

    SID 和 XID 过滤器是可选的、不必使用。  但是、如果您在配置寄存器中配置了一个或两个 SID/XID 元素的非零数量、则需要在该元素的 MRAM 位置提供一个有效的筛选器。  当接收到新消息时、MCAN 将开始将消息 ID 与从元件#0开始的滤波器元件进行比较、直到找到匹配的滤波器或没有更多要检查的滤波器元件。  器件将根据滤波器和全局滤波器配置寄存器的配置存储或拒绝消息、该配置将允许存储或拒绝不匹配的消息。

    如果在寄存器中启用了 SID/XID 滤波器元件、但在 MRAM 位置留空、则当器件按顺序到达新的 RX 消息时、将无法正确地对其进行滤波。

    如果您还没有看到博世为其 IP 发布的 M_CAN 用户手册,我建议您查看第3.4.1节,该节详细介绍了 RX 处理验收过滤。  (链接)

    博世手册中的标准消息 ID 过滤流程是:

    扩展的消息 ID 筛选流程是:

    如果将全局滤波器配置(GFC)寄存器0x1080中的 ANFS 和 ANFE (接受不匹配的标准帧和扩展帧)位设置为在 RX FIFO 0或1中接受、您是否能够看到所有发送到器件的消息?  

    对于调试、您可以尝试同时启用某些 RX FIFO 0和 RX FIFO 1单元、然后将过滤出的消息分配给一个 FIFO、再接受不匹配的消息给另一个 FIFO。  然后、您可以查看实际 SID/XID 滤波器不接受消息是否存在问题、或者该消息是否存在其他导致无法接收消息的问题。

    此致、

    乔纳森