何が問題になるのか: 非同期シリアル版

ブログ

ホームページホームページ / ブログ / 何が問題になるのか: 非同期シリアル版

Jan 22, 2024

何が問題になるのか: 非同期シリアル版

それは世界で最も簡単なこと、つまりシンプルで単純なシリアル データです。 これは、世の中のほぼすべての組み込みシステムのフォールバック通信プロトコルであるため、本当に使用したいプロトコルの 1 つです。

それは世界で最も簡単なこと、つまりシンプルで単純なシリアル データです。 これは、世の中のほぼすべての組み込みシステムのフォールバック通信プロトコルであるため、チップがダウンしているときに本当に動作する必要があるプロトコルです。 それなのに! 最も必要なときには、非同期シリアルであってもデバッグに数時間の時間がかかり、頭皮に数本の白髪が増える可能性があることに気づくかもしれません。

この記事では、非同期シリアル プロトコルで問題が発生する可能性のあるもののほとんど (すべて?) と、この最も便利なデータ転送方法を診断およびデバッグする方法について説明します。 目標は、問題が発生する可能性があることを十分に認識して、問題が発生したときに数時間を無駄にするのではなく、数分で体系的にトラブルシューティングできるようにすることです。

私に電子的に送信したい 8 ビットのデータがあると想像してください。 間に 8 本のワイヤ (プラスアース) がある場合、8 つのスイッチを切り替えて各ワイヤに高電圧または低電圧をかけるだけです。 相手側にいくつかの LED がある場合は、どの LED が点灯するかを読み取るだけで完了です。 しかし、8 本のワイヤは銅の量が多くなります。 そこで代わりに、1 本のワイヤ (+ アース) だけを使用して、一度に 1 ビットを送信することにします。 これがシリアル通信の本質です。時間の経過とともにワイヤ上の電圧を正確に変化させることで、ビットが直列に送信されます。

簡単そうに聞こえますが、ここでいくつかの選択をする必要があります。 各ビットをどのくらいの速さで送信しますか? 点灯した LED は 1 を表しますか、それとも 0 を表しますか? メッセージがいつ開始または終了するかをどうやって知ることができますか? 最後に、お互いにデータを送信する場合は、2 本のワイヤが必要になります。 私がどちらに送信しているのか、あなたがどちらに送信しているのかをどうやって知ることができるのでしょうか? これらの選択のそれぞれが、物事を間違えたり、バグが忍び込んだりする場所です。

どのワイヤがどの方向にデータを送信するかという最後の点は、驚くほど一般的な混乱の原因であるため、デバッグを開始するのに適しています。

「RX」と「TX」はそれぞれ「受信」と「送信」を表します。 ほとんどのシリアル通信システムにはそれぞれ 1 つずつあります。 多くの場合、セットアップは次のようになります。一方のデバイスの「GND」をもう一方のデバイスの「GND」に接続することになります。 おそらく電源レールも共有するので、一方の「VCC」をもう一方の「VCC」に接続します。 次に、一方のデバイスの「RX」をもう一方のデバイスの「RX」に接続します。

そしてそれが一番の間違いです。 どちらのデバイスも「RX」回線でデータを受信することを期待しているため、2 つの「TX」回線が最終的に相互に通信する間、両方ともそこに座って待機しているだけです。 いいえ、「正しい」方法は、一方のデバイスの「RX」ポートをもう一方のデバイスの「TX」ポートに接続し、その逆も行うことです。 それは論理的ですよね? これを思い出してもらうために、「TX」には「TXD」というラベルが付けられることがあります。「D」は「デバイス」を表しており、このデバイスの観点から物事を見ていることを思い出させるためです。

何と呼ぶにせよ、「TX」というポートを「RX」というポートに接続すると、個々のポートではなくネットワークに名前を付ける最新の CAD プログラムでは問題が発生します。 両方のデバイスの「GND」ピンを接続するワイヤを何と呼びますか? 「GND」っていい名前ですね。 「TX」と「RX」を接続するワイヤーを何と呼びますか? 「RX」と「TX」をつなぐものはどうでしょうか? 混乱が支配します。

(SPI には独自の問題があることに注意してください。これについては次回説明します。これらの行を「マスター イン、スレーブ アウト」および「マスター アウト、スレーブ イン」と呼びます。行名には一貫性があり、どのデバイスであるかがわかっていれば、見ていると、データがどの方向に流れているかがすぐにわかります。そのほうがはるかに優れています。)

したがって、デバッグ時に自問すべき最初の質問は、信号線を適切に横断したかどうかということです。 たとえ混乱していなかったとしても、とにかく交換してみてください。たとえ混乱していなくても、上流のエンジニアが混乱していたかどうかはわかりません。 (私たちはそれが起こるのを見てきました。)

配線は正しく行われていますが、データの送信 (および受信) 速度はどうですか? これは重要です。なぜなら、ワイヤ上にしばらくの間高電圧が発生した場合、その「その間」が何ビットを表すことになっていたのかを知る必要があるからです。 私がゼロを 4 つ送信すると、2 つ送信した場合の 2 倍の期間、一定の電圧が表示されることになりますが、私が 2 つのゼロ、または 8 つのゼロを送信しただけではないことを確認できるように、時間基準について合意する必要があります。 。