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.

[参考译文] TM4C1290NCPDT:RTOS/TM4C1290:使用 RTOS UART 驱动程序时、如何设置 UART 中断 FIFO 深度选择

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/749033/tm4c1290ncpdt-rtos-tm4c1290-when-using-rtos-uart-driver-how-to-set-uart-interrupt-fifo-level-select

器件型号:TM4C1290NCPDT

您好!

我将 TI-RTOS 驱动程序用于 UART。 (TI-RTOS 2.16)

我想更改中断 FIFO 深度选择。

我在 UART_open()之后尝试过 UARTFIFOLevelSet API。

我的代码:

 //RTOS UART 驱动程序
 UART_Params UART_params;

 UART_PARAMS_INIT (UART_params);
 up->baudrate  = 50000;    //budrate 500kbps
 up->readDataMode = UART_DATA_BINARY;
 up->writeDataMode  = UART_DATA_BINARY;
 up->readReturnMode = UART_return_full;
 up->readEcho  = UART_ECHO_OFF;
 up->readTimeout = 100;

 UART = UART_OPEN (Board_UART6、&UART_params);

 //外设驱动程序库 UART API。
 // UARTIFLS 寄存器为中断 FIFO 深度选择。
 // RX FIFO 1/8到1/2 (UART_FIFO_RX4_8)
 UARTFIFOLevelSet (UART6_BASE、UART_FIFO_TX1_8、UART_FIFO_RX4_8);


结果表明 UARTIFLS (UART6 UARTIFLS:0x40012034)寄存器的值从0x00000000更改为0x00000010。

这是正确的方法吗?
或者还有其他正确的方法吗?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是一种好方法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的支持。

    在高负载时、UART 接收到的数据丢失了、这是一个问题。
    我还不知道原因。
    但是在更改中断 FIFO 深度选择后、它似乎可以正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我只能猜测原因。 我怀疑 CPU 负载太高、无法处理更高的数据速率。 当您将接收 FIFO 更改为仅在一半满时中断时、接收中断的数量下降到四分之一。 尽管您在接收中断例程中处理了4个或更多字节、但从 CPU 的角度来看、这更高效。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    nkd123、

    我可以将其标记为已解决吗?

    Todd