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.

[参考译文] AM2634:与 Tamagawa 编码器通信时、如何启用 UART 的硬件流控制?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1405998/am2634-how-to-enable-the-hardware-flow-control-of-uart-when-communicating-with-tamagawa-encoder

器件型号:AM2634

工具与软件:

 与 Tamagawa 编码通信时、我将 RTSn 配置为 GPIO (软件流控制)。  通信测试在没有断点的情况下通过。

当 断点在调试时处于活动状态时、 UART_RXFIFO_LVL 小于预期值。 当  断点处于非活动状态时、不会出现此问题。

void encSendDataInBytes(const uint8_t* data, uint8_t len)
{
    uint8_t u8Tmp = 0;
    //read the data to flush the rx fifo
    while((uint16_t)HW_RD_REG32(ENC_UART_ADR + UART_RXFIFO_LVL) != 0 )
    {
        u8Tmp = (uint8_t)HW_RD_REG32(ENC_UART_ADR + UART_RHR);
    }
    HW_WR_REG32(ENC_UART_ADR + UART_FCR, HW_RD_REG32(ENC_UART_ADR + UART_FCR) | 0x6);

    //send the data
    GPIO_pinWriteHigh(GPIO_ENC_DE_BASE_ADDR,GPIO_ENC_DE_PIN);//set RTSn high
    while(len--)
    {
        UART_putChar(ENC_UART_ADR, *data++);
    }
    while (((uint32_t) (UART_LSR_TX_SR_E_MASK | UART_LSR_TX_FIFO_E_MASK) !=
            ((uint32_t) (UART_LSR_TX_SR_E_MASK |UART_LSR_TX_FIFO_E_MASK) &  HW_RD_REG32(ENC_UART_ADR + UART_LSR) )));

    GPIO_pinWriteLow(GPIO_ENC_DE_BASE_ADDR,GPIO_ENC_DE_PIN);//set RTSn low
}

我想启用 硬件流控制来实现此功能、但 AM263x_SDK 中没有 API。 如何 启用 UART 的硬件流控制?

是否有我可以参考的示例?

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

    我将 UART1设置为 RS -485模式、  与 编码器的通信运行良好。 但  调试时、通信仍被断点中断。

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

    大家好、张晓雪

    我想启用 硬件流控制来实现此功能、但 AM263x_SDK 中没有 API。 如何 启用 UART 的硬件流控制?[/QUOT]

    在09.02 MCU_PLUS_SDK 中、我们可以选择在 SYSCFG 本身中启用硬件流控制。

    此致、
    Shaunak