工具/软件:TI-RTOS
大家好、
我之前的项目是使用 Tiva 板完成的。 但是、现在我们已转到 MSP432 Launchpad、我们将使用 Simplelink SDK 版本。
我正在使用 RTOS 概念、我正在尝试查找 Tiva 驱动程序库中是否有类似"UARTCharsAvail (uint32_tBase)"的函数、以检查接收 FIFO 中是否有字符用于连续 UART 操作?
如果没有、请告诉我、我必须找到解决方案。
提前感谢您。
Vikram
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-RTOS
大家好、
我之前的项目是使用 Tiva 板完成的。 但是、现在我们已转到 MSP432 Launchpad、我们将使用 Simplelink SDK 版本。
我正在使用 RTOS 概念、我正在尝试查找 Tiva 驱动程序库中是否有类似"UARTCharsAvail (uint32_tBase)"的函数、以检查接收 FIFO 中是否有字符用于连续 UART 操作?
如果没有、请告诉我、我必须找到解决方案。
提前感谢您。
Vikram
Vikram、
如果我正确读取了您的意图,我认为 UART_read()函数可能已经满足您的需要。 此 API 使用 uartParams 结构来定义"读取返回模式"、其中包括将导致读取缓冲区填满、直到输入流到达换行。
MSP432P4111 OutOfBox 演示程序中说明了此行为。 查看 UART_thread.c 源文件以查看如下所示的以下代码片段。 在此代码中、设置 UART_Handle 时使用 UART_RETURE_NEWLINE 读取模式。 这会设置一个 ISR 回调函数、每当输入流到达换行时、该函数就会调用。
请告诉我这是否是您所使用的功能。
/*定义 UART 参数*/
UART_PARAMS_INIT (uartParams);
uartParams.writeDataMode = UART_DATA_TEXT;
uartParams.readDataMode = UART_DATA_TEXT;
uartParams.readReturnMode = UART_return_NEWLINE;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudrate = 115200;
UART_Handle = UART_OPEN (Board_UART0、uartParams);
if (UART_Handle == NULL){
/* UART_open()失败*/
while (1);
}
while (1){
UART_READ (UART_Handle、&rxString、MAX_STR_LENGTH);//input = RXD 字节
----------------------
此致、
Bob
尊敬的 Bob:
我尝试将该概念用于演示 UART 代码、但没有发现结果有任何差异、因此您可以解释使用 UART_RETURE_NEWLINE v/s UART_RETURE_FULL 有何区别;
我要从中获取数据的来源对我来说是一个黑盒、因为我们无法访问它将要发送的数据类型。
任务是有一个脉冲发生器、该脉冲发生器通过 MSP432上的看门狗事件触发、并开始通过其 UART 线向 MSP432发送数据。 因此我们不确定它是否每次都发送新的行字符?
谢谢你
Vikram
尊敬的 Bob:
感谢你的答复。
是的、我只有一个 MSP432器件通过 UART 与另一个器件(微脉冲发生器)进行通信。 看门狗的概念不是由另一个器件触发的、而是在 MSP432中以固定的时间间隔触发看门狗、并发布该看门狗触发事件、 我打开另一台设备并发送一些回复命令、另一台设备开始发送一段时间的数据流。
因此、我希望确保我不会收到缓冲区溢出错误、因为我必须使用环形缓冲区来持续收集接收到的数据、我也不想错过接收到的数据。
我正在使用 UART_READ 命令、但问题是有时、我仍然遇到缓冲区溢出错误。
因此、如果有一个类似于 UARTCharsAvail 的函数、我可以使用它在特定的固定数据值之后验证是否还有其他需要接收的内容。
谢谢你
Vikram
Vikram、
确定此处的 Rugh 方法将重新确定对传入数据流的了解程度,但以下是需要考虑的几个因素:
1. UART 驱动程序 API 在 打开/初始化(UART_params_init()) UART 实例时具有相应的选项
2.您也可以使用 UART_readPolling(),它在读取之前不会返回 字节数。 如何使用此功能以及设置的大小取决于传入的数据。 再说一次、如果 远小于缓冲器大小、则可以减少缓冲器溢出的可能性。
此致、
Bob