トップページ > dsPIC入門 > シリアル通信について

シリアル通信について

シリアル通信のやりかた

開発環境が整いタイマーの使い方が分かったところで、次はパソコンと通信してみようと思います。 パソコンと自作基盤で通信をすることで、デバッグがはかどったり、PC側の自作アプリケーションと 自作回路との協調など、楽しいことがいろいろ考えられます。今回はその最低限の動作として、 「dsPICから文字データを出力する」と「dsPICでPCからの文字データを読み込む」を試します。 これができれば、あとはプログラムコード中で様々な制御コードを自分で定義して、 データのやりとりへと応用することができます。

UARTモジュール

dsPICには、PC等と簡単にシリアル通信をするための内部回路が組み込まれています。UART(ユー・アート)モジュール というもので、(Universal Asynchronous Receiver Transmitter - 汎用非同期受信・送信機…の略)プログラムから 機能をONにして制御することができます。

これと似た名前の回路として、従来のPICに載っていたUSART(ユー・サート)という ものがあります。これは、UART回路に同期式シリアル通信用の回路を追加したもので、 Universal Synchronous & Asynchronous Receiver Transmitter - 汎用同期・非同期送受信機の略。 では、dsPICでは性能が劣るのか…?というと、たしかに同期式のほうが通信速度は出せますが、 dsPICのUARTモジュールには便利な機能が多く追加されていますし、通信速度も それほど遅い…ということもないと思います。(電子工作で遊ぶ範囲でいえば、特に問題ありません)

UARTモジュールは、極端に言えばただのシフトレジスタで、単位時間あたり1bitずつ送られてくるシリアルデータ を、その都度シフトして適当な長さのパラレルデータへ変換する回路となっています。 もちろん自作することも不可能ではありません。でもPCとの通信をてっとり早く試して遊んでみたいので、 ここは当たりまえのようにUARTを使うことにします。


ところで、シリアル通信は基本的に1本のデータ線に時系列的にデータを流すことで実現します。 …というこは“1ビットごとのタイミング”が非常に重要な要素となるわけですが、“非同期”という 言葉が気になります。タイミング合わせをしないで、どうやってシリアル通信ができるんだろう?と思う ところです。当然のことですが、“非同期”と呼ばれていても実際には同期を取っています。 ただ、同期の取り方が“同期方式”と“非同期方式”では違うだけです。非同期方式は、 別名“調歩同期式”と呼ばれたりしています。ある程度歩いてから、再び足並みをそろえるイメージでしょうか?

同期方式と調歩同期(非同期)方式

同期式

同期式は信号線とクロック線の2本が必要になります。(送受信するなら3本?)常にクロックに合わせて 1bitずつデータを送る方式です。

調歩同期式

調歩同期式にはクロックがありません。送るデータの中に、“スタートビット”と“ストップビット”を 置くことで、データの始まりと終わりを知らせます。データの中にタイミング信号が入ってしまうので、 送信された信号の一部は情報を持たないと考えられます。同期式の送信信号は100%情報信号である ことから、それと比べれば調歩同期式は、やや無駄がある→通信速度は遅くなる…ということです。

とりあえず、まとめ

シリアル通信について、だいたいのところが分かりました。 PCと通信する際には調歩同期式が使えます。よってUARTモジュールへデータを渡せばそれをシリアル信号へ 変換してPCへ送ってくれますし、PCからのシリアルデータもUARTが受信してパラレルデータとして 取り出すことができます。実際シリアル通信のプログラムを組む際には、今回解説した原理的な部分は 全く意識する必要はありません。便利ですね。




dsPIC入門へ   次へ