2016-09-07 8 views
1

ホストボードNUCLEO-411REと4D Systemsタッチディスプレイをフルデュプレックスシリアル通信で接続して、アプリケーションにMBED(オンラインIDE &ライブラリ)を使用します。 ホストからエラーなしで正常にデータを送信できます。しかし、ディスプレイからホストにデータを送るとき、私はデータを失っています。 ボーを9600に減らしても問題は解決しません。MBEDシリアルドロップデータ

ホストプロセッサは、LCDがシリアルデータ(lcd4d.readable())を送信するかどうかを確認するための最初の操作でスーパーループのままです。 ホストは、一度に1文字(lcd4D.getc())を受信し、usb(pc.printf(& recChar))を介してPCにエコーし、それ以上の処理を行います。

また、別の端末セッションで物理ホスト受信ピンも監視しています。これを使用すると、LCDがデータを正しく送信することは確かですが、このデータは受信されず、ホストプロセッサによって正しくエコーされません(PCへのエコーはデバッグ目的でのみ使用されます)。

スーパーループのコードスニペットを参照してください。

do { 
    if (lcd4D.readable()) { 
     recChar = lcd4D.getc(); 
     pc.printf(&recChar); 
     lcd4D_intr_Rx(); 
    } 

は、端末左PCエコー(データ損失)と(正しく送信されたデータを確認する)端末右ハードウェアピンモニタを示す添付のスクリーン印刷を指します。

SerialRX割り込みを実装しても、データ損失が発生している状況には役立ちません。

ありがとうございます。私はアイデアがありません。 enter image description here

答えて

1

私はこの問題を解決しました。 問題は、ホストプロセッサが受信したシリアルデータに十分な速さで応答する必要があることでした。私は基本的に高速のシリアル受信バッファを実装し、受信した文字は割り込み時にすぐにバッファされるようにしました。

+0

シリアル通信回線でフロー制御を有効にしてみましたか? –

関連する問題