FA用無線機器 組み込み機器 ハードウェア・ソフトウェア開発 設計製作 - 静岡県浜松市 | |||
ルネサステクノロジの16bitマイコンであるM16C/30Pを使ってマイコンシステムを構築しました。
ルネサステクノロジのM16C/30Pサイトより引用
M16C/30Pの概要
M16C/30PはM16C/60 CPUコアで、1Mバイトのアドレス空間を備えています。最大動作周波数は16MHzです。マスクROM版、ワンタイムフラッシュ版、フラッシュメモリ版、ROMレス版を用意しており、内蔵フラッシュメモリは単一電源で書き換え可能です。
特長:
今回搭載したM16C/30Pは
FlashROM内蔵の M30302FCPGP です。
* 内蔵FlashROM 128KByte
* 内蔵RAM 5Kbyte
これらのメモリはE8/E8aデバッガで使う時に内部にファームウェアやワークRAMを必要とするため、全部は使えません。
外部バス拡張ができることと、DMACを装備しているので、パラレルIFのADコンバータを接続して、高速データ転送をするなどの使い道ができます。また、FPGA+マイコンの構成でマイコンの処理が比較的軽い場合にはこのマイコンを使うとシステムを安価に構築できます。
H8TINYや/R8Cシリーズなどの安価なマイコンは外部にバスが出ていないことが多いのですが、M16C/30Pは安価にもかかわらず外部バス拡張ができて、なおかつデバッガを用いた開発ができるマイコンなのです。逆に外部バスを使わない場合には R8CやM16Tinyを採用した方が良いでしょう。外部バスが出ているマイコンは H8/300Hシリーズ、H8/2000シリーズなどがメジャーですが、アドレス空間が1Mbyteに収まり、処理速度の要求を満たしていれば、安価なデバッカが使えるM16C/30Pは有力な選択肢となります。
M16C/30Pのハードウェア設計にあたり、注意事項と感じた点を挙げます。
・速度以外のバス仕様の混在ができない。
M16C/30PはCS0からCS3まで4種類のチップセレクト信号が出ていますが、ウェイトを除くすべての仕様が同じでなければならない。たとえばバス幅8BitのRAMとバス幅16bitのFlashROMの混在はできません。
実際のハードウェア設計においては ADCとかDACなどのバス仕様に合わせて、メモリ類バスを16Bitバスにするか8Bitバスにするか決めることになります。
・C言語によるソフトウェア開発においては near/farの使い分けが必要
M16Cでは 0x000000〜0x00ffffまでの64Kbyte空間をアクセスするアドレッシングモードを指定するときには nearを、それ以上の空間はfarを用います。
・CSごとのメモリマッピングが変則的
CS0,CS1,CS2,CS3のメモリ範囲がバラバラです。CS3全域とCS2の一部はnear領域なので高速アクセス可能。他はfar領域。
今回は開発したマイコンシステムでは以下のような仕様となります。
M16C/30Pのクロックは最高16MHzですが、一般的なRS232Cの通信速度にぴったり合うように14.7456MHzとしました。
UARTの通信速度を115.2kbpsに設定しても通信速度に誤差が出ません。
このクロックだと外部バスのリードライトサイクルは135nSecということで、SRAM/FlashROMのウェイトは不要です。
TXD2端子はオープンドレインモードしかサポートしないので、UARTで使う場合はプルアップが必要。
部品は入手性を考慮して一般的なものを選定しました。RSコンポーネンツ、マルツ電波、秋月通商などで調達できます。
・電源電圧の変更
般的なFPGAを接続する場合、電源を3.3Vにします。電源電圧が3.3VであればFPGAと直接接続できるので、部品点数が少なくて済みます。
・リセットICの検知電圧を変更
・ST232CD,SRAMは電源電圧が5Vの仕様なので3.3Vの部品を選定する。
・バス幅の変更
16Bit幅にする場合には M16C/30PのBYTE端子を GNDに接続します。
・クロックの変更
消費電力を抑えることができます。
・マイコンの変更
今回採用したM16C/30Pの型番はM30302FCPGP (FROM 128Kb/RAM 5Kb)ですが、M30302FAPGP (FROM 96Kb/RAM 5Kb)または M30302FEPGP(FROM 192Kb/RAM 6Kb)にそのまま置き換えできます。
全体のメモリマップ
FlashROMのメモリマップ
M16C/30PのCS0は変則的なメモリ配置となっているためにFlashROMのセクタが0から始まっていませんが、全域アクセスできます。