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.

[参考译文] CC2340R5:UART 数据接收(带数据流)中的延迟

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1491431/cc2340r5-delay-in-uart-data-receiving-with-data-stream

器件型号:CC2340R5

工具与软件:

使用 CC2340R5时、我在接收 UART 时遇到问题。
最初的问题是在我的自定义项目中 、简而言之、我的项目会将数据从 UART 回传到 BLE、反之亦然。

为了简化支持、我在添加了少量代码的情况下重复了示例数据流中的问题。


使用的 Simplink SDK 版本:8.20.0.119、8.40.2.01

我已完成以下操作来重现此问题:

我已经在"Data Stream"示例中添加了 UART 初始化 、默认参数相同。

 UART2_Params p;
 UART2_Params_init (&P);
 myuarthandle=UART2_open (CONFIG_UART2_0、&P);

我正在将 ble app nrfConnect 的字节流发送到我的 cc2340r5器件、并 使用将所有数据写入 UART  

 UART2_write (myuarthandle、pValue、len、NULL);

我还将 UART RX 与 UART TX 连接在一起、以回显我的数据。

我已添加以下代码、用于接收 UART 数据并写回 BLE 连接。

静态 void* uart_recv_task (void* vData)
    Call_Entity 实体;
  Call_Sync 4.12.45le msgSyncHdl;
  iCall_registerApp (&entity、&msgSyncHdl);
  uint8_t b[100]=0};
  int a=0
  
   while (1){
          UART2_readTimeout (myuarthandle、b、1、&a、1);
          如果(a>0)
          {
             dsp_sendData ((uint8 *) b、a);
          }
          
          vTaskDelay (1)
          }
}

现在的问题是我 从 ble 批量接收回波数据。 该问题取决于数据长度。 长度越长、批次就越多。
我随附一张接收到的数据的屏幕截图。

由于我尚未添加任何此类延迟、因此行为非常奇怪。
此外、问题批次延迟的模式几乎是40的倍数。

我还在 BLE 禁用的情况下进行了测试、并通过测量 UART 上最后发送的信号与 UART 上最后接收的信号之间的节拍差异。
在本例中、节拍差是10的倍数。

我还验证了 uart_recv_task 是否每2ms 执行一次。

如有任何帮助、我将不胜感激。
谢谢

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

    您好 Gurpal、

    感谢您的咨询。

    您能否增加 UART 读取函数的大小? 我相信您每次只读取1个字节。

    请告诉我如何发展。

    BR、

    David。

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

    感谢您的答复。

    为了说明、在最初的场景中、我将使用 DMA 模式并从环形缓冲区读取所有可用数据。 不过、我会遇到类似的数据延迟问题。

    为了帮助排除故障、我已在示例项目中重新创建此问题、以便于重现。

    此外、我的应用需要能够逐字节读取数据或一次读取所有可用数据、具体取决于所处的情况。

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

    您好 Gurpal、

    您能否分享一下该代码的最新 UART 部分? UART2_readTimeout (myuarthandle、b、1、&a、1);您是否将大小设置为1字节?

    BR、

    David。

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

    感谢您的答复
    我已经用更长的长度进行了测试、它工作正常。

    奇怪、为什么它不能在尺寸1上使用。

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

    您好 Gurpal、

    如果将 size 设置为1、则一次只读取1个字节、直到清空缓冲区。

    BR、

    David。