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:数据发送错误

Guru**** 2931100 points

Other Parts Discussed in Thread: TCAN4550, TCAN4550-Q1

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1588477/tcan4550-data-transmit-wrong

器件型号: TCAN4550

尊敬的团队

TC4550 芯片、使用 CAN FD 模式
4M 速度、仅启用接收中断、无重新传输。 两个设备节点正在通信。
场景 1:
器件节点 0 发送请求数据
收到请求后、器件节点 1 会发送一个数据包(67 字节、超过 64 字节,因此分为要传输的数据包)
节点 0 收到的数据并发现解包错误(数据包捕获和仿真表明第一个数据包是正确的,但第二个数据包的第三个到最后一个数据不正确)
数据包捕获:发现数据包捕获期间第二个数据包出现问题。 当 MCU 通过 SPI 发送数据时、数据包捕获是正常的、但当数据包通过 CAN 发送到总线级时、发生了错误
方法:
怀疑发送两个数据包之间的间隔过短、但 500us 的延迟也没有用。
场景 2:
器件节点 0 发送请求数据
收到请求后、器件节点 1 发送一个数据包(少于 64 字节)
节点 0 正常接收数据解包
我还不知道原因、请让 TI 工程师来提供帮助。 谢谢你。

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

    您好 Gabriel、

    请提供显示正常和异常数据的 SPI 和 CAN 消息数据日志。

    还请提供 TCAN4550 的所有最终寄存器值的列表、以便我可以查看配置。

    您能否更好地解释您处理多个 CAN 数据包的方法?  您是否使用 TX FIFO 并使用两个单独的 TX 缓冲器元素创建多条 TX 消息将它们都加载到 FIFO 中?  或者、您是否正在尝试重复使用相同的 TX 缓冲区并在发送第一个数据包后将第二条消息加载到同一 TX 缓冲区?

    此致、

    Jonathan

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


    如附件所示 μ s
    最终配置log如下:μ s

    === TCAN4550 最终配置摘要==

    TCAN4550-Q1:DEVICE_CONFIG:0xC80004A0

    TCAN4550-Q1:SWE_DIS:0、WD_EN:0、CLK_REF:1、WAKE_CONFIG:3.

    TCAN4550-Q1:CCCR:0x00000340

    TCAN4550-Q1:INIT:0、CCE:0、DAR:1、FDOE:1、BRSE:1、 NISO:0

    TCAN4550[D]:NBTP:0x02030601

    TCAN4550[D]:NBRP:3、NTSEG1:6、NTSEG2:0、NSJW:1

    TCAN4550-Q1:DBTP:0x00800622

    TCAN4550[D]:DBRP:0、DTSEG1:6、DTSEG2:2、DSJW:2

    TCAN4550[D]:GFC:0x00000003

    TCAN4550[D]:RRFE:0、RRFS:0、ANFE:0、ANFS:3

    TCAN4550[D]:RXF0C:0x8010000C

    TCAN4550[D]:RXF0S:0x00000000 (F0FL:0)

    TCAN4550-Q1:TXBC:0x4800048C

    TCAN4550[D]:DEV_IE:0x87F628FF

    TCAN4550[D]:UVIOEN:1、UVSUPEN:1、CANBUSBATEN:1、CANBUSGNDEN:1、CANBUSOPETCAN4550 [D]:MCAN_IE:0x00000001

    TCAN4550-Q1:RF0NE:1、RF0WE:0、RF0FE:0、RF0LE:0

    TCAN4550[D]:器件模式:正常

    TCAN4550[D]:时序配置:

    TCAN4550-Q1:仲裁:1000000 波特、采样点:80.0%

    TCAN4550-Q1:数据:4000000 波特、采样点:75.0%

    TCAN4550[D]:===========================================
    配置代码bsp _can4x5x.c
    代码配置了8个TX缓冲区、发送时循环调用发送的。而且bsp μ s_tcan4x5x_n ü send是调用了TCAN4x5x TransmitBufferContents直接发送、应该不会被覆盖。MCAN_I ² C
    烦请Jonathan帮忙分析下问题、谢谢e2eti.com/.../TC4550_D1530190EE959898F8767351_log.doce2e.ti.com/.../bsp_5F00_tcan4x5x.c

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

    您好、Song、

    我需要更多时间来查看这些文件、明天我会与您联系。

    此致、

    Jonathan

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

    尊敬的 Jonathan:
    似乎我已经弄清楚了原因。 当连续发送多个数据包时、最后一个数据包是在不满足 64 字节要求的情况下发送的、这导致了该问题。
    这是因为 CAN FD 不支持发送长度小于 64 字节(可变长度)的数据包吗? 这是我第一次使用 CAN FD。

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

    您好、Song、

    传统 CAN 消息或数据包的最大数据有效载荷为 8 字节。   

    CAN FD 消息或数据包的最大数据有效载荷为 64 字节。

    DLC 值将确定消息中发送的字节数量。 但请注意、DLC 只是一个 4 位字段、不能支持 0 到 64 之间的任何唯一字节值、因为 DLC 字段只有 16 个可能的值。  因此、您需要根据下表设置 DLC 值。

    DLC 指示器 DLC(二进制) 传统 CAN 字节 CAN FD 字节
    0 0000 0 0
    1. 0001 1. 1.
    2. 0010 2. 2.
    3. 0011 3. 3.
    4. 0100 4. 4.
    5. 0101 5. 5.
    6. 0110 6. 6.
    7. 0111 7. 7.
    8. 1000 8. 8.
    9. 1001. 8. 12
    10. 1010. 8. 16
    11. 1011. 8. 20
    12 1100 8. 24
    13 1101 8. 32
    14 1110. 8. 48
    15 1111. 8. 64

    如果您需要发送超过 64 个数据字节、则需要将数据拆分为多个 CAN FD 消息或数据包。  例如、如果需要发送 67 个数据字节、可以发送第一条 64 字节且 DLC = 15 的消息、然后发送另一条 3 字节且 DLC = 3 的消息。

    此致、

    Jonathan