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.

[参考译文] TCAN1463-Q1:支持8Mbps 的配置。

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1131449/tcan1463-q1-configuration-to-support-8mbps

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

尊敬的团队

TC1463-Q 需要哪种配置来支持8Mbps?

MCU:AWR6843AOP

CAN TRx:TCAN1463-Q1

测试应用: ti/mmwave_sdk_03_05_00_04/packages/ti/drivers/canfd/test/xwr68xx/main.c

testSelection: MCAN_APP_TEST_EXTERNAL_DATA

除以下各项外、不进行任何修改。

    /* bit rate configuration */
    /* 1Mhz */
    mcanBitTimingParams.nomBrp      = 0x2U;
    mcanBitTimingParams.nomPropSeg  = 0x8U;
    mcanBitTimingParams.nomPseg1    = 0x6U;
    mcanBitTimingParams.nomPseg2    = 0x5U;
    mcanBitTimingParams.nomSjw      = 0x1U;

    /*5MHz*/
    mcanBitTimingParams.dataBrp     = 0x1U;
    mcanBitTimingParams.dataPropSeg = 0x1U;
    mcanBitTimingParams.dataPseg1   = 0x1U;
    mcanBitTimingParams.dataPseg2   = 0x2U;
    mcanBitTimingParams.dataSjw     = 0x1U;

    while (1)
    {
        /* Send data over Tx message object */
        if (testFrameType == CANFD_MCANFrameType_FD)
        {

            length = 128U;
            if(idIndex > 10)
            {
                idIndex = 0;
            }
            msgId = txMsgObjectParams.msgIdentifier + idIndex;
            Task_sleep(1U);
            while(length > MCAN_APP_TEST_DATA_SIZE)
            {

                retVal = CANFD_transmitData (txMsgObjHandle, msgId, CANFD_MCANFrameType_FD, MCAN_APP_TEST_DATA_SIZE, &txData[0], &errCode);
                length = length - MCAN_APP_TEST_DATA_SIZE;
                Task_sleep(1);
            }
            idIndex++;
        }
        ... blah blah ...
    }

问题。

由于 Task_sleep (1U)、它不符合8Mbps。

我如何解决这个问题???

最佳和评价

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

    哇,

    我们的团队未开发此代码、因此我们无法支持它。 我将此主题重新分配到传感器论坛、希望他们能为您提供帮助。

    此致、

    Eric Hackett

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

    Woong、您好!  

    内部检查并返回给您。  

    此致、  

    Sudharshan K N  

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

    Woong、您好!  

    下面是8Mbps 模式的配置。 如果您有其他意见、请告诉我。  

    /*8MHz*/

       mcanBitTimingParams.dataBrp    = 0x5U;

       mcanBitTimingParams.dataPropSeg = 0x2U;

       mcanBitTimingParams.dataPseg1  = 0x1U;

       mcanBitTimingParams.dataPseg2  = 0x1U;

       mcanBitTimingParams.dataSjw    = 0x1U;

    此致、  

    Sudharshan K N  

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

    尊敬的 Sudhashan。

    我认为我没有正确地问这个问题。 没有足够的信息或问题点、类似这样。

    如您在"ti/mmwave_sdk_03_05_00_04/packages/ti/drivers/Canfd/test/xwr68xx/main.C"中所示

    有一些表达式类似于"Task_sleep(1)" 、看起来像1毫秒的消耗。

    (在这种情况下,1毫秒可以传输8388kbit,可以通过计算来实现。)

    例如

    现在、我尝试通过配置为8Mbps 的 CANFD 发送128字节数据。

    1.发送128字节的第一部分(实际大小为64字节),耗时1/(16x1024)秒,大约为61us。

    2. Task_sleep (1)、花费1ms

    3、其余部分为128 (实际大小为64字节), 耗时1/(16x1024)秒,大约为61us。

    4、要通过 CANFD 发送128个字节、需要1.122ms。

    5. 128字节/1.122ms = 912656位/秒(近似值)

    请您解释一下吗?

    实际上、我必须发送数量为3072字节的数据。 (64字节* 48)

    为避免 上述问题,我尝试使用代码Task_sleep(1)” ,并尝试使用 “SOC_microDelay (N)"  

    如果 N 的值变小、则传输总时间会变短。

    但是 、在某个时候、会发生数据丢失。

    例如、  

    第1个64字节被完全传输。

    第2 个64字节被完全传输。

    第3 个64字节被完全传输。

    (笑声)

    第10 个64字节被完全传输。

    (笑声)

    缺少 nth  64字节

    (n+1)缺少 第64个字节

    (笑声)

    发送的总字节不是3072

    如何解决此问题?  

    请检查此问题。

    最佳和尊重。

    Choi。

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

    您好!  

    添加1ms 睡眠仅用于演示目的。 在实际应用中、建议用户根据 CAN 上的数据传输完成情况开发必要的框架来传输数据。 这可以使用 CAN TX 和 RX 的单独任务来实现。 需要根据应用用例开发代码。 本演示中提供的代码仅为示例。  

    此致、  

    Sudharshan K N  

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

    尊敬的 Sudharshan

    我知道 Task_sleep(1)是示例代码。

    您的回答中还有另一个问题。

    我想、这只是 CAN Tx 任务工作。 我无法理解上述受版本控制的 Rx 任务。

    我的测试配置如下: 启动后,设备将64字节48时间发送到 PC 中的 PCAN-View。 和功率循环。

    仍然存在未解释的问题。

    我猜、要传输64字节数据、CAN 收发器只需61us。

    以下是 伪代码。

    pseudocode
    
    LoopCnt = 0
    
    Loop Start
    
        CANFD_send(64bytes data) // it takes 61us
    
        WAIT(61us) // wait for send complete
    
        LoopCnt++
    
        if LoopCnt > 48
    
            break
    
    LoopEnd

    在这种情况下、如果 LoopCnt 大于20、则会发生数据丢失。

    我测试了等待时间61us、120us 250us 500us

    如果是250us、500us、则 transmionn 已完成。 但在其他情况下、数据会丢失。

    请检查此问题

     

     

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

    您好!  

    让我来看看它、然后返回给您。  

    此致、  

    Sudharshan K N  

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

    您好!  

    您是否尝试提高 PCAN 的采样率? 您是否还尝试通过连接到另一个硬件上的另一个 CAN 节点来执行测试? 请告诉我们。  

    此致、  

    Sudharshan K N  

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

    尊敬的 Sudhashan

    我已经尝试使用配置为以下的 pcan 进行测试。

    能否让我在 MCANAppInitParams()中进行孔配置?

    最佳和尊重

    Choi

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

    您好!  

    让我检查一下并返回给您。  

    此致、  

    Sudharshan K N  

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

    您好!  

    是否可以将 mcanCfgParams->darEnable      = 0x1U 更改为0x0? 这将在发生错误时启用自动重传。  

    此致、  

    Sudharshan K N