RS232CとUARTの違いをアナライザで確認してみた

RS232C

どうもミソジです。

今回は筆者が持っているラズベリーパイとRS232Cを接続してRS232CとUARTの違いをアナライザで確認してみた」を紹介します

 

RS232CとUART通信の差を比較するまでの手順を紹介しています。「自分でRS232Cを色々解析してみたい!」という方におススメな記事となっています

 

過去記事の「UART通信のシリアル波形をアナライザで解析してみた」でUARTでも同様に解析しました。

 

UARTのことも調べたいという方は下記記事をご覧ください

UART通信のシリアル波形をアナライザで解析してみた
今回は簡単にアナライザでラズベリーパイ(raspberry pi)のUART通信のシリアル波形を確認するまでの手順を紹介していきます。 I2CやSPIも同様にアナライザで波形確認していますのでよろしければ下記記事もご覧ください。 ...

 

RS232CとUARTの違い

RS232CとUARTの違いに関しては既にネットの先人たちが多くの記事を書いてくださっているので大分省略しますが、大きな違いとして2点あります。

①出力電圧レベルが異なる
RS232C ・・・出力電圧がH_+5V~+15V、L_-5V~-15V
UART ・・・出力電圧がH_2.8V~3.3V、L_0V~0.5V

※RS232C・UARTともにIC次第で電圧レベルが差がありますので詳細は使用するICのデータシートをご確認ください。上記はあくまで1例です。

②信号論理が逆
RS232C ・・・アクティブHi
UART ・・・アクティブLow

この違いを踏まえて記事を紹介していきます

 

ラズベリーパイとRS232C接続をしてみる

まずはRS232C通信環境をラズベリーパイを使って作っていきます。

ラズベリーパイとPCをRS232C接続はUARTと違いひと手間あります。電圧レベル・信号論理が異なるためインバータ(バッファ)を噛ます必要があります

実際につなげた写真がこちらとなります。

「ラズベリーパイ」「USB-RS232C変換モジュール」「インバータ(バッファ)」PCを接続しています。

 

インバータ(バッファ)はDIP形状のためブレッドボード上で接続をしています。

 

使用したICは「TC74HC4049AP」で汎用ICです電子部品パーツ店行けばどこにでも置いてあるようなインバータ(バッファ)です。

このICで電圧レベル・信号論理を変換します

 

USB-RS232C変換モジュールも一般的なものです。最近はAmazon経由で中国製品が安く買えるので助かっています。

 

コネクタになっているので、ピンに直接ジャンパー接続してあげましょう

筆者のは少し型が古いラズベリーパイですが、UART(RS232C)をつなぐのは新旧ともに簡単にできます。


USB-RS232C変換モジュールは下記製品を使っています。非常に安くても機能的に問題無しです


TC74HC4049APも調べたらAmazonで一応売っていましたが、すごく高かったので安い電子パーツ店での購入をおススメします(20180817時点)


概要の回路図的には下記の形になります。インバータバッファを噛まして「3,3V」「GND」「TX」「RX」繋げるだけです。

点線箇所のUSB-RS23
2C変換IC(PC)は必要箇所だけ切り取った概要のブロック図
となっています。

筆者のイメージで記載しているので省略・実際の回路と違うことがあることはご了承ください。(20180817時点での参考データシートはこちらから)

※1_ラズベリーパイのGPIOピン配置は新しい型に合わせています
※2_GND配線が見やすさ優先したため実配線箇所と異なっています
※3_TXD,RXD配線名はPC側視点で書いています

そしてPCからコンソール接続するソフト「Tereterm」を起動していきます

※Teretermの詳細に関してはググってもらえればすぐダウンロードサイトが出てきますので省略します。ダウンロードすればすぐに使えます

下記がTeretermを動かした際の手順です。
①USB-RS232C変換モジュールをPCのUSBポートに挿す。ドライバが自動的にインストールされます

※今回のドライバはCH340というものでした

 

②最初の選択でシリアルを選択してUSB-RS232C変換のポートを選択します

 

③設定⇒ボーレートで115200を選択します。
※ボーレートというのは通信速度のことでラズベリーパイのデフォルト設定は115200となっていると思います。

 

④「Enter」を押してみましょう。ログイン画面が出てきます(もし電源投入時は初期のカーネルログが出てくると思います。)これで無事RS232C経由でUART通信ができました。

 

アナライザを使ってRS232Cの波形を次章から紹介してきたいと思います

 

アナライザを用意する

今回はRS232Cの「TX」「RX」を見ますのでアナライザを使って確認していきます。

最近はI2CやSPIなど数MHz,数十MHz程度の解析するアナライザが1000円足らずで買えます。

筆者は色々触りたかったのでモジュール化されていないアナライザの開発ボードを買いました。

(値段は一番安く多くのピンで遊べますが、EEPROMなどの設定が必要ですのでマイコン初心者は少し難しいかもしれません)

本当にマイコン(サイプレス製CY7C68013A)が載っているだけのボードです。PCとUSB経由で接続して解析することができます。詳細は下記になります
MiniUSBケーブルとジャンパーワイヤは別で購入が必要です


但し数百円の差ですので下記のようなモジュールになっているアナライザを買った方が直ぐに測定できて楽できるかと思います。

PCとUSB接続してI2C,UART,SPIなど多くの通信を解析できます。
USBケーブル、ジャンパーワイヤまで付いてきますので単に解析するだけならば筆者的には下記をおススメします

 

アナライザを使ってRS232Cの波形を確認する

アナライザにも配線する必要がありますので下記のようにブレッドボードで中継していきます

 

アナライザを使ってラズベリーパイ側の「TX」「RX」の箇所に接続します。
最初に説明したようにRS232Cだと電圧レベルがUARTと違いアナライザ側の定格超える恐れがあるためです。

 

そしてEnter押してラズベリーパイのログイン画面を表示した波形を確認します。

 

実際に回路図ベースでイメージすると下記のような手順になります

①USB-RS232C変換モジュール(PC)側から「Enter」のキー入力がラズベリーパイ側に送信されます

②ラズベリーパイ側からログイン画面の表示がUSB-RS232C変換モジュールに送信されます

 

そして実際にとれた波形の一部が下記です。無事「TX」「RX」の波形を取れました。(この波形では①②の全体波形を示しています)
※TX,RXは上記回路図の信号シンボル通りUSB-RS232C変換モジュール側の視点です

 

これだけだと何のデータか分からないので前回同様解析の設定でUARTを選択します
正しい波形が取れていれば勝手に解析をしてくれます

 

これで、無事アナライザでUARTの解析ができました。
下記のように各bit、[Start bit][Stop bit]のデータが視覚的に分かるようになります。


 

今回はRS232CとUARTの信号論理が本当に逆になっているかを次の章から確認してみます

 

RS232CとUARTの信号論理の違いを見てみる

信号論理をアナライザで測定したいのですが、前章で記述したように電圧レベルが異なりRS232Cを直接アナライザで測定できません。

※マイナス電圧域を測定できるオシロがあれば測定可能ですが、筆者含めてプライベートでオシロを持っている方は非常に少ないと思いますので今回は別案でいきます

従来の「インバータバッファ」を「バッファ」に改造してラズベリーパイ側でRS232Cの信号論理をそのままで測定します

ブレッドボード上の使うICを変更します。型番一つ違いのICです。これも電子パーツ店で安く入手できます。同じDIPの形状ですので置き換えるだけで改造も簡単です。

従来_インバータバッファ TC74HC4049AP
改造_     バッファ TC74HC4050AP

 

では実際に従来(UART)改造(RS-232C)の波形を並べてみました。

枠で囲っているTXの波形の信号論理が逆になっていることを確認できています

 

これで実際に信号論理がUARTとRS232Cで逆になっていることが十分に確認できました

余談_改造後のコンソール表示

半分余談になりますがせっかくなので、改造状態の場合Teretermのコンソール上ではどのように表示されるのかを確認してみます。

Enterを押すと改行されず「C」が返ってきます。

 

従来のUARTでのEnterの改行は「CR_0x0d」ですので逆値の[0xF2]になると思いきや全く異なる値になっています。このカラクリについて少し考えてみます

これは「信号論理が逆」「Start bitが送信と受信で2回ずれる」と、「ASCII文字が「0x7f」で終わっている」ことが影響していそうです。フローとしては下記流れだと思います

 

①USB-RS232C側から0x0d(CR)が送信される
0x0d= [10110000]

②ラズベリ-パイ側が受け取る際に「信号論理が逆」+「Start bitがずれる」0x79として受信する
0x79= [_10011110]

③ラズベリ-パイ側から0x79が送信される
0x79= [_10011110]

④USB-RS232C側が受け取る際に「信号論理が逆」+「Start bitがずれる」0xC3として受信する
0xC3= [__11000011]
さらにASCII文字は基本0x7fまでしかないので一番上のbitは無視され0x43として判断する
0x43= [__?1000011]

例えば①⇒②の「信号論理が逆」+「Start bitがずれる」イメージとしては先ほどの下記波形で見ると分かりやすいです

 

RS232Cをつなげる際は信号論理が逆になっていることを気にしないとデータが簡単に壊れてしまうので注意しましょう。

 

まとめ・感想

結局のところRS232CとUARTの違いとしては
「①電圧レベルが異なること」「②信号論理が逆なこと」がメインだと思います。

この2つを忘れて接続するとICが壊れたり、データが壊れたりするので(筆者含めて)忘れないようにしないといけませんね。

 

どうでしたでしょうか、最近では1000円足らずでRS232C・UARTを測定・解析することができます。前回の下記記事ではUART解析しています

UART通信のシリアル波形をアナライザで解析してみた
今回は簡単にアナライザでラズベリーパイ(raspberry pi)のUART通信のシリアル波形を確認するまでの手順を紹介していきます。 I2CやSPIも同様にアナライザで波形確認していますのでよろしければ下記記事もご覧ください。 ...

 

データシート見て確認するのもいいですが、やはり実物の波形見ることでよりUART・RS232Cの理解が深まると思います。よろしければ皆様もアナライザを購入して確認してみてください

 

<<20180823追記>>
SDの「データ_D0~D3」「コマンド_CMD」「クロック_CLK」波形を見てみた記事をアップしました。(但しサンプリングが足りない結果となっています)

「SDカードにアクセスするコマンド・波形を解析してみたが…」
よろしければ下記記事もご確認ください

SDカードにアクセスするコマンド・波形を解析してみたが…
どうもミソジです。 今回は筆者が持っているラズベリーパイとUSB-SDデバイスをつなげて「SDカードにアクセスするコマンド・波形を解析してみたが…」を紹介します 簡単にアナライザでSDカードでの波形を確認するまでの手順を紹介して...

 

今日はここまでにしたいと思います
どうもありがとうございました

1000円足らずでアナライザが購入できます

ラズベリーパイでUART(RS232C)をつなぐのは新旧ともに簡単にできます。


USB-RS232C変換モジュールは下記製品を使っています。非常に安くても機能的に問題無しです

TC74HC4049AP,TC74HC4050APも調べたらAmazonで一応売っていましたが、すごく高かったので安い電子パーツ店での購入をおススメします(20180817時点)

コメント