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.
您好!
到目前为止、我们使用了 配备10个滤波器(经典和范围)的 TCAN4550、一切都按预期运行。 添加一个额外范围滤波器后、芯片会正确过滤 ID、但读取它们之后、值是错误的。 有什么可能会出错的想法吗?
我们尝试处理一些未筛选并输入的 ID、但值如下:
0x5A3、 0x5A4 -> 0x282
我们尝试过的 Wat:
只要我们了解可以使用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 滤波器不接受消息是否存在问题、或者该消息是否存在其他导致无法接收消息的问题。
此致、
乔纳森