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.
尊敬的团队
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