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.

[参考译文] AM2634:在 CAN 次级采样点的 TDCO 配置上

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1484502/am2634-on-the-tdco-configuration-of-the-can-secondary-sampling-points

器件型号:AM2634

工具/软件:

CAN 采样点的配置存在几个问题、我想确认一下:

1、CANFD 的采样点数据段配置要求是采样点的80%。 在下图中、TQS 总数为40且 TDCO 为400的配置参数是否正确? 建议采用哪些配置?

2.为什么 EB 中的配置,如上述配置,最多只能配置400个,并不意味着只能配置80%(400/500)个采样点。

3.手册中二次采样点的描述如图所示,是否可以理解二次采样点分为两部分:自动测量的延迟计数器和 EB 配置中的 TDCO。 自动测量器件是否在 SSP 启用后立即启用它?

是否有方法测试配置的 TDCO? 如果第一个问题中的 TDCO 配置为200、会产生什么影响?

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

    您好、

    我能否理解您所需的采样率是多少?
    您使用的是标称波特率还是标准波特率?

    以便我可以回答以上问题。

    谢谢、

    Mudit Bhansali  

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

    您好、

    采样点(SP)需要80%

    2、第二个采样点(SSP)也需要80%

    CAN FD 数据段波特率需要2M bps、仲裁段波特率需要 500k  

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

    您好、

    能否查看我们的默认配置、我已经拥有了这一权利。

    谢谢、

    Mudit Bhansali

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

    您好、

    图:中显示了 EB 的默认配置

    CanControllerFdBaudRate:5000

    CanControllerPropSeg:2.

    CanControllerSeg1:2

    CanControllerSeg2:3

    CanControllerSyncJumpWidth:2

    CanControllerTxBitRateSwitch:Enable

    CanControllerTrcvDelayCompensationOffset:180

    1.您的意思是 TDCO 是180也符合 配置吗?

    CanControllerFdBaudRate:2000

    CanControllerPropSeg:17

    CanControllerSeg1:14

    CanControllerSeg2:8.

    CanControllerSyncJumpWidth:8.

    CanControllerTxBitRateSwitch:Enable

    CanControllerTrcvDelayCompensationOffset:180

    2.您的 意思 是 TDCO 是180拟合 SSP=80%、 那么100或400对吗?

    3.是否有 TDCO 和 SSP 的计算方法? 例如、如果 SSP=80%、则 TDCO=(CanControllerPropSeg+CanControllerSeg1+CanControllerSeg2+1)*80%。  我想知道这种关系。

    谢谢、

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

    您好、

        CanConfigSet_CanController_0_CanControllerBaudrateConfig_0 =
    {
        1000U,      /* in Kbps */
        20U,       /* Prop Segement value */
        14U,          /* Phase Segment 1 */
        5U,          /* Phase Segment 2 */
        1U, /* Sync jump width */
        40U, /* Sum of all timing parameters */
        2U,   /* Controller BRP value for Baud */
    	 /* Data phase Baudrate */
        {
            5000U,     /* in Kbps */
            3U,        /* Prop Segement value */
            3U,           /* Phase Segment 1 */
            1U,           /* Phase Segment 2 */
            1U,  /* Sync jump width */
            8U, /* Sum of all timing parameters */
            2U,   /* Controller BRP value for Baud */
            14U, /* Specifies the Transceiver Delay Compensation Offset */
            (boolean)TRUE, /* Specifies if the bit rate switching shall be used */
        }
    };

    在上面的 MCAL 配置中、让我们了解计算:

    比特率(每秒位数)=(CAN 时钟以 Hz 为单位)/ BRP /(1 + TSEG1 + TSEG2)

    其中:

    CAN 时钟 是 CAN 模块(80MHz)的功能时钟

    Brp:比特率预标量值

    TSEG1、TSEG2:用于定义位采样点的时间段。

    TSEG1:采样点之前的时间=  Prop_Seg + Phase_Seg 1

    TSEG2:采样点后的时间= Phase_Seg 2

    在此配置中、计算比特率:标称值

    TSEG1= 20+14=34
    TSEG2= 5.
    BRP= 2.
    标称比特率= 80MHz /(2*(34+5+1))= 1Mbps

    在此配置中、计算比特率:数据

    TSEG1= 3+3=6
    TSEG2= 1.
    BRP= 2.
    数据比特率= 80MHz/(2*(6+1+1))= 5Mbps

    采样公式:采样点(%)=(1 + TSEG1)/(1 + TSEG1 + TSEG2)、 采样点的典型值介于75%至90%之间。
    采样(%)和 TDCO 之间没有关系。

    希望此计算有所帮助。

    谢谢、
    Mudit Bhansali

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

    您好、

    我 已经知道如何计算 SSP 和 TDCO 的计算方法的 SP、仍然不太理解、您能举一个例子来解释 SP。

    谢谢、

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

    是、 `ΩtrcvDelayCompensationOffset`  和辅助采样点(SSP)百分比之间存在关系。

     μ`trcvDelayCompensationOffset` 是 CAN FD 中用于补偿收发器引入的延迟的参数。 该延迟可影响采样点(包括 SSP)的时序。

     `ΩtrcvDelayCompensationOffset`  通常用于调整 SSP 位置、以确保其处于所需的范围内。 SSP 百分比通常根据位时间计算、并 trcvDelayCompensationOffset` 使用`μ s 来微调该计算。

    谢谢、
    Mudit Bhansali

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

    为了获得所需的 SSP(%)、我们可以使用 trcvDelayCompensationOffset 来调整 SSP 位置。

    SSP 百分比=((SS + PS1 +(PS2 x (1 -(SSP 位置/位时间)))/位时间) x 100
    其中、

    - SSP Location
     是时间形式的次级采样点的位置、通常以纳秒(ns)或微秒(us)为单位进行测量。

    - Bit Time 是一位的总时间、通常以纳秒(ns)或微秒(us)为单位。

     通常、 trcvDelayCompensationOffset 用于调整 SSP 位置以补偿收发器延迟。  trcvDelayCompensationOffset 正值将 SSP 移到右侧(即位时间的稍后部分)、而负值将其移到左侧(即位时间的早期部分)。

    例如:

    // Calculate the SSP location without compensation
    uint32_t sspLocation = (bitTime * sspPercentage) / 100;
    
    // Calculate the SSP location with compensation
    uint32_t compensatedSspLocation = sspLocation + trcvDelayCompensationOffset;
    
    // Calculate the new SSP percentage with compensation
    uint32_t compensatedSspPercentage = (compensatedSspLocation * 100) / bitTime;


    如需了解更多详细信息、请参阅 TRM: https://www.ti.com/lit/ug/spruj55b/spruj55b.pdf?ts = 1742375150848&ref_url=https://www.253A%252F%252Fwww.google.com%252F

    谢谢、
    Mudit Bhansali

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

    您好、

    1.通过 EX 的计算方法、我们可以通过图中所示的参数计算 sspLocation、但我们仍然无法确认将 trcvDelayCompensationOffset 参数配置为多合适。 您能否在图中为我们提供一个合适的参数并解释原因?

    此外、我们使用的 CAN 收发器是 TCAN1145。

    根据您提供的信息、我能否理解 TDCO 的值 可以设置为 TCAN1145 (215或225ns)的环路延迟参数、如下图所示?

    如果第二个为 true、我们是否可以理解、当 sspPercentage 为80%、sspLocation=400ns 时、补偿 SspLocation 应等于 sspLocation + trcvDelayCompensationOffset = 400ns + LOOP 延迟= 400ns + 215ns。 因此、composedSspLocation 为615ns。

    我们假设 sspPercentage 为100%、因此应补偿 SspLocation 为500ns+215ns、最大应补偿 SspLocation 只能为715ns。

    因此、为什么 sspPercentage 为80%、TDCO 设置为400ns、补偿 SspLocation 为400ns+400ns > 715ns 仍然可以正常收集 CAN 数据、而不是显示错误帧。

    谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.通过 EX 的计算方法、我们可以通过如图计算的 sspLocation 中所示的参数、但我们仍然无法确认 trcvDelayCompensationOffset 参数配置为多合适。 您能否在图中为我们提供一个合适的参数并解释原因?

    建议将 TDCO 和 TDCF 设置为与 DTSEG1等效的时间量。 您需要根据使用的 DBRP 将 DTSEG1寄存器的 tq 转换为等效的 mtq。

    在本例中、DBRP=5 (DBCR/TDCO) 80MHz、1tq=5mtq --> 400MHz = 5*(17+14)=155mtq

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

    您好、

    通过您的描述、我能理解:

    DBRP=MCU 时钟/MCAN 时钟

    TDCO= DBRP* TSEG1=DBRP*(Prop_Seg + Phase_Seg 1)

    谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    2.根据您提供的信息 、我能否理解 TDCO 的值可以设置为 TCAN1145 (215或225ns)的环路延迟参数、如下图所示?

    发送器延迟补偿包含两个不同的延迟值。 第一个延迟值是实际发送器循环延迟、由器件在每个发送的 CAN FD 帧上的 FDF 位到 res 位的下降沿测量。  第二个延迟由寄存器值中配置的 TDCO mtq 设置。实际发送器延迟补偿值(TDCV)是环路延迟和 TDCO 之和。

    环路延迟(TCAN1145 DS 中为215ns 或225ns)不包括电缆延迟。  

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

    尊敬的 Xinlei:

    DBRP 定义时间量子的长度(位时间的基本时间单位)、位时序逻辑(SEG1、SEG2、SJW)定义位时间中的时间量子数。 位时间(ns)为1000/波特率(Mbps)。

    MCAN 功能时钟源可以是 SYS_CLK、XTALCLK 等  

    时钟源由 MSS_RCM_MSS_MCAN0_CLK_SRC_SEL 选择

    例如、MCAN FCLK = SYS_CLK / CAN_CLKDIV_SEL 位

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

    tq = CAN#_CLK/DBRP

    位时间=(SEG1 + SEG2 + 1 (同步))* tq

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

    您好、

    根据你所说的1tq=5mtq、tDCO = 5*(17+14)=155mtq、我可以说 TDCO 等于 (CanControllerPropSeg +CanControllerSeg1)* tq

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TDCO 是否等于 (CanControllerPropSeg +CanControllerSeg1)* tq

    是的、您回答正确。 TDCO 的单位为 mtq。 TDCO =  (CanControllerPropSeg +CanControllerSeg1)* tq / mtq

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

    您好、

    我将仔细检查、TDCO 为 EB 需要填充的值为387.5ns。TDCO = 5*(17+14)=155mtq=155*2.5np=387.5ns

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

    完成测试后、让我们知道您的测试结果。 谢谢

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

    您好、

    我的意思是、如果以纳秒为单位进行测量、根据您提到的计算方法、TDCO 的值是否为387.5ns?

    谢谢、

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

    是的、您可以更正。