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**** 1973395 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

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

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* 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;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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++;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

问题。

由于 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。

    以下是 伪代码。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    pseudocode
    LoopCnt = 0
    Loop Start
    CANFD_send(64bytes data) // it takes 61us
    WAIT(61us) // wait for send complete
    LoopCnt++
    if LoopCnt > 48
    break
    LoopEnd
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    在这种情况下、如果 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  

x 出现错误。请重试或与管理员联系。