4

RPI と FPGA 間のシリアル通信をセットアップしようとしています。ただし、標準 C ライブラリ open() を使用してシリアル インターフェイスを初期化する場合に問題があります。スコープを使用して、RX および TX ラインを介して送受信されるものを監視しています。open を呼び出すと、RPI の TX ラインが 1 ビットの長さの間 Low になります。この動作は、他のコンピューター/Linux PC では見られません。要点は、FPGA はそれがスタート ビットであると考えているため、有効な送信を想定していますが、そうではないということです。

RPIにインストールされているminicomで確認しました。同じこと。minicom を開始すると、TX ラインが 1 ビットを送信します。minicom が開始されると、通信は期待どおりに実行され、すべてのバイトが正しいフレーム サイズになります。シリアル通信を開始するためのオープン呼び出し時に TX ラインがローになるのを抑制する方法はありますか? これは予期される動作ですか?

4

1 に答える 1

1

これは非常に大げさな予感ですが、PL011シリアル ポート ドライバーの機能からすると、このコードは少し怪しいようです。pl011_startup()

/*
 * Provoke TX FIFO interrupt into asserting.
 */

ポートの起動時に TX ラインをいじっているように見えます。これが、表示されているパルスを説明していますもちろん、これが起こっていると結論付ける前に、さらに調査が必要です。

だから、私の「答え」は次のように要約できると思います。

もちろん、これを回避する方法の 1 つは、FPGA 側である程度の注意を払うことです。「適切な」フレーミングはこれを処理し、偽の送信を破棄できることを明確にします。

更新:「適切な」メッセージが常に何らかのバイト シーケンスによってフレーム化される場合、FPGA は無効な (「フレーム化されていない」) データをとにかく破棄できるため、ランダム パルスの影響を受けなくなる可能性があることを意味しました。たとえば、メッセージは常にSOH(ヘッダーの開始) またはSOT(テキストの開始) シンボル (値がそれぞれ 0x01 および 0x02 のバイト) で始まるように定義できます。

于 2013-01-29T11:00:57.353 に答える