我使用MBED(在線IDE &庫)用於我的應用程序,主機板NUCLEO-411RE和4D Systems觸摸顯示器通過全雙工串行通信連接。 我能夠成功地從主機發送數據以正確顯示。但是,當從顯示器向主機發送數據時,我正在丟失數據。 將波特率降至9600並不能解決問題。MBED串行丟棄數據
主機處理器保持超級循環,第一個動作是檢查LCD是否發送串行數據(lcd4d.readable())。主機然後每次接收一個字符(lcd4D.getc()),通過USB回顯給PC(pc.printf(& recChar))並進行一些進一步的處理。
我也在一個單獨的終端會話上監視物理主機接收引腳。使用這個我確定LCD正確地發送數據,但是這個數據沒有被主機處理器正確接收和迴應(PC的回聲僅用於調試目的)。
參見超級環路的代碼片斷:
do {
if (lcd4D.readable()) {
recChar = lcd4D.getc();
pc.printf(&recChar);
lcd4D_intr_Rx();
}
也可參考附絲網印刷表示終端離開PC回波(數據丟失)和終端正確的硬件針顯示器(確認正確地發送的數據)。
實現SerialRX中斷也不能幫助仍然發生數據丟失的情況。
您是否嘗試在串行通信線路上啓用流量控制? –