ベースボードから卒業し、CPUボード単体で起動できるように周辺回路を設計します。
前々から書かないといけないなと思っていた内容です。
CPUボードだけで、起動できないと……。先生が安心して……、引退できないんだ!
今まではCPUボードとベースボードを接続した状態で使用していました。
装置の小型化を目指すにはベースボード無してCPUボードを動かす必要があります。
しかし、sh7125CPUボードは単体で電源を入れただけでは正しく動きません。
CPUボードを動かすためにはベースボードに搭載された回路を一部自分で作成する必要があります。
単体で動かすには最低限パワーオンリセット回路と動作モード切替回路が必要です。
また、RS232Cによるシリアル通信を行うためには電圧変換ICを搭載し、
ベースボード先生への別れを惜しみつつ周辺回路を作成しましょう。
パワーオンリセット回路
パワーオンリセット回路+NMI固定+モード切替回路を作ります。
必要な部品は
・ダイオード(
ショットキー)
・コンデンサ(
4.7μF電解コンデンサたぶんセラコンでもOK)
・抵抗4.7kΩ、100Ω、10kΩ
・必要に応じてスイッチ
ブレッドボード上に作るので
・
電源端子を付けたブレッドボード・オス-メスジャンパ線(
黒、赤、他2色)
確認用に
・LED
・電流制限抵抗(10kΩぐらい)
パワーオンリセット回路(緑枠部)
CPUが起動した直後はCPU内の状態がグチャグチャなのでリセットをかける必要があります。
ただ、電源を入れるたびにいちいちリセットスイッチを押すのは面倒です。
そこで電源をONしたら自動的にリセットがかかる回路を接続します。
これがパワーオンリセット回路です。
sh7125ではリセット端子がLになるとプログラムがリセットされます。
コンデンサを利用して電源を入れてしばらくはリセット端子がLの状態を維持しリセットし続けます。
抵抗を介してコンデンサをゆっくり充電し、十分充電出来たらリセット端子がHになりリセットが終了して通常のプログラムが起動されます。
ゆっくりと言っても人の間隔で考えると一瞬の出来事です。
電源を切ったらダイオーを介してコンデンサをサッと放電します。
きっちり放電しきれるように順方向電圧の低いダイオードとしてショットキーバリアダイオードを使用しています。
この時100Ω抵抗が入ってないとダイオードに大電流が流れる可能性があります。
リセットスイッチを押した場合でもコンデンサをサッと放電してCPUをリセット状態にします。
リセットスイッチを押した時も100Ω抵抗が入ってないとスイッチに大電流が流れてスイッチの接点が壊れる可能性があります。
NMI(ノンマスカブル割込)(水色枠部)
IRQの上位互換みたいなものですが、使わないのでプルアップしておきます。
動作モード切替回路(赤枠部)
ここではプログラムを書き込むモードと、プログラムを実行するモードの切り替えをおこなっています。
FWE:フラッシュメモリ書込み許可
Hにするとマイコンのメモリを書き換えることができます。
MD1:モード設定
書込みモード時はL、それ以外はHにします。
・書込時 FWE:H、MD1:L
・実行時 FWE:L、MD1:H
とします。
ベースボードの回路では両方プルアップした状態で片側だけスイッチでGNDに落としてありますが、今回はMD1をプルアップ、FWEをプルダウンとします。
この3種類の回路を作ればCPUボードを単体で起動させることができます。
回路作成
ブレッドボード上で回路作ります。
ダイオードとコンデンサの向きに注意。
ダイオードを逆接続するとダイオードと電源が壊れます。
コンデンサを逆接続するとコンデンサが壊れます。(最悪の場合コンデンサが音を立てて破裂します)
手元にショットキーバリアダイオードが無かったので他の物でテストしてみたところ、LEDでも起動できました。というか、ダイオード無しでも起動できました。ただ、ダイオード無しだと電源をOFFした瞬間に、マイコンの電源端子には電圧がかかっていないのにリセット端子に電圧がかかる状態になるので壊れる可能性もあります。ちゃんとショットキーバリアダイオードを使いましょう。
動作確認用にLEDと電流制限抵抗も用意しておきます。
接続
ベースボードを使ってCPUボードにプログラムを書き込んでおきます。
書き込むプログラムは秋月サンプルのtera3が良いでしょう。
CPUボードとブレッドボードを接続します。
GND、5V、リセット、NMI、MD1、FWEをそれぞれ接続します。
また、確認用にPE0も接続します。
最後にもう一度回路を確認して電源を接続します。
tera3を書き込んである場合1秒間隔でLEDが点滅すれば成功です。
RS232C
続いてRS232C機能の回路を作成します。
先に、CPUボードには
シリアル通信可能なプログラムを書き込んでおきます。
必要な部品は
Dサブ9ピンメスコネクタとUARTをRS232Cへ変換するICおよびICを安定化させるためのコンデンサ、配線(黒、赤、他2色)です。
秋月で
ICとコンデンサのセットもあり、ブレッドボードやユニバーサル基板上に作成することもできますが、今回は
面実装のICとコンデンサが乗った基板を使用します。
Dサブコネクタのハウジングに収まる設計になっているので非常にコンパクトになります。
とりあえずコネクタに基板を差し込みます。
少々固いですが押し込めば入ります。
四角いランドの上ににコネクタが乗るように位置を調整します。
半田付けしなくても通電している様ですが、ちゃんと半田付けしておきます。
このとき、4番と裏側の一番右を繋ぐ線もつけておきます。(無しでも動きます)
ついでに真ん中の2本も半田でジャンパしておきます。(無しでも動きます)
これらの端子はフロー制御をする際に使用されます。
フロー制御とは
RS232Cではデータを一方的に送り付けるだけでなく、通信する相手の状態を把握して準備が出来てから送受信を行うという流れに沿って順次通信を行う場合もあります。これが
フロー制御です。
趣味レベルだとフロー制御を行う事は無いと思いますし、ベースボードもここまで制御する仕様にはなっていません。ただ、パソコン側の設定がフロー制御ありになっていた場合は何かしら配線をしていないと途中で制御の流れが止まってしまいます。これに対応するため比較的新しいベースボードは4番と6番を短絡させてあります。PC側が準備出来たよとDTRをONするとその信号を送り返してベースボード側も準備したことにしてしまいます。今回はさらにPCが送信していいよとRTSを送ったらそれをCTSとして送り返してマイコン側も受信準備ができたことにしていまいます。
コネクタをよく見ると番号が書いてあります。
さて配線に戻ります。
変換基板のCN1の1番から4番に配線を付けます。
5番から電源を供給すると3.3Vが生成できますが、今回は関係ないので使用しません。
VCCへ5Vを直接供給します。
ベースボードのRS232C部の回路図と比べるとほとんど同じになっていることが分かると思います。1つのICで2回線分の変換ができるので、ベースボードではIC11番/14番を送信に使って13番/12番を受信に使っているのに対して、変換基板では10番/7番と8番9番を使っている違いがあるだけです。
XBEEに付けた配線に色を合わせるとこうなります。
CPUボードの接続先は
通信設定の回にて設定したPA3とPA4です。
あとはブレッドボードなりを経由して配線を接続すれば準備完了です。
電源を入れて通信できれば成功です。
書込み
ここまで来れば書き込みは簡単です。
FWEをHにしMD1をLにした状態で電源を入れれば書き込むことができます。
プルダウン/プルアップしてあるのでそれぞれスイッチで5V、GNDに接続しても良いですし、ブレッドボード上でプルダウン/プルアップの配線を差し替えるのも良いでしょう。
いつも通りの手順で書き込むことができれば成功です。