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

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

我嘗試使用 xmc4500 放鬆精簡版車來收到來自戴夫項目的 Uart 的一系列字符。

我使用中斷功能捕獲 10 個字符並使用 UART_RECEIVE 讀取(& UART_0,讀數據,10);

我的問題是,如果我發送了不同數量的字符,緩衝區不對齊(例如測試可能的錯誤時),並且在檢測錯誤時無法重新對齊。

我在位置 0 有一個開始字符 = $,但是當緩衝區對齊錯時無法工作

如何重置 uart 緩衝區或清除?

謝謝

 

UART_開始接收 IRQ (& UART_0, 讀取 _ 數據 ,10); /* 用戶應用程式代碼的預留位置。
下面的 while 循環可以用戶應用程序代碼替換。 */
而 (1U)
{
UART _ 狀態 _t 統計值;
如果(sw_rx){sw_rx = 0;

統計 = UART _ 接收(& UART_0,讀數據,10);如果(讀數據
[0]! = '$')||(統計值!= UART _ 狀態 _ 成功))
{
UART_0.runtime->tx_data_count=10;
}

{UART_Transmit(&UART_0, read_data, sizeof(read_data)-1);}
其他

}
}

無效 UART_RX(無效)

{
sw_rx = 1;
}

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

1 解決方案
Translation_Bot
Community Manager
Community Manager
Community Manager

@paoloz

根據 FIFO 配置,可以使用 RBUF 或 OUT 寄存器來讀取接收的數據。 在開始資料接收之前,接收緩衝區會被清除。 因此,只有調用 API 後收到的數據才會放置在用戶緩衝區中。
因此,在您的情況下,接收緩衝區會自動沖洗。
如果您已啟用 FIFO 緩衝區,則為了清除這些緩衝區,您可以使用 API,XMC_USIC_CH_RXFIFO_flush () 來清除這些 FIFO。
如果這無法解決您的問題,請分享示例項目和問題,以便我們可以研究它。
希望這有助於並讓我知道,如果您有任何進一步的疑問。

最好的問候
普拉德普.

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_flush () 來清除這些 FIFO。
如果這無法解決您的問題,請分享示例項目和問題,以便我們可以研究它。
希望這有助於並讓我知道,如果您有任何進一步的疑問。

最好的問候
普拉德普.

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