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.

[参考译文] IWR1642BOOST:如何从 TI IWR1642BOOST Arm 内核进行非块 UART 读取

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1402093/iwr1642boost-how-to-do-non-block-uart-read-from-ti-iwr1642boost-arm-core

器件型号:IWR1642BOOST

工具与软件:

您好!  

我正在开发一个应用程序来执行从 TI IWR1642BOOST UART (SCI-A)进行的非阻塞 UART 读取。 "非阻塞"是指如果我请求2个字节、并且 UART 缓冲区中没有可用的数据、那么该函数应立即返回而无需等待。 我对 UART_read 和这两个 UART_readPolling 函数都进行了实验。 我注意到 readTimeout UART 参数中有一个参数、我尝试将其设置为0、如下所示、然后使用 UART_read 和 UART_readPolling

UART_Params_init (&params);
params.clockFrequency = gCPUClockFrequency;
params.baudrate =波特率;
params.isPinMuxDone = 1;
params.writeDataMode = UART_DATA_BINARY;
params.readDataMode = UART_DATA_BINARY;
params.readEcho = uart_echo_off;
params.readTimeout = 0;
// params.writeTimeout = 0;

//配置端口
句柄= UART_open (0、&params);

使用 UART_READ()时、我看到函数立即返回、但是当数据可用时、当 readTimeout =0时、该 API 不会读取任何数据。

readTimeout 参数似乎对 UART_readPolling 没有影响。  

是否有方法可以检查 SCI 缓冲器上是否提供数据?

或者采取其他一些针对 UART Rcv 实施"非阻塞"方法的方法?

谢谢

此致

Gayatri

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

    尊敬的 Gayatri:  

    请给我们一两天的时间来调查您的问题并作出回应。  

    此致、

    Josh

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

    尊敬的 Gayatri:

    要实现 UART 的非阻塞操作、需要启用中断。 您还可以使用 DMA/EDMA 将数据从 UART Rx 缓冲区传输到存储器。 此外、您还能够以非阻塞的方式根据中断直接从处理器读取。

    请参阅 SDK 中的以下示例

    mmwave_sdk_03_06_02_00-LTS;\packages\ti\drivers\uart\dma\uartsci_dma.c src

    mmwave_sdk_03_06_02_00-LTS\packages\ti\drivers\uart\dsci\uartsci.c src

    mmwave_sdk_03_06_02_00-LTS;\packages\ti\drivers\uart\EDMA.c src

    此致

x 出现错误。请重试或与管理员联系。