製品紹介 カスタマイズ パーツ販売 共同開発 技術サポート 技術情報 お問合せ 会社案内

シリアル通信

 ここでは、シリアル通信の使い方について説明します。シリアル通信は、 送りたい情報を「ひとつずつ」送る方式です。送りたい情報を「まとめて」 送る方式もあります。これは「パラレル通信」といいます。シリアル通信は、 組込みプログラムを作成するうえで、まず最初に組み込みたい機能です。 なぜならば?マイコンに書き込んだプログラムにエラーがあった場合、 マイコンはうんともすんとも言わなく(応答しなく)なるからです。 思い通りの動作をしなくなった場合、マイコン内の変数の値をシリアル通信 でパソコンに送り、モニターに表示すれば、デバッグ作業の効率もあがります。

 ここではAP-CORE-Aを使い、下図のように、 ターミナルソフトから送信した文字をAP-COREで受信し、 そのまま同じ内容をパソコンに返すプログラムを作成します。


ハードウェア接続

 下図を参考に接続してください。実はマイコンにソフトウェアを 書き込む際も、シリアル通信を使っています。ですので、 この接続は、最低限必要な接続です。接続はたったの2か所です。 ひとつは電源、もうひとつはシリアル通信ポートです。



 電源はJ1を使用します。電源は冗長設計となっており、通常はJ1とJ2に 電源を接続することをお勧めしますが、今回はテストなので、J1だけを 使用します。AP-CORE-Aを使用される方はDC4.5V〜9Vを、AP-CORE-Bを使用 される方は、5Vを供給してください。

 AP-CORE-A/Bに搭載されているH8S/2638には、3つのシリアル通信ポートがあります。 AP-CORE-A/Bの場合、シリアル通信はJ5(COM2)、J6(COM1)、J7(COM0)を使用します。 ソフトウェアの書き込みは、J6(COM1)を使いますので、今回はこのポート(J6)を使用 しましょう。シリアル通信のコネクタは通常、Dsub9ピンコネクタを使用します。 最近のパソコン、特にノートパソコンにはUSBポートしかない機種が多いので、 パソコン側にUSBポートしかない場合は、USBシリアル変換ケーブルを使用して、 パソコンとAP-CORE-A/Bを接続してください。これでハードウェア接続は完了です。

ソフトウェア

 ソフトウェアはここからダウンロードしてください。開発環境は HEWを使用しています。他のコンパイラを使用されている方は、読み替えてご使用ください。 ここでは、プログラムの要点のみ説明します。プログラムのポイントは、初期化、送信、 受信、エラー処理、メインループです。

初期化

 初期化処理で最低限設定するレジスタは、シリアルモードレジスタ(SMR)、 ビットレートレジスタ(BRR)、割込み設定です。これは送受信を停止した 状態で設定します。

SMR

 SMRは、通信設定を行います。ここでは、調歩同期モード、データ長8ビット、 パリティ無し、ストップビット1を使用します。この設定は一度決めておくと、 他社製品を使用する場合を除き、滅多に変えることはありません。

BRR

 BRRは、通信速度を設定します。ここでは、38400bpsを設定します。 この速度のBRR設定値は15となります。この設定値は、H8S/2638の ハードウェアマニュアルを参照してください。

割込み設定

 割込み設定は、「受信データフル割込み(RXI)」と「受信エラー割込み(ERI)」 を許可にします。RXIは、外部からデータを受信すると起動されます。 ERIは受信エラーが起こると起動されます。

sci.c


送信

 送信処理は受信処理よりも簡単です。送信は1バイト(1文字)単位 で送信します。まずデータを送信する前に、送信可能な状態か?を 調べます。これは、トランスミットデータレジスタエンプティ(TDRE) フラグを使います。送信可能な状態になると、TDREフラグに1がセット されるので、TDREフラグをチェックし、送信可能な状態(1)になったら、 トランスミットデータレジスタ(TDR)に送信データを書き込みます。 その後、TDREフラグを0にセットします。

sci.c


受信

 受信処理は割込みを使用します。常に受信をチェックする方法 (ポーリング)もありますが、この方法は受信がなくても、 常にCPUで処理を行うので無駄があります。受信割込みを使うと、 受信したときのみ起動されるので、CPUを効率よく使用することができます。



 外部からデータを受信すると、受信割込みが発生し、 INT_RXI_SCI1が起動されます。この関数は、HEWが自動的に 作成してくれる関数で、intprg.cに記述されています。 (プロジェクト作成時は関数だけ定義されており、 中身はカラです。)受信処理では、受信したデータを一時的に ためておく「受信バッファ」を作成します。ここまでが 割込み処理です。データを受信すると、自動的に受信データが 受信バッファに保存され、バッファがいっぱいになると、 古いデータから上書きします。受信バッファ内のデータは、 sci_write関数を使用して読み込みます。受信バッファが いっぱいになる前に、sci_write関数を起動し、読み込み処理 を行ってください。

intprg.c


sci.c


エラー処理

 エラー処理は、エラー発生時の処理を定義します。ここでは 簡単のため、エラーフラグ(ORER、PER、FER)を0クリアする だけとします。

intprg.c


メイン処理

 最後がメイン処理です。プログラムのなかで、メイン処理が 最も重要ですが、プログラムは最も簡単な記述となっています。 シリアル通信の初期化を行ったあと、無限ループに入ります。 受信バッファから受信データを読み込み、受信データがあれば、 同じ内容を送信、これを繰り返します。

sample1.c




 以上でソフトウェアが完成です。コンパイルを行い、sample1.mot をAP-CORE-A/Bに書き込みます。

実行例

 実行例を紹介します。次の写真は配線の様子です。AP-CORE-Aを使用しています。 接続図のとおり、電源(J1)とシリアル通信ポート(J6)に配線しました。 電源ラインのコネクタは適当なものを選んでください。シリアル通信のコネクタは、 USBシリアル変換ケーブル側がDsub9ピンのオスですので、Dsub9ピンのメスを使用 しました。



 次の写真は接続の様子です。電源は安定化電源を使用しています。



 次の動画はシリアル通信を行っている画面です。今回はターミナルソフト に「あくのりっち」 を使用しました。青文字がPCからAP-CORE-Aへ送信した文字列、赤文字がAP-CORE-Aから 返ってきた文字列です。



 テキストボックスに文字を入力し、同じ文字(青文字)が下のウィンドウに 表示された瞬間が、PCからAP-CORE-Aに文字を送信した瞬間です。同時に、 同じ文字(赤文字)が瞬時に返ってきていることがわかります。これは、 AP-CORE-AがPCに同じ文字を返したという意味です。

     
製品紹介 カスタマイズ パーツ販売 共同開発 技術サポート 技術情報 お問合せ 会社案内
〒890-0061 鹿児島市天保山町14-3 TEL 099-213-0511  FAX 099-213-0585