HOME > ソフテックだより > 創刊号(2005年9月7日発行) 技術レポート「シリアル通信とは?」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 創刊号(2005年9月7日発行)
技術レポート

「シリアル通信とは?」

通信を大きく分類するとシリアル通信とパラレル通信に分類できます。
簡単に説明するとシリアル通信は1本の信号線で1ビットずつデータの受け渡しを行ない、パラレル通信では複数の信号線で同時に複数ビットのデータの受け渡しを行なう方式です。

ソフテックの組み込みソフト開発では、監視システムなどが多く、単体のプログラムが動作するということは少なく、さまざまな機器と通信を行なうことで情報の受け渡しを行っています。
火災や故障などの状態収集、情報の上位アプリケーションへの通知などさまざまな場面で通信が必要となりますが、その多くはシリアル通信で行なわれています。

単純にシリアル通信といってもさまざまな方式が存在しますが、具体的な例としてRS-232Cの調歩同期方式で通信を実現するために必要な基礎的な知識を説明します。

1.シリアル通信の基礎知識

ここでは調歩同期式の通信を理解するために必要な用語について説明します。

スタートビット、ストップビット

1キャラクタの前と後には必ず最初と最後をあらわすスタートビット、ストップビットと呼ばれる情報が付加されます。受信側ではスタートビットを手がかりに1キャラクタの最初を認識して正常に受信することが出来るようになります。また、最後にはストップビットがつくことでデータの終わりを知ることが出来ます。スタートビットは1ビットですが、ストップビットは1ビット、1.5ビット、2ビットの場合があります。

パリティビット

パリティビットはデータが正常に送られたかを検査するために付加されるビットです。
パリティビットは偶数パリティ、奇数パリティが選択できます。(パリティビットは付加しないことも可能です)
パリティビットは送信するデータの1の数が偶数または奇数になるようにパリティビットで調整します。

例えばASCIIコードの‘A’は16進数で41Hとなります。これを送信する場合、2進数では

となります。

偶数パリティの場合、全体として1の数が偶数個になる必要がありますのでパリティビット(P)は0となります。
→パリティビットが0で全体として1の数は偶数個になる。

反対に奇数パリティの場合は、全体として1の数が奇数個になる必要がありますのでパリティビットは1となります。
→パリティビットが1で全体として1の数は偶数個になる。

ボーレート

通信速度のことをボーレート(Baud Rate)と言います。単位はbps(Bits Per Second)で1秒間に何ビットのデータを送信することが可能かで表します。上記のスタートビット、ストップビット、パリティビット、データは全てこのボーレートを基準にビットの長さが決まります。
例えば9600bpsでは1÷9600で1ビット当たり約104µ秒になります。

上記は実際のRS-232Cでの通信波形をロジックアナライザで見たときの波形です。(RS-232Cのデータ信号は負論理ですのでマイナスはデータ1、プラスはデータ0を示します)
9600bps、ストップビット1ビット、偶数パリティの設定でH’41データを送信したときの波形です。
組み込みソフト開発ではソフトウェアの開発とともにハードウェアの開発することが良くあるため、ハードウェア側に不具合が存在する可能性もあります。実際の波形を見てどのように通信が行なわれているかを理解することができれば、いろいろな側面からの問題解決が出来るようになります。

2.マイコンでシリアル通信を実現するために・・・

実際にルネサステクノロジ製 H8S/2144を用いてマイコンでシリアル通信を行なうための方法を説明します。
H8S/2144シリーズはH8S/2000CPUに各種周辺機能を集積したマイコンです。

周辺機能にはシリアルコミュニケーションインターフェース(SCI:Serial Communication Interface)があり、手軽にシリアル通信を行なうことが出来ます。

(1).SCIのブロック図

【記号説明】

RSR:
レシーブシフトレジスタ
RDR:
レシーブデータレジスタ
TSR:
トランスミットシフトレジスタ
TDR:
トランスミットデータレジスタ
SMR:
シリアルモードレジスタ
SCR:
シリアルコントロールレジスタ
SSR:
シリアルステータスレジスタ
SCMR:
シリアルインターフェースモードレジスタ
BRR:
ビットレートレジスタ

(2).初期化手順

詳細手順はハードウェアマニュアルを参照してください。ここでは注意すべきことについて記述します。

送受信動作と送受信割り込みを禁止します。(割り込みだけではなくSCIの送受信動作を停止することに注意してください)
SCR、SMR、SCMR、BRRで送受信フォーマットやボーレートを設定します。
レジスタを設定したら1ビット分の時間待機します。これは基準クロックやボーレートを変更したことで最初のビットが正常に動作しない可能性(ボーレートなど変更されるため初期化後すぐに送受信した場合に最初のスタートビットが規定時間出力されないなどの問題が出る可能性があります)を排除します。1ビット期間長ですので例えば9600bpsであれば約104µ秒何もせずに待機してください。
送受信動作が可能となります。

(3).送信のイメージ

プログラム上からTDRレジスタへデータを書き込んだ後にTxD端子から出力されるイメージです。

(4).受信のイメージ

RxD端子から入力されたデータがCPUで読み込まれるまでのイメージです。

(5).割り込みについて

通常、シリアル通信のプログラムでは割り込みを利用して送受信データの受け渡しを行ないます。
割り込みは以下の4つがあります。

TXI 送信データエンプティ割り込み

TDRが空いた場合に割り込みが入ります。この割り込みを利用してTDRに連続してデータを書き込むことでデータが途切れることなく送信が行なわれます。

TEI 送信終了割り込み

TSRのデータが全て送信し、ストップビットを送り出したときに割り込みが入ります。送信終了を検知することが出来ます。

RXI 受信データフル割り込み

RDRにデータが入った段階で割り込みが入ります。連続したデータが送られてきている場合、次のデータがRSRからRDRに転送される前にデータを取得する必要があります。RDRにデータが存在するまま、次のデータを受信してしまうとオーバーランエラーとなります。

ERI 受信エラー割り込み

受信中にエラーを検知すると発生します。エラーにはオーバーランエラー、フレーミングエラー、パリティエラーがあります。

次回は、実際にソフテックがシリアル通信プログラムを作る上で注意している事などのレポートを予定しております。

(H.M.)

[参考文献]
株式会社ルネサステクノロジ
H8S/21**シリーズ ハードウェアマニュアル

関連ページへのリンク

関連するソフテックだより

ページTOPへ