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.

[参考译文] LAUNCHXL-CC26X2R1:LAUNCHXL-CC26X2R1

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1060096/launchxl-cc26x2r1-launchxl-cc26x2r1

器件型号:LAUNCHXL-CC26X2R1

UART 问题

 

我正在使用 CLI_FTD 代码。 处理 UART 模块。 我最初尝试 通过 COM 端口读取数据、并希望 将相同的数据写回 COM 端口。

以下是所做的修改:

*

静态空 uartReadCallback (UART2_Handle aHandle、void * aBuf、size_t Alen、

                            void * userArg, int_fast16_t status)

{

   (空) aHandle;

   (无效)aBuf;

   (无效)用户报告;

   (无效)地位;

   PlatformUart_receiveLen = Alen;

   UART2_WRITE (平台 UART_uartHandle、aBuf、

               Alen、NULL);

  // platformUartSignal (platform_UART_event_RX_DONE);

}

测试1:

从串行终端发送字符“c”,并观察到在终端上发回相同的字符。

 

测试2:

从串行终端发送字符“h”。并期望在终端上发回相同的字符“h”。 但是发送的数据是“ch”,数据长度是2。

 

 数据会附加到缓冲区中、而不是替换。

帮助我了解缺失的东西、从而获得预期的输出。

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

    您好!

    您似乎绕过了事件  platform_UART_EVENT_RX_DONE。

    在默认代码中,将处理此事件:

    void platformUartProcess(uintptr_t arg)
    {
        if (arg & PLATFORM_UART_EVENT_TX_DONE)
        {
            otPlatUartFlush();
            otPlatUartSendDone();
        }
    
        if (arg & PLATFORM_UART_EVENT_RX_DONE)
        {
            otPlatUartReceived(PlatformUart_receiveBuffer, PlatformUart_receiveLen);
            PlatformUart_receiveLen = 0;
            UART_read(PlatformUart_uartHandle, PlatformUart_receiveBuffer,
                      sizeof(PlatformUart_receiveBuffer));
        }
    }

    请注意、它 会再次调用 UART_Read (由于您使用的是 UART2、因此它应由 UART2_Read 进行调用)。 否则、UART2将按顺序继续读取同一个缓冲区。

    总之、请尝试以下更改:

    1. 取消 对 platformUartSignal 的注释(platform_UART_event_RX_DONE);
    2. 在 platformUartProcess 中、将 UART_read 替换为 UART2_read

    谢谢、
    Toby