公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

你好

我试着用 xmc4500 Relax Lite 购物车从 Uart 那里收到一串带有 dave project 的角色。

我使用中断函数捕获 10 个字符然后使用 uart_Receive 进行读取(& UART_0,read_data,10);

我的问题是,如果我发送了不同数量的字符,则缓冲区未对齐(例如在测试可能的错误时),并且在检测到错误时我无法重新对齐。

我在位置 0 处有一个起始字符 = $,但是当缓冲区未对齐时无法正常工作。

怎么可能重置或清除 uart 缓冲区?

谢谢

 

uart_startReceiveIrq (& UART_0,read_data,10);/* 用户应用程序代码占位符。
下面的 while 循环可以用用户应用程序代码替换。 */
而 (1U)
{
uart_Status_T stat;i
f (sw_rx) {sw_rx = 0;

stat = uart_receive (& UART_0,read_data,10);if
(read_data [0]! ='$') ||(统计!= UART_STATUS_SACCESS)
{
UART_0.runtime->tx_data_count=10;
}
else
{UART_Transmit(&UART_0, read_data, sizeof(read_data)-1);}

}
}

void UART_RX(无效)

{
sw_rx = 1;
}

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/how-clean-Uart-buffer/td-p/653319

0 点赞
1 解答
Translation_Bot
Community Manager
Community Manager
Community Manager

@paoloz

根据 FIFO 配置,使用 RBUF 或 OUT 寄存器来读取接收到的数据。 在开始数据接收之前,会刷新接收缓冲区。 因此,只有那些在调用 API 后收到的数据才会被放置在用户缓冲区中。
因此,在您的情况下,接收缓冲区会自动刷新。
如果你启用了 FIFO 缓冲区以便清除这些缓冲区,你可以使用 API,xmc_usic_ch_rxfifo_Flus h () 来刷新这些 FIFO。
如果这不能解决你的问题,请分享示例项目和问题,以便我们进行调查。
希望这会有所帮助,如果您还有其他疑问,请告诉我。

最好的问候
Pradeep。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/how-clean-Uart-buffer/m-p/653982

在原帖中查看解决方案

0 点赞
2 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

@paoloz

根据 FIFO 配置,使用 RBUF 或 OUT 寄存器来读取接收到的数据。 在开始数据接收之前,会刷新接收缓冲区。 因此,只有那些在调用 API 后收到的数据才会被放置在用户缓冲区中。
因此,在您的情况下,接收缓冲区会自动刷新。
如果你启用了 FIFO 缓冲区以便清除这些缓冲区,你可以使用 API,xmc_usic_ch_rxfifo_Flus h () 来刷新这些 FIFO。
如果这不能解决你的问题,请分享示例项目和问题,以便我们进行调查。
希望这会有所帮助,如果您还有其他疑问,请告诉我。

最好的问候
Pradeep。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/how-clean-Uart-buffer/m-p/653982

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

谢谢我解决了你的建议。

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/how-clean-Uart-buffer/m-p/655113

0 点赞