UARTとそれが何で食べられるか

Vogue hysteriaの後、ボードをコンピューターに接続する方法について多くの疑問が生じました。 そして、多くの人々は、UARTが何であるかさえ理解していません。 そして、私はそれがどんな強力なツールであるかをここで話すことにしました。

画像
UARTを介してキーボードとディスプレイを接続すると、ルーターがコンピューターに変わります

電信からCOMポートへ


UARTプロトコル(ユニバーサル非同期レシーバー/トランスミッター)、またはロシア語ではUART(ユニバーサル非同期トランシーバー)は、これまでで最も古く、最も一般物理データ転送プロトコルです。 RS-232プロトコルはUARTファミリで最もよく知られています(人々はあなたのコンピュータにあるものと同じCOMポートと呼んでいます)。 これはおそらく最も古いコンピューターインターフェイスです。 彼は今日まで生き延び、その関連性を失っていません。

当初、米国ではUARTインターフェースが電信メッセージを送信する手段として登場し、そこには5つの作業ビットがありました(モールス信号のように)。 伝送には、機械装置が使用されました。 その後、コンピューターが登場し、7ビットを必要とするASCIIコードが登場しました。 60年代前半には、よく知られた8ビットASCIIテーブルが全員を置き換え、その後、伝送フォーマットがフルバイトと制御3ビットを占有し始めました。


チップブームがすでに始まっていた1971年に、Western Digital PDPコンピューターのGordon BellがUART WD1402Aチップを作りました。 80年代の初め頃、ナショナルセミコンダクター社は8520チップを作成しましたが、90年代にはインターフェース用のバッファが発明され、データをより高速に送信できるようになりました。 このインターフェイスは、ほとんど変更されていないため、私たちの時代に達しました。

インターフェース物理学


UARTインターフェースの違いを理解するために、最も一般的で愛されているRS-232プロトコルの動作原理を分析します。 私は彼の作品のすべての微妙さを苦労して描くつもりはありません。 約12メガバイトの記事がこれについて書かれています。Googleの使い方を知っていれば、問題なくすべての必要な情報を見つけることができます。 しかし、基本を教えましょう。すべてをそれらと一緒に操縦するのは良いことであり、あらゆる種類のチップはほとんど使用されません。

私たちの主な作業ラインは、RXDとTXD、または単にRXとTXです。 伝送ラインはTXD(送信データ)であり、RXD(受信データ)ポートは受信です。
これらのCOMポートラインは、ハードウェアフロー制御なしの伝送に関与しています。 ハードウェアストリームでは、追加のインターフェイスライン(DTS、RTSなど)が関係します。 TXトランスミッター出力はRXレシーバー入力に接続され、その逆も同様です。 RS-232の電気的原理は、標準の5ボルトTTLロジックとは異なります。 このプロトコルでは、論理ゼロはそれぞれ+3〜+12ボルト、単位は-3〜-12です。 -3〜+3ボルトの間隔は、不確実なゾーンと見なされます。 すべての電圧は、コンピューターのケースまたはグランドに対して示されていることに注意してください。 さて、コンピューターの電源には-12ボルトと+12ボルトの2つの電圧が同時に存在する理由を理解していると思います。 これらは、COMポートの操作専用に導入されました。

画像
RS-232経由の信号受信(M. Gukの著書「PCハードウェアインターフェイス」から引用)

このような24ボルトもの動作電圧の大きな振幅は、主に通信回線のノイズ耐性のために必要です。 規格によれば、データを実行するケーブルの長さは15 mです。実際には25 mでも動作するように管理されていますが、RS-232の電気パラメーターは、UARTファミリの他のプロトコルと区別する主な特性です。

次の特性-送信フォーマットとデータ転送レート-はすべてのタイプのUARTに完全に適用可能であり、シンプルなインターフェース回路を介して互換性を保証します。

標準パッケージには10ビットが必要です。 ただし、原則として、これはCOMポートの標準設定にのみ適用されます。 原則として、One-Wireインターフェースを理解するように再構成できます。 アイドルモードでは、回線に何も送信されない場合、論理ユニットの状態、つまり-12ボルトになります。 送信の開始は、スタートビットの送信によって示され、常にゼロです。 次に、8ビットのデータが転送されます。 パリティとストップビットを終了します。 パリティビットは、送信されたデータをチェックします。 スタートビットは、データ転送が完了したことを示しています。 STOPビットは1、1.5、および2ビットを占有できることに注意してください。 これらは小数ビットであるとは思わないでください。この数字はその持続時間を表しているだけです。 スタートビットと同様に、ストップビットはゼロです。

画像
オシロスコープ画面のUART信号。 スタートビット、データ、ストップビットが表示されます。 写真をありがとう。

作業速度


少なくともモデムでは、以前にCOMポートを操作する必要がなかったとしても、公称動作速度(9600、28800、33600、56000など)を知っておく必要があります。 ポートから毎秒何ビットがエスケープしますか? 見てみましょう、1秒あたり9600ビットの速度があります。 つまり、1ビットの送信には1/9600秒、バイトの転送には11/9600秒かかります。 また、このようなバイトの速度は、ストップビットが1ビットを占有する場合にのみ当てはまります。 2ストップビットかかる場合、送信は12/9600になります。 これは、データビットとともに、特別なビット(開始、停止、パリティ)も送信されるためです。 COMポート速度の範囲は標準化されています。 原則として、すべてのデバイスは9600、19200、115200の3つの標準速度で動作します。しかし、非標準速度または時間とともに変化する速度の使用であっても、他のオプションが可能です。次のデバイスのフライトを分析するときにこれに遭遇しました。

そのような異なるプロトコル


非常に多くの種類のUARTがあります。 あなたが英語を話せば、自分でグーグルで検索できるからです。 しかし、最も基本的なことに注意することはできません! インターフェイス間の主な違いは、データ転送の環境と方法にあることを思い出させてください。 データはファイバーを介して送信することもできます。

RS-232に続く2番目に一般的なインターフェイスはRS-485です。 これは業界標準であり、その伝送はツイストペアケーブルを介して実行されるため、優れたノイズ耐性と最大4メガビット/秒の伝送速度の向上が得られます。 ここのワイヤの長さは1 kmに達することがあります。 原則として、異なるマシンを制御するために工場で使用されます。

ほとんどの電話やPDAに組み込まれているIRDA(赤外線)も本質的にUARTであると言わなければなりません。 データのみが有線ではなく赤外線で送信されます。

SMARTカード(SIM、衛星テレビ、銀行カード)では、すべての自尊心のあるフリーカーがスイングしたいまさにデバイス-私たちのお気に入りのUARTも使用されます。 確かに、半二重のデータ伝送があり、作業の論理は1.8 / 3.3および5ボルトになります。 RXは一方と他方でTXで封印されているように見えます-結果として、一方が送信し、他方がその瞬間にリッスンし、その逆も同様です。 これは、スマートカード標準によって規制されています。 したがって、送信するバイト数と、カードが返信するバイト数を正確に把握できます。 このトピックは別の記事に値します。 一般に、UARTはほぼどこにでもあることを覚えておいてください。

画像
ボードに時計回りにUARTがあるデバイス:マウス、SMARTカードリーダーエミュレーター、Palm m105 PDA、マイクロコントローラーATtiny2313(またはAT89C2051)のデバッグボード、モデム。

インターフェイスのペアリング


私はすでにさまざまなインターフェイスで目をなだめていますが、どのようにそれらを操作しますか? さて、通常のRS-232では明らかですが、5ボルトの矢でどうするのでしょうか。 簡単です。さまざまな市販のコンバーターチップがあります。 原則として、マーキングには番号「232」が含まれます。 私はダイアグラムでこれらの数字でmikruhuを見ました-確かに:これはおそらくコンバーターです。 小さなバインディングを備えたこのような超小型回路を介して、すべてのUARTインターフェースがインターフェースされます。 産業用インターフェイスについては説明しませんが、まず私たちに興味があるコンバーターについては説明します。

最も有名なインターフェイスコンバーターはMAXIMによって開発されたチップで、その名前の一部(max232)を取得しています。 その動作には、0.1マイクロファラッドから4マイクロファラドまでの4つのコンデンサと5ボルトの電源が必要です。 驚くべきことに、この5ボルトのマイクロ回路は、負電圧を生成して5ボルトUARTとRS-232をインターフェースします。

ft232rlチップなど、UARTを備えたUSBインターフェイスチップがあります。 Ubuntuはすでにこのチップ用のドライバーを持っています。 Windowsの場合、公式サイトからダウンロードする必要があります。 ドライバーをインストールすると、システムに仮想COMポートが表示されます。これにより、さまざまなデバイスを操作できます。 これらのチップを唯一の可能性のあるものとして使用しないでください。 安価で面白いアナログが非常にたくさんありますので、Googleに行くと、UARTの世界がクールであることを理解できます。

一般に、超小型回路は非常に高価であり、場合によっては、より複雑で安価なトランジスタのペアを使用して回路を作成できます。

これにより何が得られますか?


ご存じのとおり、UARTインターフェイスは、プロセッサまたはコントローラーを備えた多くのデバイスに存在します。 さらに言います:コントローラーがある場合、Yuartはstopudovoです(常に使用できるとは限りません)。 原則として、このインターフェースは、デバイスのパフォーマンスを設定および確認するために使用されます。 多くの場合、製造業者はこのインターフェイスが製品内に存在することについて沈黙していますが、見つけるのは難しくありません。プロセッサにマニュアルをダウンロードするだけで十分で、uartの場所がわかります。 インターフェースを介してハードウェアに物理的にアクセスした後、メーカーの意図ではなく、必要に応じて自由に設定したり、機能させることもできます。 一般的に、-控えめなデバイスから最大値を絞り出します。 また、このプロトコルを知っていると、製造元がデバイス全体でネットワーク全体を編成することが多いため、異なるプロセッサ間の交換回線で起こっていることを盗聴することも可能になります。 一般に、多くのアプリケーションがありますが、主なことは、これを行う方法を直感的に理解することです。

ルーターを更新する


先日、WL-520GU WiFiルーターを作成し、Stepの記事「アクセスポイントのレベルアップ」(] [#106)を読んだ後、Linuxを正常にインストールしました。 しかし、ハードドライブのスワップパーティションのマウントに問題がありました。 そのため、アクセスポイントのダウンロードログ(パーティションがマウントされているかどうか)を確認し、必要な変更をすぐに行うためにオンザフライで実行する必要がありました。 第6の意味では、ルーターでは単にUARTでなければならないと思っていました。 プラスドライバーを手に取り、分解し始めました。 これは些細なことですが、キャッチ付きです-秘密のネジはゴム足の下にあります(繰り返す場合、分析中に保証が失われることに注意してください)。 私は、すべてが「チップインワン」であるかなり退屈なボードを見ました。1つの中央処理装置には、すべて、外部作業員、フラッシュ、電力変換器、ボタン付きコネクタ列が含まれます。 しかし、ボードにははんだ付けされたコンタクトパッド、より正確には針用の穴はありませんでした。 それらの4つがありました。 ここはUARTです、明らかです! ボード上では、マルチメーターがなくても、極端な針は+3.3ボルトで、2番目はアースです。 中央の連絡先、それぞれRXおよびTX。 それらのどれが科学的な突く方法を使用して簡単にインストールされます(インターフェイスの書き込みは非常に問題です)。
各ルーターのUARTインターフェイスが異なっているように見えることにすぐに注意したいと思います。 ほとんどの場合、これらはボード上のはんだ付けされた穴ではありません。 ただし、ASUSの1つのルーターで、完全に署名されたコネクタに出会ったこともあります。

コンバーターを組み立てます


ルーターをコンピューターに接続するには、RS-232インターフェイスをルーターのUARTとペアリングする必要があります。 原則として、上記のFT232RLチップを使用してUSBに接続できます。これは、最初にルーターを確認したときに行いました。 しかし、この超小型回路ははんだ付けがかなり複雑な場合があるため、より簡単なソリューションについて説明します。 つまり、MAX232チップ。 ルータから食べる場合は、おそらく3.3ボルトになるので、通常はPDAにあるMAX3232を使用することをお勧めします(配線図はインターネットで簡単に見つけることができます)。 しかし、私のルーターでは、入力に+5ボルトの電力があり、これらの超小型回路が非常に多くあり、気にしませんでした。 組み立てには、0.1μFのコンデンサ(4個)とチップ自体が必要です。 従来の方式に従ってすべてをはんだ付けし、実験を開始します。

画像
アセンブリのソース

帰り道では、ヌルモデムケーブルを簡単に接続できるように、すぐに9ピンのオスコネクタを切った。 覚えているなら、DOSの時代、そのようなケーブルは2台のコンピューターのグリッドを作り、Dyuknyukemで切断されました。 私たちの目的のためにワイヤーを組み立てることは難しくありません。 確かに、それは完全なヌルモデムであるとは判明せず、あまり使いこなすことはできませんが、アクセスポイントを操作するのはまさにそれです! 2つの9ピンメスコネクタ、それらのケースと、たとえば古いマウスまたはキーボードからのワイヤが必要になります(主なことは、3本のワイヤがあることです)。 まず、アースを接続します。これはコネクタの5番目のピンです。 ワイヤーを取り、両側の5番目のピンにはんだ付けするだけです。 ただし、RXとTXを使用する場合は、より注意が必要です。 ワイヤの一方の端から3番目の接点にはんだ付けし、もう一方の端から2番目の接点にはんだ付けします。 同様に、3番目のワイヤでは、一方の端から2番目の接点にはんだ付けし、もう一方の端から3番目にはんだ付けします。 一番下の行は、TXがRXに送信する必要があるということです。 ケースに密閉コネクタを隠します-ヌルモデムケーブルの準備ができました!

画像
ルーターボードにはんだ付けされた針。

取り付けを簡単にするために、ピンコネクタをルータのマザーボードにはんだ付けし、MAX232を使用して逆コネクタを取り付け、スロットにスカーフを挿入しました。 RXおよびTXルーターは実験的に選択されます。

画像
徴収手数料

次に、コンバータチップに電力を供給する必要があります。 ルータのマザーのコネクタに共通のワイヤがあります。 ただし、+ 5ボルトは、ルーターの電源入力部のアダプターが接続されている場所にあります。 5ボルトの位置は電圧計によって決定され、ルーターのグランドに対して異なるノードを測​​定します。
電源を接続します。 悪意のある実験をオンにして開始します。

画像
ワイヤーの結論のために穴を燃やします

画像
はんだ付けされたCOMポート

画像
すべてが組み立てられます。 赤色の電源線がルーターアダプターコネクタに接続されていることに注意してください。 内側の結び目は、はんだ付けされたワイヤをぐいと引き裂くために作られています。

ターミナルのセットアップ


端末プログラムを構成する必要があります。 Windowsでは、すべてが非常に簡単です。HyperTerminalを起動し、ソフトウェアとハ​​ードウェアのデータ検証を無効にし、速度を115200と1ストップビットに設定します。 しかし、Linuxでは、物事は少し複雑です。 私はUbuntuを持っています。それについてお話します。 開始するには、アセンブリでCOMポートがどのように呼び出されるかを把握します。 私の場合、COM1はttyS0でした(たとえば、FT232チップを使用する場合、ttyUSB0と呼ばれます)。 彼と仕事をするために、私はミニコムのソフトインクを使用しました。

パラメーターを指定して実行します:minicom -l -8 -c on -s。 次に、「シリアルポート設定」を選択します:
シリアルポート/ dev / ttyS0

*速度/パリティ/ビット115200 8N1
*ハードウェアフロー制御-なし
*ソフトウェアフロー制御-いいえ

設定を保存します。 Softinaはモデムの初期化を試みます-注意しないでください。 メニューを呼び出すには、<ctrl-a z>を押します。 ここで、設定を変更できます。例:エコーの有効化/無効化-E
カスタマイズ

その機能をテストするために、コンバーターチップをルーターに接続することはお勧めしません。 彼から食べ物をとることのみが許可されました。 検証は非常に簡単です-RXとTXをブリッジする必要があります。 最初に、COMポートの2番目と3番目の連絡先をブリッジします-端末の設定を確認します。 キーボードで何かを書いてください。文字が返されたら、すべては問題ありません。 また、ケーブル、同じ連絡先を確認します。 次に、マイクロサーキットを接続し、すでにその出力にジャンパーを配置します。 たとえば、すべてを確認してエラーを見つけるまで問題があり、何も機能しなかったため、これに焦点を当てています。

すべての設定が完了したら、ルーターに安全に固執し、ルーターでRX-TXを探し、定期的に電源を抜きます。 すべてが正しく行われた場合、電源が投入されると、ルーターのブートログが表示されます。 おめでとうございます。これで完全なハードウェアルートが完成しました。まるでルーターのキーボードでモニターの前に座っているかのようです。

画像
minicomプログラムのルーターダウンロードログ

自律水泳


ターミナルプログラムを介して同じことを行うことに同意します。これは、氷ではなくSSHを使用する方が便利です。 私はルーターをスタンドアロンのLinuxコンピューターに変えたいと思っていました。 これを行うには、キーボードからのデータがUARTを介して送信され、その上にモニターにも表示されることが必要です。 デバイスのはんだ付けと開発は面倒でした。 そのとき、アイデアはこれらの目的のためにzayuzatに来ました。 実際、ハンドヘルドはキーボードとディスプレイコントローラーの役割を果たし、インターフェースのペアとして機能します。

最初は、最も古いPalm m100を試しました。 しかし、どうやら、彼のバッファメモリは非常に小さく、ルーターからのデータ量が気分を悪くしました。 私は別のものを取りました-通常のCOMポートとターミナルを備えた産業用PDA。 接続し、ドックに挿入し、その結果、小型のLinuxコンピューターを入手しました。 原則として、高価な産業用PDAの代わりに、WinCE OSで動作するほとんどのハンドヘルドが適しています。主なことは、適切な端末ソフトウェアを見つけることです。

画像
Linuxコンピューター:)



まとめ


そこで、UARTを使用する小さな例を示しました。 このプロトコルを味わうなら、私を信じてください、あなたは単に様々な鉄片の達人になるでしょう。 それはほぼどこにでも存在し、それを通して一見完全に異なるものを組み合わせることができます。 たとえば、設定が小さい同じルーターにYartで携帯電話を接続し、そこからインターネットを配信します。 一般的に、アプリケーションの束。 あなたのアイデアを実験し、独学し、実現することを恐れないでください。

この投稿は、Habrが編集したHacker、No。05/09、「フリーカーのメインツール」の私の記事のバージョンです。

参照:
1.ミハイル・グックの「PCハードウェアインターフェース」は、人員に関する単なる聖書です。
2. en.wikipedia.org/wiki/RS-232
3. easyelectronics.ru/tag/rs232

Source: https://habr.com/ru/post/J109395/


All Articles