組み込みマイコン用記憶媒体の考察

H8やAVRなどのマイコンにFlash memoryを繋いで遊んでみようという企画です。 以下のような用途(遊びかた)を想定しています。

どんな記録媒体があるか

おおざっぱに分けると、SD CardやCompactFlashに代表されるようなカード型 メモリと、基板にはんだ付けするチップ型に分けられるでしょう。詳細は後で 書くことにして、どんなものがあるか並べてみます。

名称 形態 仕様書 大きさ(mm3) 入手性 ピン数 コントローラ
CompatFlash card 無償/公開 42.8 x 36.4 x 5.0 50 あり
MultiMediaCard card 無償/公開 32.0 x 24.0 x 1.4 7 あり
SD Card card 有償※ 24.0 x 32.0 x 2.1 9 あり
MemoryStick card 有償 21.5 x 50.0 x 2.8 10 あり
SmartMedia card 無償/要登録 45.0 x 37.0 x 0.76 22 なし
xD Picture card 有償 20.0 x 25.0 x 1.7 18 なし?
PCMCIA SRAM card 無償/公開 85.6 x 54.0 x 5.0 68 あり
Serial EEPROM chip 無償/公開 DIP8/SOP8 8 なし
Parallel EEPROM chip 無償/公開 DIP/SOP/PLCC等 なし

※SD Card自体は仕様非公開ですが、MultiMediaCard互換として使えます

記録媒体の選定

チップ型 or カード型

まず最初の選択として、基板にチップをはんだ付けしてしまうのか、それとも ソケットを基板に載せてメモリカードを抜き差しできるようにするかを考えて みます。

使用目的が設定を記録しておきたい等で、外部へデータを移す必要がない使い 方であれば、Serial EEPROMがお手軽でお薦めです。MPUとROMの間に2本か3本 の配線をするだけで済みます。

一方、データロガー等を作る場合、記録したデータをPCへ転送する必要が出て きます。カード型の場合は、メモリカードを引き抜いてPCに持っていくだけで 済みます。ただし、マイコン側にFAT filesystemを実装する必要があったり専 用のソケットを入手する必要があります。
一方で、基板にチップを載せておいて、RS-232CやUSB接続でPCへデータを転送 するという選択も考えられます。この場合はマイコンとPC両方に通信用のプロ グラムを用意する必要があります。
まとめると、マイコンにFilesystemを実装することと、通信を実装することの どちらが楽かで選ぶことになると思います。個人的にはFAT16 Filesystemを書いてしまったので、メモリカー ドの方が楽だと感じますが。

仕様書

電子工作でFlash memoryを使う場合の最重要項目は仕様を入手できるかどうか でしょう。基板にチップを載せる場合は、製造者のWeb pageからdatasheetを 入手できる場合がほとんどですので問題ありませんが、カード型の場合は契約 を結ばなければ仕様を入手できないものもあります。
そのため、個人の電子工作の範囲で使えるものとなると、カード型では CompactFlash、MultiMediaCard、SD Card、SmartMediaに絞られます。

コントローラの有無

Flash memoryは、不完全な素子で書き込みできない部分が数%あります。また、 書き換えを繰り返していくと劣化していき、書き込みできない部分が増えてい きます。
そのため、Flash memoryを扱う場合は、不良セクタをどうするか考えたり、特 定の部分に書き込みが集中しないように使う等の工夫(苦行?)が必要となって きます。
CompactFlash等、コントローラ内蔵型のものは、上記のような面倒くさい処理 をコントローラが引き受けてくれます。そのため、マイコンからは不良セクタ の無い完全なメモリとして扱えるので非常にラクチンです。
逆に、SmartMediaなどはそのあたりの処理をすべてマイコンでやらなければな らないため、相当面倒くさいかと思われます。

各記録媒体の特徴など

CompactFlash

DSC等でおなじみのCompactFlashですが、この手のカードの中では大きさ最大、 pin数も50pinで最大となります。50pinの内、マイコンに接続するのは半分の 25本程度ですが、それでも配線数が多い部類で基板上の配線のとりまわしがや や面倒くさいでしょう。

ソフトウェアという観点で見ると、 PCMCIA互換modeとTrueIDE modeがあり、 それぞれPCMCIAやATA HDDとほぼ同等の振舞をします。活線挿抜が必須の場合 はPCMCIA互換で使う必要がありますが、そうでなければTrueIDE modeの方が使 いやすそうです。

TrueIDE modeで使う場合、必要最低限の信号線はD0〜D15、A0〜A2、IORD、 IOWR、CE1、CE2で、H8-300Hなどの16bit busが出ているマイコンならSRAMと同 じ要領でbusに繋いで使うことができます。MPU内蔵のDMAを使ってデータ転送 したり、読み込み準備完了/書き込み終了時に割り込みがかかるようにもでき るため、CPUをほとんど使わずにデータ転送ができてしまうという利点があり ます。元々IDEの仕様自体がbus直結を意図していたため、当然といえば当然で すが。
また、CompactFlashは電源電圧が3.3Vと5V両対応となっているため、電圧変換 を気にせず5V電源のマイコンに直結できるのも大きな利点でしょう。

MultiMediaCard

7pinしかなく、配線が簡単なのが最大の利点です。MMC modeとSPI modeを持っ ていて、SPI modeならほとんどのマイコンに内蔵されている、クロック同期シ リアル通信をそのまま使って接続できます。マイコンに繋ぐのは CS(ChipSelect)、SCK(Serial Clock)、DI(Data In)、DO(Data Out)の4本だけ です。
ただ、配線が楽であるとは言え、電源電圧が3.3Vのため5V電源のマイコンに繋 ぐ場合は電圧変換が必要になります。

最近では、より高速な読み書きを行うため、13pinになって8bit単位でのデー タ転送を可能にしたMMCplusや、1.8Vでも動作可能なMMCmobileなど、さまざま な派生規格ができています。

SD Card

SD CardはMultiMediaCardに著作権保護機能と高速化のため4bit幅データ転送 機能を付加したものです。基本的にMultiMediaCardと互換があり、SPI modeも 残っているため、MultiMediaCardのかわりとして使えます。
日本国内ではMultiMediaCardよりSD Cardの方が入手性が良いのでこちらをお 薦めします。

Serial EEPROM

8pin程度の小さなパッケージに入ったEEPROMで、I2CやSPIといったシリアル通 信でマイコンから読み書きできるものです。半導体各社から販売されています が、個人で入手となると秋月電子 の通販で扱っているATMELのAT24シリー ズやAT93シリーズが入手しやすいでしょうか。

I2CやSPIに関しては、MYCOMジャーナル のコラム バスのアーキテクチャ - 過去から未来へ(87)バスのアーキテ クチャ - 過去から未来へ(94)がよくまとまっているので、そちらを参照 してみてください。

おまけ - Flash vs Flush

こうやって文章を書いていると、Flash memoryとFlush memoryどっちだったか よく迷います。
1bit毎に書き込むEEPROMに対して、512byteなどまとまったブロック単位で書 き込むという特徴からは"Flush"の方が意味は近いと思います。し かし、googleさんに聞いてみると、"Flash memory"の方が圧倒的に 普及しているようです。
もともと東芝製の和製英語のため、どちらが正解というものでもなさそうです。 和製英語らしく「フラッシュメモリ」とカタカナで書くのが良いのでしょうか?


ご意見、ご感想は、花房 真広 <webmaster@hanabusa.net>まで。メールする前にtop pageの注意書を読んでください。