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