Other Parts Discussed in Thread: TCAN4550-Q1
工具与软件:
我使用了 tcan4550-Q1并 根据正式演示在队列模式下设置32个 TX 缓冲区。
在向 相应的 MRAM 写入具有相同 ID 的32个帧消息后、将0xFFFFFFFF 写入 txbar (0x10D0)以请求发送消息、但我仅接收到28个帧、前4个帧缺失。
但是、如果我写入28个帧并请求发送这28个帧、然后写入4个帧并请求发送、我将得到32个帧。
请帮我分析原因。
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-Q1
工具与软件:
我使用了 tcan4550-Q1并 根据正式演示在队列模式下设置32个 TX 缓冲区。
在向 相应的 MRAM 写入具有相同 ID 的32个帧消息后、将0xFFFFFFFF 写入 txbar (0x10D0)以请求发送消息、但我仅接收到28个帧、前4个帧缺失。
但是、如果我写入28个帧并请求发送这28个帧、然后写入4个帧并请求发送、我将得到32个帧。
请帮我分析原因。
抱歉、您好、
您是否也偶然启用了任何专用的 TX 缓冲区? 总共有32个 TX 缓冲区、有可能有一个专用 TX 缓冲区和一个 TX 队列的组合、我想知道配置中是否存在冲突。
您能告诉我 TX 缓冲区配置(TXBC)寄存器地址0x10C0的值是多少吗?
您是否能够监测以下 TX 相关寄存器:
此致、
Jonathan
TXBC.TFQM=0、TXBC.TFQS=0、TXBC.NDTB=32、TXBC.TBSA=0x8000+1*4+32*(64+8)
我发现、当我完成对帧0到27的64字节数据和8字节标头的写入后、
和8字节的标头和24字节的数据(总共32字节)、用于帧28、
上述总计28*(8+64)+32=32*64字节。
帧28的其余40个字节 涵盖了帧0的 MRAM、
第29帧的标头和数据涵盖了第0帧和第1帧的 MRAM、
第 30帧的标头和数据覆盖了第 1帧和第2帧的 MRAM、
第 31帧的标头和数据覆盖了第 2帧和 第3帧的 MRAM。
因此、错误 SEMM 的原因是前4个帧的 MRAM 区域被覆盖。
对于所有不同的存储器元件、只有2kB 的 MRAM 占用地址0x8000至0x87FF。 无法分配 MCAN 支持的最大元素数、因此您需要确定应用需要什么、并确保其适合 MRAM 而不会出现地址重叠。
如果您的配置超过2kB、存储器会循环回到地址空间的开头。 例如、如果尝试从地址0x8800读取或写入、这与对0x8000的读取或写入相同。
最大数据大小为64字节的32个 TX 缓冲器元素总共为2304个字节、大于2000字节的 MRAM 块大小。 您需要减小 TX 缓冲器元素的数量或缓冲器元素的数据大小、以保持低于2kB 并防止覆盖某些 TX 缓冲器元素。
此致、
Jonathan