2006/05/26 【電子回路編TOPに戻る】
以前にアルファプロジェクトのSH2マイコンボードなどをご紹介したことがありますが、今回ご紹介するのは雑誌の付録に付いてきたSH2マイコンボードです。CQ出版社「インターフェイス2006年6月号」に付録のSH2−7144Fを搭載した小型マイコンボードです。ピンヘッダやコネクタなど若干の部品は個別に準備しなければいけないとは言え、ベンダーから発売されているSH2マイコンボードから比べると1、490円はタダみたいなものです。シンプルな構成で非常に小型ですし、ボードの裏には追加でRAMが実装できるようになっています。ちょうど小型のSH2マイコンボードがほしいと思っていた力弥にとっては渡りに船。本屋さんに置いてあった3冊を全部ゲットしました。(^^; 統合ソフト開発環境としてルネサスのHEW4試用版も付いています。以前ほど利用制限も厳しくなさそうなので、ホビー用途の簡単なプログラムを組む分にはとりあえず十分でしょう。
「インターフェイス」では、今後このボードを使った組み込みマイコンの特集を継続していく様子です。追加リピート基板の有償による供給体制も準備するようなので、この機会に是非入手して見ては如何でしょうか。
18−1.SH2-7144Fワンチップマイコンの概要
以下にSH2-7144Fの機能概要をご紹介します。基本的には1世代前の7044Fの上位互換で、電源電圧が5Vから3.3Vになり、最大動作クロックが28.7MHzから50MHzになっています。細かな機能について書き出すとキリがありませんので、ハードウエアマニュアルに記載されている内容から更に要約してみます。
| 項 目 | 仕 様 |
| CPU |
内部32ビット構成 RISCタイプの命令セット(5段パイプライン) C言語志向の命令セット 命令実行時間 基本命令は1命令/1ステート |
|
割り込みコントローラ (INTC) |
外部割込み端子x11(NMI,UBC,H-UDI,IRQ0〜7) 16レベルの優先順位設定が可能 |
|
クロック発信器 (CPG/PLL) |
クロック発信器内蔵(最大システムクロック50MHz/周辺クロック40MHz) 内部PLLにより、外部入力クロックの逓倍(x1,x2,x4)が可能 外部入力クロックの周波数は4〜12.5MHz |
| データトランスファ コントローラ (DTC) |
一つの起動要因で複数データの連続転送が可能(チェイン転送) アドレス空間は32BIT指定。任意チャンネル数の転送可能。 転送単位をバイト/ワード/ロングワードに設定可能。 |
|
バスステート コントローラ (BSC) |
外部のメモリアクセスをサポート SRAM/ROMをダイレクト接続可能 外部アドレス空間を4エリアに分割し、各々にバス動作を設定可能 データバスは8BIT、16BITまたは32BITから選択可能 |
|
ダイレクト メモリアクセス (DMAC) |
外部デバイス、外部メモリ間のデータ転送をCPUを介さず高速で実現 |
|
マルチファンクション タイマーユニット (MTU) |
16ビットタイマー5チャンネルをベースに、最大16種類の波形出力またはパルスの入出力処理が可能 16本のアウトプットコンペア兼インプットキャプチャレジスタ パルス出力モード ワンショット/トグル/PWM/相補PWM/リセット同期PWM 最大12チャンネルのPWM出力可能 |
|
コンペアマッチタイマ x2チャンネル (CMT) |
16ビットフリーランニングカウンタ(周辺クロック/8,32,128,512) 各チャンネルごとに1個のコンペアジレスタ コンペアマッチで割り込み要求を発生 |
|
ウォッチドックタイマ (WDT) |
WDT x1チャンネル ウォッチドックタイマ/インターバルタイマの切り替えが可能 カウンタオーバーフロー時、内部リセット、外部信号、割り込み発生 |
|
シリアル インターフェイス (SCI) |
SCI x4チャンネル 調歩同期/クロック同期を選択可能 全二重通信が可能 専用のボーレートジェネレータ内蔵 マルチプロセッサ間通信機能 |
| I2Cインターフェイス (IIC) |
デバイス間シリアル通信のI2Cを1チャンネルサポート |
|
A/D変換器
|
A/D x8チャンネル、分解能10ビット(2個の独立したA/Dモジュール) 外部トリガによる起動も可能 同時に2チャンネルサンプリング可能 |
| I/Oポート |
入出力ポート74本 入力ポート8本 の計82本 I/Oポートは、他の機能の端子と兼用 |
|
内蔵メモリ |
フラッシュメモリ 256KB RAM 8KB |
| デバッガ対応機能 | UBC(ユーザーブレークコントローラ) H-UDI(ユーザーデバッグインターフェイス) AUD(アドバンスユーザーデバッガ) |
以前ご紹介しているSH2-7045Fの後継機種としてはSH2-7145Fがあります。ピン数も7144Fの112本に対して、7145Fは144本と一回り大き目です。興味のある方は紐解いて見て下さい。
18−2.SH2−7144Fマイコンボードの外観
| 部品面 | 半田面 | ||
![]() |
![]() |
基板の寸法は56mm x 53mm です。
部品面の中心に搭載されている大きなLSIがSH2-7144Fです。3.3Vレギュレータ、発振用水晶、リセットIC、RS232Cドライバなどの最低限のデバイスが搭載されていますが、それ以外は上下の40pinピンヘッダから外部接続用の端子が出されているシンプルな構成です。半田面には512KバイトのRAMの追加実装用のパターンが走っていますが、まだ実装していない状態です。 動作確認用のLEDが1個だけ部品面に付いていて、PE15のPIO端子に接続されています。
部品面左側のピンヘッダはJTAGデバッグ用のコネクタで、右側の茶色のコネクタがRS232Cシリアルコネクタです。Dサブ9ピンコネクタは大きくてガサバるため、3ピンのピンヘッダ型コネクタとしています。KONDO KHR-1の純正シリアルケーブルがそのまま接続できます。
18−3.SH2−7144Fマイコンボードの回路図
ここをクリックすると、マイコンボードの回路図(PDFファイル)がダウンロードできます。CQ出版社さんの許可を得ていないので多分怒られますが、とりあえず載せちゃいます。CQ出版社さんすみません。
尚、本マイコンボードおよび回路図の不具合や改善内容などについては、インターフェイスのホームページに公開されています。読者からの指摘書き込みや、公式なサポートおよび正誤情報なども公開されていますので、ご確認下さい。
ここでは、KONDO KHR-1の純正シリアルケーブルを利用するための配線だけ、ご案内致します。

上図左がKONDO KHR-1純正のシリアルケーブルです。RxDとDTRの間を2.2Kオームの抵抗で接続していますが、力弥自身はこのような接続は始めて見ました。上図右が今回のSH2-7144Fマイコンボード上のパターンによる等価のシリアルケーブル配線ですので、このようなシリアルケーブルを自作されても問題ありません。力弥は通常、DTRとDSR、RTSとCTSをそれぞれショートさせて擬似的なハンドシェーク接続としています。いずれにしても、3ピンのうち、マイコンボード側から見れば、TxD,RxD,GNDの順番にピン配列が並べばよいことになります。
![]() |
![]() |
ところで、マイコンボードのDsubコネクタのピン配列は
2 : TxD
3 : RxD
4 : DTR
5 : GND
とならんでいるため、3ピン分を並べるには4:DTRが邪魔です。 しかし4:DTRは8:CTSと擬似ハンドシェイクのためにパターン上でショートされているだけなので、5:GNDと接続してしまって、4:DTRをGND端子にしてしまいます。これにより、3ピン分を並べることができます。その様子が上の写真の右側です。
18−4.SH2−7144Fマイコンボードのピンファンクション
以下のようなコネクタ用のパターンが付いており、I/O関連を外部に取り出すことができます。
ヘッダJ1 (*は負論理)
|
No. |
ピンファンクション |
No. |
ピンファンクション |
| 1 | PC0/A0 | 2 | PC1/A1 |
| 3 | PC2/A2 | 4 | PC3/A3 |
| 5 | PC4/A4 | 6 | PC5/A5 |
| 7 | PC6/A6 | 8 | PC7/A7 |
| 9 | PC8/A8 | 10 | PC9/A9 |
| 11 | PC10/A10 | 12 | PC11/A11 |
| 13 | PC12/A12 | 14 | PC13/A13 |
| 15 | PC14/A14 | 16 | PC15/A15 |
| 17 | PB0/A16 | 18 | PB1/A17 |
| 19 | PB6/*IRQ4/A18/*BACK | 20 | PB7/*IRQ5/A19/*BREQ |
| 21 | PB8/*IRQ6/A20/*WAIT | 22 | PB9/*IRQ7/A21/*ADTRG |
| 23 | PD0/D0 | 24 | PD1/D1 |
| 25 | PD2/D2 | 26 | PD3/D3 |
| 27 | PD4/D4 | 28 | PD5/D5 |
| 29 | PD6/D6 | 30 | PD7/D7 |
| 31 | PD8/D8/AUDATA0 | 32 | PD9/D9/AUDATA1 |
| 33 | PD10/D10/AUDATA2 | 34 | PD11/D11/AUDATA3 |
| 35 | PD12/D12/*AUDRST | 36 | PD13/D13/AUDMD |
| 37 | PD14/D14/AUDCK | 38 | PD15/D15/*AUDSYNC |
| 39 | PA10/*CS0 | 40 | PA11*CS1 |
ヘッダJ2 (*は負論理)
|
No. |
ピンファンクション |
No. |
ピンファンクション |
| 1 | PF0/AN0 | 2 | PF1AN1 |
| 3 | PF2/AN2 | 4 | PF3/AN3 |
| 5 | PF4/AN4 | 6 | PF5/AN5 |
| 7 | PF6/AN6 | 8 | PF7/AN7 |
| 9 | PE5/TIOC1B/TXD3 | 10 | PE6/TIOC2A/SCK3 |
| 11 | PE7/TIOC2B/RXD2 | 12 | PE8/TIOC3A/SCK2 |
| 13 | PE9/TIOC3B/SCK3 | 14 | PE10/TIOC3C/TXD2 |
| 15 | PE11/TIOC3D/RXD3 | 16 | PE12/TIOC4A/TXD3 |
| 17 | PE13/TIOC4B/*MRES | 18 | PE14/TIOC4C/DACK0 |
| 19 | PE15/TIOC4D/DACK1/*IRQOUT | 20 | *RES |
| 21 | PA12/*WRL | 22 | PA13/*WRH |
| 23 | PA14/*RD | 24 | PA2/SCK0/*DREQ0/*IRQ0 |
| 25 | PA5/SCK1/*DREQ1/*IRQ1 | 26 | PA8/TCLKC/*IRQ2 |
| 27 | PA9/TCLKD/*IRQ3 | 28 | PA15/CK |
| 29 | PB2/*IRQ0/*POE0/SCL0 | 30 | PB3/IRQ1/*POE1/SDA0 |
| 31 | PB4/*IRQ2/*POE2/*CS6 | 32 | PB5/*IRQ3/*POE3/*CS7 |
| 33 | PA6/TCLKA/*CS2 | 34 | PA7/TCLKB/*CS3 |
| 35 | *WDTOVF | 36 | PA1/TXD0 |
| 37 | PA0/RXD0 | 38 | 電源入力3.6V〜6.0V |
| 39 | Vcc 3.3V出力 | 40 | GND |
ヘッダJ3 (*は負論理)
|
No. |
ピンファンクション |
No. |
ピンファンクション |
| 1 | PE4/TCK | 2 | PE1/*TRST |
| 3 | PE3/TDO | 4 | *ASEBRKAK |
| 5 | PE0/TMS | 6 | PE2/TDI |
| 7 | *RES | 8 | |
| 9 | GND | 10 | GND |
| 11 | Vcc 3.3V出力 | 12 | GND |
| 13 | GND | 14 | GND |
18−5.とりあえず動かすマザーボード
さて、マイコンボードの内容が大体分かってきたら、とりあえず動かしてみましょう。このマイコンボードは出荷時のチェックのために、アナログ入力のA/D変換結果をシリアル出力し続けるデータロガー機能と、PE15ポートに接続されたLEDを点滅させるプログラムが焼き込まれています。これはボード上のJP1(書き込みモード設定ピン)をオープンにした状態で電源を入れれば、勝手に動作を開始します。
先ずは電源を入れないと話にならないので、以下のようにあり合わせのユニバーサル基板で電源を供給することにします。

左上の写真がとりあえず電源だけ供給できるマザーボードの部品面。右上がその裏です。DC+5V電源を受けるためのコネクタを付け、赤と青の線でマイコンボードに電源を供給しているだけのものです。ユニバーサルのハンダ面が微妙に汚いのは、あり合せのジャンクから持ってきたためです。(^^;;

で、上の写真がマイコンボードを実装してみたところです。周囲に多少のスペースがあるので、外部とのI/Fコネクタを設けたりするのに丁度良い大きさです。今後実験の度に部品を追加していくことにしましょう。で、DC+5Vを掛けて見たところ、勝手にLEDの点滅が開始されました。ついでにPCとシリアルケーブルで接続し、ハイパーターミナルを起動したところ、8チャンネル分のA/D変換結果が順次送信されてくることも確認できました。ただし、上のマザーボードではA/D入力端子はオープンのままですので、電圧不定で変換値も不定となっています。
18−6.CMTを使ったテストプログラム7144test1.c
インターフェイスの記事の中にも簡単なLED点滅のためのテストプログラムが紹介されていますが、ここではCMTコンペアマッチタイマを使った指定時間ごとのLED点滅プログラムを動かしてみましょう。 ツールとしてはルネサスの統合開発ツールHEW4を利用しますが、これもインターフェイスの付録CD-ROMの中に収録されています。今回のテストプログラムは以前SH2_7045Fのプログラミング事例としてご紹介したものとほぼ同じですので、詳しくは211.CMTで時間つぶし(SH2-7045F)の記事をご参照下さい。 テストプログラムはここをクリックするとダウンロードできます。7144test1.C
| /********************************************************** 7144test1.c 2006.05.26 RIKIYA SH2_7144F CMT0を使って1mS単位の時間稼ぎ関数wait()を作る。 /*********************************************************/ #include "iodefine.h" void main(void); void wait(unsigned short); /* メイン関数********************************************/ void main(void){ MST.CR2.BIT._CMT = 0; // CMTスタンバイ解除 PFC.PEIORL.BIT.B15 = 1; // PE15 OUTPUT MODE CMT0.CMCSR.BIT.CKS = 0; // CMT0 CLOCK 24MHz/8 CMT0.CMCOR = 3000; // 1mS/0.3333uS = 3000 CMT.CMSTR.BIT.STR0 = 0; // CMT0 COUNT STOP while(1){ PE.DRL.BIT.B15 ^= 1; // PE15 on/off wait(500); // 500mS待機 } } /* CMT時間稼ぎ******************************************** 引数のmsecには、1/1000秒単位で待機時間を指定する。 unsigned short型、0xffff(65535)まで。 **********************************************************/ void wait(unsigned short msec){ unsigned short i; CMT.CMSTR.BIT.STR0 = 1; // CMT0 COUNT START for(i=0;i<msec;i++){ do{ // CMCNT = CMCORまで待つ(1ms) }while(CMT0.CMCSR.BIT.CMF == 0); CMT0.CMCSR.BIT.CMF = 0; // コンペアフラグをリセット } CMT.CMSTR.BIT.STR0 = 0; // CMT0 COUNT STOP return; } |
今回は内容のご説明は省略しますが、注意点を2点だけ。
■1.ヘッダファイル
HEW4でソフト開発する場合、I/Oのヘッダファイルは iodefine.h となりますので、インクルードの指定は #include "iodefine.h" とします。
HEW4を使うとすぐに分かりますが、上記のプログラムを動かすための関連ファイル類は全てプロジェクトという概念で束ねられ、全てが簡単に表示を切り替えられて、お互いに編集や参照がし易くなっています。なので、I/Oのヘッダファイルも参照しやすくてグッドです。
■2.スタンバイ機能の解除操作
インターフェイスの記事の中でも注意事項として明記されていますが、7044Fや7045Fの時にはなかった内蔵周辺機能のスタンバイ機能というのがあります。CPUリセット立ち上がり後には周辺機能はスタンバイ状態になっているため、プログラム上からスタンバイを解除してあげないとそれらの機能は動作しません。具体的にはモジュールスタンバイコントロールレジスタ1,2 (MSTCR1,2)というレジスタの、対応するBITを0にすることでスタンバイ状態を解除します。対象となる内蔵周辺機能は以下の通りとなります。
今回はCMT0を利用しますので、CMTのスタンバイを解除しなければならず、そのために
MST.CR2.BIT._CMT = 0; を記述しています。
| 立ち上げ時スタンバイ状態となる機能 |
| 内蔵RAM |
| 内蔵ROM |
| データトランスファコントローラ DTC |
| ダイレクトメモリアクセスコントローラ DMAC |
| I2Cバスコントローラ IIC |
| シリアルインターフェイス3 SCI3 |
| シリアルインターフェイス2 SCI2 |
| シリアルインターフェイス1 SCI1 |
| シリアルインターフェイス0 SCI0 |
| マルチファンクションタイマ MTU |
| コンペアマッチタイマ CMT |
| A/D変換1 A/D1 |
| A/D変換2 A/D2 |
| アドバンストユーザーデバッガ AUD |
| ユーザーデバッグインターフェイス H-UDI |
| ユーザーブレークコントローラ UBC |
というわけで、雑誌の付録とは言え単なる実地勉強の道具としてだけではなく、私たちホビーユーズでの実際の利用にも適したマイコンボードだと思います。今後しばらくは、このSH2−7144Fマイコンボードを中心にして行きたいと思います。もう一つ嬉しいのが、ルネサスのHEW4の利用制限が少なくなって、実際の開発環境として利用できるようになってきたことです。以前のHEW3の時には1ヶ月程度の試用期間が過ぎたら全て利用できなくなったり、KPIT-GNUバージョンのHEW3を使ってみても良く分からなかったりしたもので、結局HEWから遠ざかってしまっていました。今後、インターフェイスの特集の継続により、SH2マイコンの利用術について、より勉強のチャンスが増えることを期待しましょう。(^o^