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.

[参考译文] RTOS:UART_READ()缺少字符

Guru**** 2595805 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/609804/rtos-uart_read-missing-characterts

Thread 中讨论的其他器件:CC2650

工具/软件:TI-RTOS

大家好

我在简单 BLE 外设项目中添加了 UART、我遇到了与 UART_READ()相关的问题

UART_PARAMS_INIT (uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.writeMode = UART_MODE_CALLACK;
uartParams.writeCallback = WriteCallback;
uartParams.readMode = UART_MODE_CALLACK;
uartParams.readCallback = ReadCallback;
uartParams.readReturnMode = UART_return_full;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudrate = 9600;
UART = UART_OPEN (Board_UART0、uartParams); 

我正在调用 UART_READ (UART、&INPUT、1);  在 SimpleBLEPeripheral_taskFxn 上的主循环内、它会在大部分时间内工作、但有时我会错过1个字节1/500次。 我的应用程序要求以字节到字节的方式进行读取、这是没有其他方法的。

我的担心是,每次我希望接收 UART 数据并且 UART 读取被定义为回调(伪中断)时,我必须调用 UART_READ(),但有时它会丢失传入的数据

我尝试了几种方式在 UART 读取回调内 、在 SimpleBLEPeripheral_taskFxn 的主循环内调用 UART_Read、但仍然会发生相同的问题

我在论坛上阅读了一些个别帖子、但没有真正的解决方案示例:

e2e.ti.com/.../484490

https://e2e.ti.com/support/wireless_connectivity/proprietary_sub_1_ghz_simpliciti/f/156/t/538869

硬件:CC2650

谢谢

ELA

有人可以用一只手来解决这个问题吗?

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

    我们在我们的主机测试固件中广泛使用 UART、并且看不到数据丢失。 您的波特率很低、您是否在应用中执行了可能会阻止处理的操作? 是否已尝试将 FIFO 中断设置为较低的阈值?

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

    嘿、JXS、我没有使用 FIFO 中断对其进行测试(您能给我任何使用参考吗?) 我使用的 UART 基本上是 CC2650launchpad 的回显示例、当我使用 UART_READ 和 UART_WRITE 时、会更改为使用回调函数。 对于这种情况,我将 UART_READ()函数调用到我的任务 Fxn()中,如果我在任务 Fxn 之外调用它,则不起作用。

    #update#我的应用程序使用 BLE、我注意到当外设链接/连接到中央设备时、会出现 UART 丢失的数据

    谢谢:)