ホストボード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割り込みを実装しても、データ損失が発生している状況には役立ちません。
シリアル通信回線でフロー制御を有効にしてみましたか? –