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.

[参考译文] CC2652RB:如何清除 UART2的 RxRingBuffer

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1053177/cc2652rb-how-to-clear-the-rxringbuffer-of-uart2

器件型号:CC2652RB

尊敬的 TI:

我的 SDK 版本是  simplelink_cc13x2_26x2_SDK_4_30_00_54、我在 Rx 回调模式下使用 UART2。

我发现每次 RxRingBuffer 满时都将调用 Rx 回调函数、但这不是我所期望的。

那么、我想知道是否有某种方法可以清除 RxRingBuffer?

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

    你好,junde,

    您是否试用 过 UART2_flushRx?  您是否将 代码建立在 uart2callback 的基础 上、并且能否提供任何证明问题的代码摘录?

    此致、
    Ryan

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

    尊敬的 TI:

    我已经尝试过 UART2_flushRx、但没有影响。 我的代码如下所示:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /*
    * CODE IN INIT
    */
    int8_t uart2_init(void)
    {
    UART2_Params uartParams2;
    /* Create a UART: write in BLOCKING mode, and read in callback mode*/
    UART2_Params_init(&uartParams2);
    uartParams2.baudRate = RSBUS_BAUDRATE;
    uartParams2.readMode = UART2_Mode_CALLBACK;
    uartParams2.readCallback = UART2_read_callback;
    uartParams2.readReturnMode = UART2_ReadReturnMode_PARTIAL;
    uartHandle = UART2_open(CONFIG_UART2_RSBUS, &uartParams2);
    if (uartHandle == NULL) {
    /* UART2_open() failed */
    Display_printf(display, 0, 0, "UART2_open failed");
    return FALSE;
    }
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您似乎正在尝试在接收预期数据之前清除缓冲区。  您可以使用 UART2_rxDisable -> UART2_getRxCount -> UART2_Read -> UART2_rxEnable 来完成此操作。  或者、您可以使用数据包排序来识别要过滤掉的接收数据中不需要的部分。

    此致、
    Ryan