MSC-MOD20ユーザーズガイド
型番：MSC-MOD20

REV.1.53

製品の概要

microSDカード
簡単シリアルアクセスボード

microSDカード簡単シリアルアクセスボード（型式：MSC-MOD20、以下型式で記載）は、microSDカードに簡単なシリアル通信コマンドで、アクセスすることのできるボードです。FATファイルシステムを搭載しています。
MSC-MOD20はロングファイルネーム(LFN)に対応しており長いフ

補足取扱説明書
お使いになる前にこの説明書をよくお読みの上正しくお使いください。

ァイル名を使ったファイル操作ができます。
ファイルの新規作成や更新、ディレクトリの作成、ファイルからのデー

本製品のサポートは製品の主要機能を司るCPUの開発元である米GHI
Electronics社が行います。

タ読み取り、ファイル等の削除などあらゆるファイル操作を行うことができます。
ファイルシステムはFAT16/32形式ですのでMSC-MOD20で作成、(C)2014 マイクロテクニカ

更新したファイルはそのままパソコン等で扱うことができます。
RTC内蔵なので、ファイルにタイムスタンプをつけることができます。
また付属の32.768KHzクリスタル発振子を取り付けることでコイン電はじめに本マニュアルについて

池によるバッテリーバックアップも維持可能です。

この度は、microSDカード簡単シリアルアクセスボード（型式MSC-M
OD20、以下型式で記載）をご利用頂き、誠にありがとうございます。
本マニュアルは、本製品の開発元である米GHI Electronics社のマニ※本製品は、従来品のMSC-MOD10と基板サイズ及びピンアサインが同じで、互換性があります。（コマンドには互換性がありません。）

ュアルを元に、当方が日本語訳や解説等を追加して作成された日本語マニュアルです。英語版マニュアルではわかりにくい部分を図解で解説するなどしてマニュアルとして読みやすく編集しておりますが、すべてのパッケージの内容

部分において完全な日本語訳となっていない部分がございます。
翻訳に誤りが存在する場合もございますので、開発元よりリリースさ■同梱物
・MSC-MOD20本体
・32.768KHzクリスタル発振子

れている最新の英語版マニュアルを必ずご参照頂き、この日本語マニ
ュアルと併せてお読み頂けますようお願い申し上げます。

・マニュアル（本書）※マニュアルはダウンロードにて提供■開発元のオリジナルマニュアルダウンロード先

microSDカードの脱着

http://www.microtechnica.tv/support/manual/
ALFAT_SoC_Processor_User_Manual.pdf

MSC-MOD20にはmicroSDカードが装着できます。対応するファイル
システムは、FAT16及びFAT32です。本製品はexFat,NTFSには対応し※当方のマニュアルダウンロードページ(http://www.microtechnica.nておりません。

et/)からもダウンロードできます。

■利用できるmicroSDカード
メモリー容量512MB～64GBまでのmicroSDカード。

なお、日本語マニュアル作成においては適正かつ正確なものとなるよう注意を払っておりますが、場合によっては正当性や妥当性に不確

FAT16又は32でフォーマット済みであるもの。

実な部分が含まれていることもございます。日本語マニュアルに記載されている情報の利用による損害が発生しても当方では責任を負いかねClass2～10までのSDスピードクラスのもの。

ますので予めご了承下さい。

ご使用の前に必ずパソコンにてFAT32にフォーマットしてご利用ください。また、必要に応じてSDカードフォーマッターをご利用ください。

※必ず併読をお願い致します。

https://www.sdcard.org/jp/downloads/formatter/

製品本体■microSDカードの装着/取り外し
microSDカードは、MSC-MOD20基板にあるソケットに装着します。
装着の際には、microSDカードの端子部分が基板側（下側）になるような方向で挿入し、"カチッ"と音がするまで押し込んでください。
取り外す際には、カードを引っぱらずに、一度押し込んむとカードが飛び出しますので、それから引き抜いてください。

※基板上ICの24ピン-25ピン間が製造上、半田ブリッジしているものがありますが、もともとこの2つのピンはGNDと接続されておりパターン上短絡していても、異常、製造不良ではございません。

1

但し、9ピンのリセットピンは5Vトレラントではありません。+5Vを9ピ対応できるmicroSDカードと相性問題について

ンのリセットピンに印加すると破損しますので十分ご注意ください。
MSC-MOD20には家電量販店等で市販されている、microSDカー■電源についてド、microカードが使用できます。しかしながら相性問題が発生する場合

MSC-MOD20の電源電圧は+3.3Vです。

があります。
相性問題の多くは使用されているメモリーICの種類やコントローラ
ーのファームウエア等によって時間的なタイミングがずれていたりする

消費電流は待機時で平均38mA程度です。microSDカード装着時で初期化コマンド実行時に約56mA～70mA程度の電流が流れます。電流はことによります。それぞれの製品では規格を満たしていても、規格にはある程度の余裕が設けられているため、その余裕が積み重なり時間的動作状態や使用しているmicroSDカードなどによって変動しますので、300mA程度は流せる余裕を持った電源をお使いください。
電源は必ず安定化されたものをご使用下さい。

なタイミングのずれが重畳されて大きくなり、相性の問題として不具合を引き起こす原因となります。これは、多くのメーカーが参入している

Vbatピン（13ピン）は、RTC（リアルタイムクロック）用の電源ですが、開かれた規格では技術的にも不可避的です。

RTCを使用しない場合でも、Vbatピンには+3.0V～+3.3Vの電圧を印

上記のような理由により、誠に勝手ではありますが、相性問題によって動作に不具合が生じた場合であっても当方では、その責を負うことはできませんので、ご理解とご了承お願い申し上げます。

加しておく必要があります。 ここに電圧が印加されていない場合RTCを使用していない場合でも本体が動作しませんのでご注意ください。

相性問題を発生しにくくするにるため、スピードクラスが小さいもの
及びメモリー容量が小さめのものをお奨めします。なお新規格の高速

RTCを使う場合の電源接続例は次の"リアルタイムクロックの使用について"の項をご覧下さい。

規格、UHSインターフェースのカードには対応していません。
RTCは何に使うの？

端子の概要とその詳細

RTCはファイルを作ったり更新したりする時にタイムスタンプを付けるとき必要になる日時管理をする機能です。本機ではRTCのクロック源として、ボードのCPUを動作させるクロックと共有させる■端子の概要RTC用32.768kHz発振子端子

モードと、基板Q1に32.768KHzの水晶発振子を取り付けてバッ
テリーバックアップが可能なモードと2つあります。
ちなみに、RTC機能を使わない（設定しないで）でファイルを作成したり更新したりすると、ファイルのタイムスタンプは意味のない日
時になります。
■リアルタイムクロックの使用について
MSC-MOD20には、本体にリアルタイムクロック(RTC)を搭載しています。RTCは、時間を計測してファイルやフォルダの作成時に、タイム
スタンプを付けるために使用されます。RTCの動作用クロックは2つから選択可能です。1つはCPU動作と同一のクロックを使う"シェアードモ

1ード"で、このモードの場合本体の電源を切断すると設定されていた日
時データは失われます。その代わり基板のQ1に外付けの水晶発振子をインターフェイス端子

取り付ける必要がありません。
もう1つのモードは"バックアップモード"で、基板のQ1に取り付けた
32.768kHzの水晶発振子をクロックとして使います。このモードでは、

13
ﾋﾟﾝ

端子記号

内

Vbatピンに+1.65V～3.6Vの電源を給電し続けることで、RTCは時間計測を継続し日時データが本体の電源を切断しても維持されます。CR
2032などのボタン電池でバックアップすることができます。

容

1
2

UART TXUART RXUART送信データ
UART受信データ /I2Cビジー

3

I2C SCL

I2C通信クロック

4
5

I2C SDA
MODE1

I2C通信データ
モード設定ピン1

6

UART BUSY UARTビジー

7
8

NC
MODE2

9

RESET

Vbatピンの消費電流は、3.3Vの時に約0.96μA程度～約1.68μA（平均値）でCR2032を使用した場合、公称容量が220mAhなので自己放電を含めても10年程度は計測を保持できる計算となります。
どちらのモードで使用するかは、"T"コマンドで設定を行い、その後、"S"コマンドを使用して日時を設定を行います。なお、一度RTCの設定がクリアーされてしまった場合やRTCの動作モードを指定しない場合、モード設定ピン2
ハードウエア本体リセット※5Vトレラントではありません。

10 GND

電源GND

11 Vcc12 WAKE

電源+3.3V
ウェイクアップピン

13 Vbat

内蔵RTC用電源入力 +1.65～+3.6V

RTCの保持する値はまったく意味のない日時になります。（※決まった値にはなりません。）よって、RTCがクリアーされた後のファイルに保存されるタイムスタンプは全く意味のない日時となります。
バックアップ機能を使用する場合には、下図のようにダイオードを2本使用して電源を切り替える簡易回路を作ります。

RTC未使用時は+3.3Vを印加してください。
※1：MSC-MOD20の電源電圧は3.3Vであり、ロジックレベルはLVTTL
レベル(3.3V)ですが、すべてのI/OピンはTTLレベル(5V)のロジックもそのまま接続できます。（5Vトレラント機能搭載）
2

・ストップモード
現在の作業状態を維持したまま低消費電力状態になるモードです。
消費電流は1.5mA（CPUの消費電流値です）になります。ストップモードから復帰すると、ストップモード移行直前の状態に戻ります。
復帰するには、WAKEピンに立ち上がりエッジパルスを入力します。
マイコンなどとこのWAKEピンを接続してコントロールする場合には、通常時はこのピンをLレベルにしておいて、省電力モードからの復帰時にこのピンに10ミリ秒以上のHパルスを印加します。システムは、
パルスの立ち上がりエッジを検出して復帰します。

※ダイオードは1S1588互換品などが使えます。
図：RTCバックアップ用電源(CR2032)追加回路例※Vbatピンは、RTCを使用しない場合でもMSC-MOD20を動作させるために+3V～+3.3Vの電圧電圧を印加する必要があります。
■モード設定シリアル通信の方式をモード設定ピン(5、8ピン)で行うことができます。設定はUART通信モード、I2C通信モード、ブートローダモード(ファームウエアをアップデートするモードです)です。
必ず電源投入前にシリアル通信の方式をモード設定ピンで設定してから電源を投入して通信を開始してください。
通信モード
UART通信モード

Mode1ピン(5ピン)0Mode2ピン(8ピン)0I2C通信モード

0

1

ブートローダモード
1※0はGNDへ接続、1は+3.3Vへ接続

0■リセットピンについて
リセットピンは、GNDに接地するとハードウエアリセットがかかります。すべての設定はリセットされ初期状態に戻ります。（動作開始後のR
TCのデータはリセットされません。）通常はタクトスイッチ等を接続して本体のリセットができるようにします。
なおこのリセットピンは5Vトレラントではありません。絶対に+3.3V
以上の電圧を印加しないでください。3.3V以上の電圧を印加すると本体はすぐに破損します。特にマイコンなどと接続してマイコンからリセッ
トできるように設計する場合などは十分な注意が必要です。
必要に応じて10KΩ程度の抵抗器で3.3Vにプルアップしてください。
■WAKEピンと省電力モードについて
WAKEピン（12ピン）は、"Z"コマンドによって省電力モードに移行した本体を通常状態に復帰させるためのピンです。
MSC-MOD20には次の2つの省電力モードがあります。
・スタンバイモード
システムを完全に停止させる省電力モードです。消費電流は70uA～
75uA程度まで減少（CPUの消費電流値です）します。スタンバイモー
ドに移行するとすべての設定はリセットされ、作業中の内容は破棄されます。ファイルハンドルも破棄され、ファイルハンドルのクローズ処理がされていないデータはすべて破棄されます。
復帰するには、リセットピンにより本体をリセットするか、WAKEピンに立ち上がりエッジパルスを入力します。

3

■UARTピン、I2Cピン等データピンの電気的特性※本製品の機能を実現するALFAT SoCは、STM32F205RBT6に米GHI Electronics社が自社で開発したファームウエアを書き込んだものです。
よって、ソフトウエア的な仕様以外はすべてベースとなっているマイコン、STM32F205RBT6の仕様に準じます。さらに詳しいハードウエア仕様が必
要な場合にはSTM32F205RBT6のデータシートをご覧ください。

https://www.stmcu.jp/stm32/stm32f2/stm32f2x5/12074/

4

シリアル通信について■UART通信モードで使うピンについて～UART通信～

UART通信で制御する場合には次のピンを使います。
MSC-MOD20は非同期式シリアル通信(UART)と、同期式シリアル通信のI2Cに対応しており、モード設定ピン1(5ピン)と、モード設定ピン

ピン名

2(8ピン)にて、電源投入前に状態を設定をしてから起動します。
そのほか、本体のファームウエアをアップデートする際に使用するブUART TX

1

データを出力するピンです（出力）UART RXUART BUSY

2
6

データを受信するピンです（入力）MSC-MOD20がデータを受信できる状態

ートローダモードがあります。通信モードが正しくないと通信ができず

ﾋﾟﾝ数

概

要

かを通知する出力ピンです。このピンがHレベルの時はMSC-MOD20はデータを受信動作しませんので、必ず5ピン、8ピンの設定を行った後に、電源を投入
してください。

できません。LレベルになるまでデータをUA
通信モード

Mode1ピン(5ピン)

RTホストから送ることは待機してください。
このピンは常にUARTホスト側で監視して

Mode2ピン(8ピン)

UART通信モード

00

I2C通信モード
ブートローダモード

0
1

1
0

おくことをお奨めします。
1ピンと2ピンはUART信号の送受信ピンです。

※0はGNDへ接続、1は+3.3V又は+5.0Vへ接続

MSC-MOD20ではRTS/CTSのフロー制御は搭載しておらず、その代わりにUART_BUSYピンがあります。このピンは、MSC-MOD20がデ■UARTモードでの使用方法
非同期式シリアル通信（UART）通信を行う場合にはマイコン又は、ータを受信できる状態かを通知する出力ピンです。このピンがLレベル

パソコンと接続する場合にはRS232Cポートを搭載したパソコンか、U
SB-UART変換IC(FT232R等)を介して接続します。

の時は、UARTデータを受信可能です。このピンがHレベルの時は、UAR
Tデータは受信できません。Hレベルの時はLレベルになるのを待って、ロジックの電圧レベルは+3.3Vでも+5.0Vでも使用可能で、直結できます。下図はADM3202を使用してパソコンと接続するためのRS23データを送信してください。2線式でTX/RX線だけを使って通信したい
場合にはこのピンは使いませんが、データの量が多くなったり転送スピ
ードが速くなるとデータの欠落が発生することがありますので、UART

2Cインターフェイス(D-Sub9ピン)回路を作成した例です。

ホストではできるかぎりこのピンの状態を監視しながら通信をすることが推奨されます。フロー制御でいうところのRTS(Request To Send)ピンとほぼ同じ機能です。

・パソコンとの接続回路例

UART_BUSYピンを使わない場合にはオープンにしておきます。
■UARTの通信速度について
デフォルト（工場出荷時設定）では、115200bpsに設定されています。通信速度の変更は、115200bpsで通信を行い、Bコマンドによって通信速度を設定します。なお、設定した通信速度は電源を切断するとリセットされて115200bpsになります。（設定内容は記憶できません。）■マイコンとの接続について
マイコンなどLVTTLレベル又はTTLレベルのデバイスと接続する場
合、MSC-MOD20のTX及びRXピンはマイコンに直結できます。
ロジックレベルは0V-3.3Vですが、すべてのI/OピンはTTLレベル(5V)のロジックもそのまま接続できるようになっています（5Vトレラント）。
よって、マイコンなど制御用マイコンがTTLレベルのデバイスであっても、そのまま直結できます。但し、9ピンのリセットピンは5Vトレラントではありません。+5Vを印加すると破損しますのでご注意ください。

MSC-MOD20の通信条件はデフォルト設定では下記の通りです。
・通信速度：
・データ長：

115200bps
8ビット長

・パリティ：

なし

・ストップビット： 1
・順序
LSBファースト
通信速度はシリアルコマンドで変更することができます。但し、設定した通信速度は電源を切断するとリセットされ、115200bpsに戻ります。通信速度を変更して使用する場合には必ず115200bpsで通信できる環境が必要となります。

上図はマイコンとの接続例です。

5

シリアル通信について■I2C通信の決まり～I2C通信～マスタ側のSCL線がHレベルの時にSDAをLレベルにすると、スター
トコンディションとなります。そのあと、続けてマスタがクロックの供給しつづけて最初の信号であるスレーブアドレスを送信します。なお、このMSC-MOD20は、同期式シリアル通信のI2C通信でも制御が可能です。

際、スレーブアドレスのデータにRead/Writeを示す1ビットを付加してI2Cモードにするには、MSC-MOD20のモードピンを設定して、電源を投入します。

マスターが通信します。Readは1、Writeは0になります。MSC-MOD20のアドレスフォーマットは7ビットモードです。

MSC-MOD20はスレーブデバイスとして動作します。スレーブアドレ
スは0xA4に固定されておりアドレス値は変更できません。また、1つのパスに複数のMSC-MOD20を接続することはできません。

SDA■MSC-MOD20をI2C通信モードに設定する
SCL

本体の電源を切断し、Mode1ピン（5ピン）をLレベル、Mode2ピン(8ピン)をHレベルと設定することでI2C通信モードになります。
設定は電源投入時にしか行えません。通電中のモード変更はできま

ｽﾀｰﾄｺﾝﾃﾞｨｼｮﾝ

ｽﾄｯﾌﾟｺﾝﾃﾞｨｼｮﾝ

せん。
通信モード
UART通信モード

Mode1ピン(5ピン)0Mode2ピン(8ピン)0

スレーブデバイスであるMSC-MOD20は、マスタと指定されたR/Wの方向で通信を継続します。SCLのクロックに従い、送信側から8ビッ

I2C通信モード

0

1

トのデータが出力されます。受信側ではこれに続いてACK信号を返信しブートローダモード

1

0

ます。
最後のデータを送信し終わり、ACKを確認したあとにスレーブデバイ
ス(MSC-MOD20)がSDAを解放するので、マスタ機器はSDA線をLレ■I2Cモード実行時のピンアサイン
I2Cモードにすると、ピン配置は下記のようにアサインされます。
ﾋﾟﾝ 端子記号
2 BUSY

ビジー

3

I2C通信クロックI2C SCL

内

ベルにしてクロックを停止し、SCLをHレベルにしてから、SDAをHレベルにすることでストップコンディションとなり通信は完了します。

容
A6

A5

A4

A3

A2

A1

A0

RW

ACK

スレーブアドレス(0xA4固定)
0:Write（ﾏｽﾀ送信） 1:Read（ﾏｽﾀ受信）

4 I2C SDA
I2C通信データ※その他のピンに変更はありません。

ACK、受信側から返信される※7ﾋﾞｯﾄｱﾄﾞﾚｽの例

使用するピンは、クロックであるI2C_SCL(3ピン)と、データ線であるI2C_SDA(4ピン)です。また、BUSYピン(2ピン)を使用します。

MSC-MOD20はトークンを用いた方法でデータの送受信を行いまI2C_SCLと、I2C_SDAは共に2.2KΩ程度の抵抗でプルアップする必要があります。

す。
MSC-MOD20からマスタ機器へ送るべきデータがない時、MSC-MOD
20は、0x00を常に送信します。よって、マスタ側はこの0x00を受信する時はMSC-MOD20側に送るべきデータがないことを把握できます。
この0x00のことをNo Data Token(NDT)といいます。この状態をロジ
ックアナライザで観察した波形が下図の通りです。なお、アドレスデータにReadモードの1を追加している関係でアドレス表示がA5になっていますが、実際は0xA4を指定しています。

ただ、この方法の場合、もし送信したいデータの内容に0x00が含まれている場合、この0x00がNDTの0x00なのか、バイナリデータに含ま
BUSYピンはMSC-MOD20の出力ピンで、I2Cマスター側から本ボードにデータを送信する間は、常に監視しておくことが推奨されます。これる0x00なのかを判断する必要があります。そのため、MSC-MOD20
では、バイナリデータとして、0x00のデータを送信したい場合には、0xのピンがHの時は、MSC-MOD20の内部入力バッファがいっぱいであることを示します。よってこの場合にはホストはデータを送信せずにBU

FFを送信し、続いて0x00を送信します。（2バイトになります。）この付加される0xFFをHalf Data Token(HDT)といいます。
さらに、もしバイナリデータが0xFFだった場合には、0xFFに続いて

SYピンがLレベルになるのを待つ必要があります。

もう1つ0xFFを送信します。（2バイトになります。）まとめると次のようになります。
6

ファイル内の実データ値

MSC-MOD20から送られるデータ

0x00
0xFF

0xFFに続いて0x00を送信
0xFFに続いて0xFFを送信

0x01～0xFE

データのままよってこのことから、NDTとHDTが付加されるため、ファイルから読み込まれてMSC-MOD20から送信されるデータは、実際のファイルサ
イズよりも大きくなることに注意してください。例えば、ファイル内のデータに0x00が含まれていればHDTの0xFFが付加され、0xFF,0x00の2バイトが送信されデータサイズが増えます。下記にそれ実例を示します。

①

例えば次のようなバイナリファイルをSDカードに収録しておきます。

②③④

30hの間に0xFFが1カ所存在し、更にアドレス06と07に0xFFのデータが2つ続いています。このファイルをI2C通信で読み出すと次のよう①の部分は実データでは0x00の部分です。先の説明通り0xFFに続きなデータがMSC-MOD20から送信されます。下図はデータの内容をロ

0x00が送信されています。また、実データが0xFFの所②では0xFFが2ジックアナライザで観察してデータを解析した例です。

回続いていて実データが0xFFであることが分かります。
③も0x00であることがわかり、④は0xFFが2回続いていますので実データは0xFFであることがわかります。
0x00や0xFFが多く含まれるデータの場合にはマスタ側のソフトウ

ここまではコマンドに対するACK

エアでデータの内容を解析してデータを取り出すことが必要です。下図はC言語で記述した参考例です。
char Read_I2C() {Soft_I2C_Start();
Soft_I2C_Write(0xA4+1);i2c_rec = Soft_I2C_Read(0);Soft_I2C_Stop();

ここまでがファイル
データの内容を示す
データ}

return i2c_rec;void read_loop(){char b, data;
do{b = Read_I2C();
if((b!=0)&&(b!=0xFF)){data = b;}

ファイルのデータ0xFFに対するHDTを伴う戻り値

if(b==0xFF){
b = Read_I2C();

上図の通り、0xFFの実データに対してはHDTの0xFFが付加されていることがわかります。0xFFが2回続く場合、実際のデータは0xFFだ

if((b!=0x00) && (b!=0xFF)){//ここは絶対に到達しない}else{
switch (b){case 0x00: data = 0; b=1, break;case 0xFF: data = 0xFF; break;}}とマスタ側の受信ソフトウエアで処理をするようにします。下記の例
は、0x00を含む例です。

}}while((b!=0));上のファイル例では、0x00と0xFFが交互に含まれています。このデ

上記は一例ですので必ずしもすべての環境で動作するわけではありータを含むファイルのデータをMSC-MOD20で読み込んだ時のI2Cデータの内容をロジアナで観察してみます。その内容が次の図の通りでませんが、参考例です。I2Cで読み込んだデータが0x00及び0xFFでない場合には、実データとしてそのまま扱います。（変数dataに値をそのます。

ま代入しています。）

7

⑤ いずれのコマンドも引数は200バイトを超えることはできませ受信したデータが0xFFの場合には次に続くデータが0x00か、0xFF
かをswitch文などで判定します。次に続くデータが0x00ならば、そのデん。これはコマンドのことであって、データの内容のサイズではありません。

ータは0、もし0xFFが続いているようであれば、0xFFということになります。また受信はデータが0x00以外の時はdo～while文でループします。なお実データが0x00で、0xFF,0x00を受信した時、そのままです

MSC-MOD20の基本的なファイル操作の仕組みと、do～while文の判定でループを抜けてしまいますので、変数bに別の値を入れておきます。

MSC-MOD20はファイル単位で操作しますが、ファイルは、新規に作成する時も、既存のファイルに追記する時も、そして既存ファイルからデコマンド体系等は、UARTとI2Cは共通です。

ータを読み込む時も、MSC-MOD20の内部にある"ファイルハンドル"(FHと記載されることがあります)と呼ぶ、バッファにファイルを開き、そMSC-MOD20のシリアルコマンドの基本のファイルハンドルに対して各種操作をします。

MSC-MOD20のシリアルコマンドは次のような決まりがあります。

ファイルハンドルは16個（0x00～0x0F）あり、操作をしたいファイル
をOコマンド（オーコマンド）でファイルハンドルに展開してから各種操① MSC-MOD20はマイコンなどからUART通信又はI2C通信でシ作を行います。

リアルコマンドを受け付けた後、必ずそれに対する応答を返します。
MSC-MOD20が正しくコマンドを受け付けた場合には、ACKが返り

Oコマンドは、microSDカードにファイルを新規作成する時も、既存のます。ACKは、"!00"という文字列です。（0x21,0x30,0x30,0x0A）最後の0x0Aは終端を表すラインフィードです。詳しくは③で説明しています。

ファイルに追記したり、ファイルからデータを読み込む時も使うコマンドです。指定したファイルハンドルにファイルを割り当てます。新規作成

一方、正しく処理ができない場合、エラーコードが返る場合には必ず"!xx"の形式で戻ります。xxの部分には2文字の数字が入り、エラーの内の時は、このファイルハンドルに空のファイルを作り、そこにデータを書き込んでいくというイメージです。

容を示します。

Oコマンドでファイルを割り当てたら以後、そのファイルへのアクセス
はファイル名ではなく、ファイルハンドルの番号で行うことになります。

このACK(!00)は、MSC-MOD20がコマンドを理解し正しくそれが実行されたことを示すものでエラーが無いことを通知するものです。またある処理が完了したことを通知する場合にも使われます。MSC-MOD
20を制御するUARTホスト機器又はI2Cマスタ機器は、何かのコマンド
をMSC-MOD20に送信した時はこの戻り値を確認するようにします。
このACKを確認した後、次の処理をするよう設計が必要です。ACKの確認なく次のコマンドを送信したり、別の処理を実行させると動作が正し
く行われなくなり問題発生の原因となります。

② ホスト機器からMSC-MOD20に送信するすべてのコマンドは、
ASCIIコードの文字列コマンドです。例えば、本体のファームウエアバー
ジョンを確認する"V"コマンドは、文字V(0x56)を送信します。

③ コマンドの最後は必ずラインフィード(LF=0x0A)で終端してください。先の"V"コマンドの場合には、文字VとLFの合計2バイト(0x56, 0
x0Aを送信して初めてコマンドとして受け付けられます。ラインフィード
上図は概念図です。ファイルハンドルはファイルを一時的に開く箱ので終端していない場合、コマンドとして実行されません。
終端はラインフィードだけでなく、キャリッジリターン(CR=0x0D)でような物と考えると分かりやすくなります。

も可能ですが、LFとCRの両方付けることは禁止されています。
例えば簡単な例をご紹介します。新規に"TEST.TXT"というファイル
名のファイルを作成し、そこに"ABCDE"という5バイトの文字列を書き込むことにします。

④ MSC-MOD20から返されるすべての戻り値はASCIIコードの文字列です。ACKの"!00"も文字列です。また戻り値はすべてラインフィード(LF=0x0A)で終端されています。このLFを戻り値文字列の終端と認

この場合には、Oコマンドでファイルハンドル0（ｾﾞﾛ）に"TEST.TXT"

識するよう設計する必要があります。
但し戻り値は1行だけと限りませんのでMSC-MOD20が送信データというファイルをWモードで割り当てます。ファイルハンドル0には、空の"TEST.TXT"というファイルが一時的に作られます。
以後は、ファイル名の"TEST.TXT"ではなく、ファイルハンドル0に対しを送り終わるまで受信を続けてください。

て各種操作をすることで、このファイルを自由に扱うことができるよう【注意！！】になります。

戻り値の終端はキャリッジリターン(0x0D)ではなく、ラインフィード(0x0A)なのでご注意ください。

8

FH0にはTEST.TXTというファイルが作られる

FATファイルシステムはホットプラグに対応していません。つまり原則としては電源がONの状態での抜き差しは想定されていない規格であるということです。クローズコマンドを実行せずに本体の電源を切断したりメモリーカードを外したりすると、ファイルハンドルの内容はすべて消えファイルもメモリーカード内に作られません。これはFATファイルシ
ステムの仕様ですので、予期せぬ電源断やメモリーカードの取り外しについて開発者は対策が必要な場合があります。
MSC-MOD20は先に説明の様に一度ファイルハンドルに開いたファ
イルの編集や読み込みについてはファイルハンドルを指定することで行いますが、その他の操作をする場合には、ファイル指定はフルディレクト
リ名で指定します。microSDカードは、Mドライブと決められています。例
えばmicroSDカード内のファイル"TEST.TXT"を指定する場合には次のようになります。

M:\TEST.TXT
なおMの後ろは：（コロン=0x3A）です。また、コロンの後ろにあるディレクトリの区切りはバックスラッシュ(0x5C)です。
WコマンドでFH0に5バイトを書き込みます・・・というMSC-MOD20の扱えるファイル形式と名前

コマンドを送信後、書き込むデータ"ABCDE"を送信するとFH0内のTEST.TXTに"ABCDE"のデータが作られる。

MSC-MOD20の扱えるファイル形式とファイル名、ディレクトリ名には下記のような決まりがあります。

上図は先の例の概念図です。これでファイルにデータを書き込むことができます。どんどん追記することもできます。
既存のデータからデータを読み込みたい場合でも同じ仕組みで行い■扱えるファイル形式
FAT16及びFAT32

ます。メモリーカードにあるファイルを指定して一度ファイルハンドルに開き、そこから読み出すという手順で操作します。

※SDフォーマット形式も含む※ファイルアロケーションサイズは問いません

ファイルハンドルに作られたファイルは一時的なファイルで、このままではメモリーカードには書き込まれません。ここで何もせずに電源を切■ファイル名とディレクトリ名についての制限
MSC-MOD20では、ファイル名及びディレクトリ名にASCIIコードの断したり、メモリーカードを本体から抜いてしまうと、ファイルハンドル

み扱えます。Unicodeなどの2バイト文字は扱えません。
次の記号は使用できます。

に作られたデータはすべて破棄されてしまいます。ファイルハンドル内のデータをmicroSDカードに書き込むには、最後にファイルハンドルを$ % ' - _ @ ! ( ) { } # &クローズする処理が必要です。
このクローズする処理をした時に、microSDカード上にファイルが作■ファイル名とディレクトリ名の長さについてられますので、ファイル操作を終了する場合には必ずクローズコマンド

MSC-MOD20では、ロングファイルネームに対応しています。

でファイルハンドルを閉じて終了します。
クローズコマンドでファイルハンドルを閉じてデータを書き込むと、本製品はマイクロソフト社のFAT32におけるLFNのライセンスを受けており、長いファイル名が使用できます。

そのファイルハンドルは空きになり、別のファイルを開くことができるよ
うになります。

FH0の内容がメモリーデバイスに書き込まれる

クローズコマンドを送信してFHを閉じる9

パソコン側はシリアルターミナルをご用意ください。当方ではフリー

MSC-MOD20の準備で使いやすいターミナルソフトをご用意しています。下記からタウンロードしてご使用ください。
http://www.microtechnica.tv/faq/faq.cgi?kate=Maeni&faq=4

MSC-MOD20を使用する際には、以下の手順でハードウエアの準備を行ってください。

3 MSC-MOD20にmicroSDカードを装着してください。

1 あらかじめ使用するmicroSDカードをパソコンでFAT16又はFAT32形式でフォーマットしておきます。

4 シリアル通信で、UARTホスト機器からラインフィード(0x0A)を1回送信してみてください。

2 MSC-MOD20本体のmicroSDカードスロットにメディアを挿入、装MSC-MOD20が正しく動作しているとACKの!00が返ります。

着します。

<LF>
!00

3 MSC-MOD20のシリアル通信モードの設定を正しく行った後、電源を投入します。電源投入直後、下記のような文字列が返ります。

ラインフィード（又はキャリッジリターン）を送信すると、MSC-MOD
20が動作しているかを確認できます。

GHI Electronics, LLC---------------------ALFAT SoC Processor

5 最初にmicroSDカードを初期化します。

!00

microSDカードに対するすべての操作は必ず初期化コマンドを実行※最初の"G"の前には、スペース(0x20)が1つ入っています。またそして、初期化が正しく完了した後から行えます。初期化コマンドは"I"(0x49)で、引数に初期化する対象ドライブを指定します。
ここではmicroSDカードなので、M:を指定しますので次のようなコマの前（先頭）にはラインフィード(0x0A)が挿入されています。また一番最後はラインフィードで終端されています。

ンドを送信します。

I<sp>M:<LF>!00

この電源投入時に返る文字列のことをバナーといいます。バナーは本体の電源を入れた時と、ハードウエアリセットをした時に必ず返

microSDカードが正しく初期化できると、ACKの!00が返ります。

ります。

必ず初期化を実行してACKが返ることを確認してから次の操作をするように設計してください。ここで初期化に失敗して!00以外のエ4 これでハードウエアの準備が完了しました。

ラーコードが返った場合、そのメディアは使えません。

とりあえず使ってみましょう※初期化には数秒から数十秒程度かかります。Iコマンドを送信したら必ず!00又はエラーコードが返るまで待ってください。

MSC-MOD20には、さまざまな機能が搭載されており、シリアルコマンドも豊富です。しかし、ここではとりあえず動作させて使ってみること

初期化に失敗する場合、多くはエラー、!11が返ります。

で、MSC-MOD20の最も基本的な使い方を知って頂くことにしましょう。詳しいシリアルコマンドについては次の項から記載がありますので、!11はカード初期化失敗のエラーです。
多くの場合はmicroSDカードが装着されていないことが原因です

そちらでお読みください。

が、その他にはmicroSDカードのフォーマットができていない場合があります。microSDカードが正しく装着されている場合には一度取り外して、パソコンに装着してFAT32でフォーマットしてください。

なお、本項ではMSC-MOD20から返るコマンドは、斜体で記載します。また、コマンド内の<LF>はラインフィード(0x0A)、<sp>は半角ス

また、フォーマットにはSDカードとして公式のフォーマット方法であペース(0x20)を示します。MSC-MOD20からの戻り値は、すべてラインフィード(LF)で終端されているとして、<LF>は記載しておりません。

るSDフォーマッターを利用してフォーマットすることをおすすめします。

■microSDカードに新規にファイルを作成する

https://www.sdcard.org/jp/downloads/formatter/

まず基本的な操作であるファイルの新規作成を体験しましょう。
microSDカードをご用意ください。

それでも失敗する場合にはmicroSDカードを変えてお試しください。
相性問題が発生している場合もあります。メモリー容量が小さいも

1 microSDカードをパソコンでフォーマットしてください。

ののほうが相性問題は発生しにくい傾向にあります。

※カードはFAT16又は32でフォーマットしてください。

6 初期化が正しく完了したらファイルを新規に作成しましょう。

2 MSC-MOD20の配線を行いましょう。今回はパソコンのRS232C
ポートと接続して実験することにします。シリアルインターフェイス

ファイルハンドル1にファイルを作ります。ファイル名は"123.TXT"としてみましょう。FHに対してファイルを割り当てる場合にはOコマン

はUART（フロー制御は使用しません）を用います。

ドを使います。パスはフルパスを指定します。

VccピンとVbatピンに正しく電源電圧が印加されているか確認しま
しょう。その他配線が正しく行われていることを確認しましょう。

O<sp>1W>M:\123.TXT<LF>!00

パソコンと接続する場合には、MAX232等のレベル変換ICを介してパソコンのRS232Cポートと接続する必要があります。またモード
ピンはUARTモードに設定しておく必要があります。

ドライブ名の後ろにはコロン(0x3A)とバックスラッシュ(0x5C)がUART通信のデフォルト通信速度は115.2kbpsです。

含まれることを注意してください。その後ろは>(0x3E)です。

10

引数の1はFHの値、Wはファイルの新規作成モードを指定する文字

10 ではこのUSBメモリーをパソコンに装着して、正しくファイルが作成です。（読み込みはR、既存ファイルへの上書きはAです）

できているか確認しましょう。

7 続いてFH1に何バイトのデータを書き込むか、書き込むデータサイズをWコマンドで指定します。指定するバイト数は16進数の値で指定します。例えば11バイトの場合には、"B"を指定します。

W<sp>1>B<LF>!00
このWコマンドを送信後、ACKの!00がMSC-MOD20から返ってきたところから、書き込むデータの受付が始まります。!00が返るまではデータを送信しても書き込まれませんので!00を必ず待つようにファイルが作られていることが確認できます。メモ帳で開いてみまし

します。

ょう。

サイズは11バイトを指定しました。コマンドの時はラインフィードで終端しましたが、書き込みデータの場合には終端は必要ありません。ファイルに書き込むデータだけを送信してください。
MSC-MOD20は11バイトのデータが到来するまでずっと待機を続けます。途中で待機を抜ける方法はありません。
※指定したデータサイズよりも、書き込むデータサイズが小さい場合には不足分をラインフィードやキャリッジリターンのデータを埋め合わせて書き込み待機を終了させる方法もあります。

正しく"HELLO WORLD"という文字列が書き込まれていることが確認できます。

8 ここでは11バイト、すなわち11文字の文字列"HELLO WORLD"ファイルに書き込んでみましょう。

このようにMSC-MOD20ではシリアルコマンドで簡単にファイルを作成することができます。もちろんテキストファイルだけでなく、形式を問わず作成できます。

HELLO WORLD$0000000B!00

ここでは簡単なファイル作成例を紹介しましたが、様々なシリアルコ
マンドを使うことで、さらに複雑な操作ができます。

書き込むデータが指定したデータサイズに達すると自動的にMSC-MOD20はWコマンドの処理を終了し、書き込み完了を通知するサ

続いてファイルからデータを読み出す方法も紹介します。

イズ情報とACKを返します。
■テキストファイルからデータを読み込む"$0000000B"は、11バイトを受信しました、という通知です。
その次の!00は書き込み完了のACKです。

基本的な操作である、microSDカード内のテキストファイルからデー
タを読み出す操作を体験しましょう。先の書き込む例と同じようにmicr

このACKで書き込み完了を確認してください。

oSDカードを使います。

9 ここまでの作業でデータはメディアのメモリー領域に書き込まれま

1 データを読み出すためにあらかじめ、microSDカード内にファイルをした。しかしFATファイルシステムでは、データを書き込んだだけで保存しておきます。

はそのデータを使うことはできません。
データの存在する位置を管理領域というテーブルに書き込んで初"TEST.TXT"という名前のファイルに次のような文字列を記述してmicroSDカードのルートディレクトリに保存しておきます。

めて「使えるデータ」となります。
MSC-MOD20では、この作業を行うためにクローズコマンドの"C"コマンドを使います。Cコマンドを使用すると、指定したファイル
ハンドルが閉じられ、データが参照できるようになります。
コマンドを次のように送ります。

C<sp>1<LF>!00
ファイルハンドル1を閉じるというコマンドです。
ACKの!00が返った時点で、microSDカードには"123.TXT"というファイルが作成されます。

ファイルに文字列を書き込んでおく
2 先のファイル作成の例と同じで、まずmicroSDカードをMSC-MOD2※このCコマンドを送信しないで、microSDカードを抜いてしまった
り、電源を切断してしまったりすると、データはすべて消えてしまい

0に装着し、"I"コマンドで初期化を行います。

I<sp>M:<LF>!00

ますので十分ご注意ください。

11

3 今回は、データを読み込むモード(Rモード)で、ファイルハンドルにフ返ってきた文字列は下記のようになりました。

ァイルを展開しますので、次のようにコマンドを送信します。

!00
s is a test file.ZZZ$00000011!00

O<sp>1R>M:\TEST.TXT<LF>!00
ACKが返ったことを確認します。

Rコマンドでは、ポインタの位置をリセットしたり、任意の位置にセットしない場合、前回の続きの位置からデータを読み出します。（ポ4 読み出しはRコマンドで行います。
読み出すデータのサイズを指定します。指定は16進の値で行いまインタの位置指定はPコマンドで行えます。）

す。ここでは試しに16バイト(0x10)を指定してみましょう。

ここでは20バイトを指定しました。実際にはファイルにデータが残り17バイトしかありませんでしたので、超過した分の3バイトの部分に、超過文字"Z"が付加されました。

R<sp>1Z>10<LF>
FH指定の数字1の後ろにある"Z"（ゼット）は、超過文字でファイルハ
ンドル内にあるファイルのデータサイズが、指定したデータサイズよりも小さい場合、超過分のデータをこの文字で埋めるというものです。データサイズ内であれば、特に気にする必要はありません。
5 上記のコマンドを送信すると、下記のようにデータが返ります。

!00
HELLO WORLD
Thi$00000010!00
最初の!00はACKで、その後から実際のデータが返ります。データの最後には$(0x24)が付き、読み取ったデータサイズ、その次に再度読み取り完了のACK、!00が返ります。
よってホスト機器側では、最初のACK、!00の後ろにあるラインフィード(0x0A)から、$(0x24)までの区間にあるデータがファイルから読み取ったデータであると判別するようにします。
ところで、ここでは読み取るデータサイズの指定を16バイトとしました。しかし文字数を数えると14バイトしか返ってきていないように見受けられます。
これは間違えではありません。
なぜならば、文字列"HELLO WORLD"と"This is a test file"の文字列の間には改行が入っているからです。
Windowsシステムでは、改行はキャリッジリターン(0x0D)と、ライン
フィード(0x0A)の2バイトから構成されます。よって、Windowsでテキ
ストデータを作った場合、改行の部分は2バイトのデータとして扱われます。
先ほどのTEST.TXTをバイナリエディタで見てみましょう。

改行部分に0x0Dと0x0Aが含まれていることが分かります。この2バイト分が、読み込みデータの指定サイズに含まれているわけです。
キャリッジリターンやラインフィードはテキストデータとして扱っていると意識しないことが多いので注意してください。
6 さて、続いて残りの部分も読み込んでみましょう。
今度はテストとして再度20バイトを指定してみましょう。

R<sp>1Z>14<LF>
12

シリアルコマンド■コマンドについての一般的な規則
MSC-MOD20を制御するためにはシリアルコマンドのやりとりをする必要がありますが、次の項目を必ず守るようにシステムを設計してください。
・いずれのコマンドでも引数のサイズが200バイトを超えないようにしてください。
・各コマンドは必ずラインフィード(0x0A)で終端してください。

※キャリッジリターン(0x0D)でも代用可能です。

・MSC-MOD20から戻る、戻り値を必ず確認するようにシステムを設計してください。
各コマンド送信後に戻り値をチェックできる仕組みを作り、その内容は必ず解析される必要があります。特にACKである"!00"なのか、それ以外のエラーコードなのかは最低限確認するようにします。
また次のコマンドを送信する際やデータを送る場合には、必ずACK確認後に行うように設計をしてください。
・扱うすべての番号はASCIIで表記された（文字）16進数の値です。例えば、10進数で数値10と指定したい場合には、文字"A"(0x41)を送信します。
誤って、10進数表現のまま"10"という文字列を送信してしまうと、MSC-MOD20は、16進数の"イチゼロ"として解釈し10進数の16として処理します。
例： W 1>C→FH1に12バイト(0x0Cバイト)のデータを書き込む

・以降のMSC-MOD20の制御コマンドを解説では、下記のような決まりで記述しています。

{LF} はラインフィード(0x0A)を表します。 ※戻り値は終端のLFは省略しています。
△印 はシングルスペース(0x20)を表します。
- 下記表記の中で斜体文字は、MSC-MOD20からの戻り値を表します。
-■コマンド一覧表
コマンド

詳細

コマンド

詳細

V
Z

ファームウエアバージョンの取得
省電力設定

I
O

メモリメディアの初期化
空きのファイルハンドルにファイルを開く（割り当てる）

T
S

RTCの初期化
現在時刻、日にちの設定

W
R

ファイルにデータを書き込む
ファイルからデータを読み込む

G

現在時刻、日にちの取得

F

ファイルハンドルのデータをフラッシュする

B#

UART通信速度の変更
エコーの設定C
P

ファイルハンドルを閉じる
ファイル内のポインタ位置を移動

A

ファイルの名前変更

Y

ファイル内のポインタ位置を取得

EK

メモリメディアのテスト
メモリメディアの空き容量取得

D?

ファイル又はディレクトリの削除
ファイル又はフォルダーの存在の検索@N

ディレクトリリストの初期化
次のディレクトリエントリを取得

M
Q

ファイルの内容を別のファイルにコピー
クイックフォーマットの実行■各コマンド一の詳細【コマンド】

V{LF}

【動作】

ファームウエアバージョンを取得する【戻り値】

v2.0.0!00【コマンド】#△ n{LF}【動作】

エコーバック（受信したシリアルデータを、そのまま送り返す）の有効/無効を設定する

【引数】

n

【解説】

エコーバックとは、MSC-MOD20が受信したシリアルデータをそのまま送信元へ返す処理です。

0の時はエコーバック無効、

1の時はエコーバック有効

デフォルト設定では無効になっています。

13

【コマンド】Z △n{LF}【動作】

省電力モードの設定を行う、省電力モードに移行する

【引数】

n

省電力モードの番号を指定
0・・・スタンバイモード
1・・・ストップモード

CPU消費電流平均約75uA、本体消費電流約100uA
CPU消費電流平均約350uA、本体消費電流約1.5mA

【戻り値】

なし

【解説】

2つの省電力モードがあります。本コマンドを実行するとすぐにモードが変更されます。
■スタンバイモード
システムを完全に停止させる省電力モードです。消費電流は40uA～100uA程度まで減少します。 (SDカードの消費電流を除く)
スタンバイモードに移行するとすべての設定はリセットされ、作業中の内容は破棄されます。ファイルハンドルも破棄され、ファイルハンド
ルのクローズ処理がされていないデータはすべて破棄されます。
復帰するには、リセットピンにより本体をリセットするか、WAKEピンに立ち上がりエッジパルスを入力します。
■ストップモード
現在の作業状態を維持したまま低消費電力状態になるモードです。消費電流は1.5mA程度になります。(SDカードの消費電流を除く)
ストップモードから復帰すると、ストップモード移行直前の状態に戻ります。
復帰するには、WAKEピンに立ち上がりエッジパルスを入力します。
マイコンなどとこのWAKEピンを接続してコントロールする場合には、通常時はこのピンをLレベルにしておいて、省電力モードからの復帰時にこのピンに10ミリ秒以上のHパルスを印加します。システムは、パルスの立ち上がりエッジを検出して復帰します。

【補足】

スタンバイモードから、WAKEピンへの立ち上がりエッジ信号印加により復帰した場合には、電源投入時及びハードウエアリセット時と同
じ次のバナーが返ります。

GHI Electronics, LLC---------------------ALFAT SoC Processor!00
ストップモードからWAKEピンへの立ち上がりエッジ信号印加により復帰した場合には、ACKの"!00"が返ります。
使用するSDカードの仕様や状態により消費電流は変動します。上記値は目安です。

【コマンド】

T △mode {LF}

【動作】

リアルタイムクロックのクロック源選択と、初期化を行う

【引数】

mode

RTCに使うクロック源の選択
S・・・シェアードモード：
RTC用クロックをCPUのクロックと共有する（バックアップ不可）
B・・・バックアップモード： 基板上Q1に取り付けた32.768kHzの水晶発振子をクロック源として使用する（バックアップ可）

【戻り値】

!00

【解説】

ファイルを作成する際などにタイムスタンプとして使用するRTCの初期化と、クロック源の指定を行います。
クロック源は2つあり、1つはCPUを動かしているクロックを使用する方法でシェアードモードといいます。このモードの場合外部に水晶発振子を取り付ける必要はありませんが、日時データのバックアップはできません。(VBATピンに電源を印加し続けても日時データは保持されません。)
もう1つのモードは、基板上のQ1に32.768kHzの水晶発振子を取り付けて、これをRTC用のクロック源として使う方法です。このモードの場合にはVBATピンに1.65V～3.6Vの電源を、本体の電源切断後も供給し続ければ日時データは保持されます。
RTC機能を使用するためには、最初にTコマンドで初期化及びクロック源を設定後、現在日時設定コマンド(Sコマンド)で日時を設定します。Sコマンドで現在日時を受信した段階から、時計計測が開始されます。
14

【補足】

RTCの日時データは設定しないと、意味を持たない値となります。
RTCを使わなくてもファイル、ディレクトリの作成やデータの読み取りそのものには不具合は生じません。
本機のRTCは2秒毎の精度です。（奇数秒は設定及び取得、タイムスタンプとしての書き込みはでません。）【コマンド】

S △ ddddtttt{LF}【動作】

現在日時をDWORD形式で設定する【引数】

ddddtttt【解説】

内蔵のRTCに日時を設定します。

（本コマンド実行前にTコマンドの実行が必要です）

ddddは、年月日を16ビット長で、ttttは時分秒を16ビット長でそれぞれ表します。

引数のddddttttは、DWORD型（32ビット）で現在日と現在時間を設定します。ビットの割り当ては下記の通りになっています。
下表の例では、2014年4月1日

18時30分00秒
詳と設定する場合についての値が書かれています。

ビット

内容

31～25
24～21

年
月

現在の年から1980を引いた差
1月～12月細2014-1980=34 →2進数で 0100010
4月 →2進数で 0100 （4ビット長）

例

20～16

日

1日～31日1日→2進数で 00001

15～11
10～5

時
分

0時～23時0分～59分18時
30分→2進数で 10010 （5ビット長）→2進数で 011110 （6ビット長）

4～0

秒

秒を2で割った数

00秒→2進数で 00000

0～30（7ビット長）（5ビット長）（5ビット長）例で2進数に換算した値を並べると、32ビットになるので、"01000100100000011001001111000000"となります。
これを16進数に換算すると、"448193C0"となりますので、"S 448193C0"として送信し現在日時を設定します。
このSコマンドで設定した日時を、MSC-MOD20が受信した時点から、設定日時からの時計計測が開始されます。
"S"コマンド送信の前に必ずTコマンドを送信してRTC機能を初期化させておきます。
※FATでは32ビットの時間管理が標準となっていますので、MSC-MOD20もこの方法に従っています。

【コマンド】

G △ mode{LF}【動作】

RTCから現在の時間又は日にちを取得する

【引数】

mode

時間か日にちを指定します
D・・・現在の日にち
T・・・現在の時間【戻り値】

日にちを指定した場合

時間を指定した場合
HH:MM:SS!00

MM-DD-YYYY!00【コマンド】

B △ssssssss{LF}【動作】

UARTの通信速度を設定【引数】

ssssssss【解説】

UART通信の通信速度を変更します。デフォルト設定は115.2kbpsです。引数で指定する通信速度は16進で表現した文字列です。
例えば9600bpsに設定したい場合には、"B 2580" になります。 (9600=0x2580)（電源投入時、リセット後のデフォルト値は115.2kbps）

設定したい通信速度をbps単位の16進表現の文字列で指定※1200の倍数が望ましい

Bコマンドを送信すると2つの!00(ACK)が返ります。また最初の!00と2回目の!00の間には125us程度のLパルスが1つ入ります。

15

2つの!00のうち・最初の!00は元の通信速度で返ります。
・2つめの!00は変更後の通信速度で返ります。
なお上記の1回目の!00と2回目の!00の間には125us程度のLパルスが出力されます。
このLパルスは無視してかまいませんが、UARTホスト側で通信速度を切り替える場合には1つの合図として使うこともできます。
【補足】

本設定は、電源を切断又はハードウエアリセットをすると初期値の115200bpsに戻ります。通信速度設定を記憶することはできません。
通信速度として正しくない引数を指定すると通信ができなくなります。
通信速度は実用的な値として4800bps～460.8kbps程度の間でよく利用される値にすることをおすすめします。
設定値例
4800bps→

12C0

9600bps
57.6kbps

→
→

2580
E100

115.2kbps
460.8kbps

→
→

1C200
70800

【コマンド】I △ M:{LF}【動作】

装着されたmicroSDカードの初期化を実行する【解説】装着されたmicroSDカードのファイルシステムとデバイスを初期化して、使用できるようにします。microSDカードのアクセスをはじめる前に必ず"I M:"コマンドで初期化をします。microSDカードを入れ替えた場合にも行う必要があります。
※"M:"はSDカードドライブを示すIコマンドに対する引数です。MSC-MOD20ではmicroSDカードしか使えませんので必ず"I M:"が初期化
コマンドになります。

【使用例】

【戻り値】

I<sp>M:<LF>

microSDカードを初期化します!00

初期化正常完了で戻ります!00

初期化が正しく完了すると、ACKが返ります。
各種コマンドを続いて送信する際には、必ず!00が返ったことを確認してからコマンドを送信してください。
microSDカードによってはACKが返るまでに数秒から数十秒程度時間がかかる場合があります。その場合でも必ずACK又はエラーコードの戻り値を待ってください。
初期化でACKが返らなかった場合、そのmicroSDカードは使用できません。!00以外の数値が返る場合には、何らかのエラーが発生しています。エラーが発生した場合には、本書の"エラーコードについて"の項をご覧下さい。

!11

microSDカードが正しく装着されていない場合に戻ります。

【ｵﾌﾟｼｮﾝ】 次のような場合、引数にオプションを付ける場合があります。
■SDカードのクロック周波数を指定した初期化する場合
SDカードは通常12MHzのクロック周波数で動作します。この12MHzはデフォルトで、多くのSDカードに対応できるクロック周波数です。
いくつかのSDカードでは、24MHzでも動作するものもあり設定値によって周波数を指定できます。

I<sp>M:>d<LF>

dの値設定されるクロック周波数

0
1

24MHz
16MHz

2

12MHz（デフォルト設定）

3
4

9.6MHz8MHz

デフォルト設定値はオプションdなしで設定されます。

なお、このオプションの使用は推奨されません。24MHzで動作するのは20%程度のデバイスです。テスト目的でお使いください。
またこのスピードと、SDカードに付けられているクラス表示とは関係ありません。

16

【補

足】

Iコマンド送信後、エラーメッセージが返り初期化が正しく完了できない場合には、Iコマンドを再度送信して、!00が返るまで送信を繰り返してみてください。送信は最大10回程度まで繰り返しそれでも初期化できない場合にはそのmicroSDカードは本機では利用できません。
別のカードをご用意ください。
!11でカード初期化失敗が発生する場合には次のような原因が考えられます。
・microSDカードが正しく装着されていない・microSDカードが正しくFAT16/32でフォーマットされていない・microSDカードのファイル構造が破損している
・microSDカードのスピード規格、メモリーサイズが仕様範囲外である
・相性問題が発生している
よくある原因の1つにmicroSDカードのフォーマットができていない場合があります。microSDカードが正しく装着されている場合には一度取り外して、パソコンに装着してFAT32でフォーマットしてください。Windowsのフォーマット機能でもフォーマットできますが、SDカー
ドの場合には、公式のフォーマット方法であるSDフォーマッターを利用してフォーマットすることをおすすめします。

https://www.sdcard.org/jp/downloads/formatter/
それでも失敗する場合にはmicroSDカードを変えてお試しください。相性問題が発生している場合もあります。メモリー容量が小さいもののほうが相性問題は発生しにくい傾向にあります。

【コマンド】K △ M:{LF}【動作】

microSDカードの空き容量を取得する【解説】

MSC-MOD20に挿入されているmicroSDカードの空き容量を8バイト長の16進数値で取得します。
単位はバイトです。必ず戻り値が戻ってから次のコマンドを送信してください。
※サイズの大きなメディアの場合、取得までに時間がかかる場合があります。
※本コマンドはIコマンドによる初期化後から使用できます。

【戻り値】

下記の書式で結果が戻ります。

!00$ssssssssssssssss
!00
【使用例】

最初のACKは空き容量計算を開始したことを通知するACKですs は空き容量の値、単位はバイトです
最後のACKは空き容量取得後であることを通知するACKです

K<sp>M:<LF>!00$000000003D06D000!00

microSDカードの空き容量は1,023,856,640バイトです17【コマンド】@△full_path{LF}【動作】

指定したディレクトリのフォルダー及びファイルリストを初期化【引数】

full_path【解説】

指定したディレクトリにあるファイルとフォルダのリストを初期化します。ディレクトリの内容を閲覧する場合には"N"コマンドを使用しま初期化したいディレクトリをフルパスで指定します。(microSDカードのルートディレクトリは M: です。)

すが、Nコマンドを実行する前に、このコマンドを実行してリストを初期化する必要があります。
なお、Nコマンドを使う場合には、このコマンド実行後Nコマンドを実行するまでの間、別のコマンドは実行しないでください。
引数の指定は、リストを初期化したいディレクトリをフルパスで指定する必要があります。
microSDカードのルートディレクトリは M: です。ディレクトリの区切りは\(バックスラッシュ=0x5C)です。
【戻り値】

!00

【使用例】

@<sp>M:<LF>

microSDカードのルートのリストを初期化する場合!00@<sp>M:\LOG<LF>

microSDカード内にある"LOG"フォルダ内のリストを初期化する場合

!00
【補足】

ディレクトリの内容を閲覧するNコマンドでは、どのディレクトリの一覧を閲覧するか、という指定は行いません。@コマンドによって初期化したディレクトリがNコマンドのディレクトリ指定と同じ意味を持ちます。

【コマンド】

N{LF}

【動作】

@コマンドで初期化したディレクトリの一覧を取得【解説】@コマンドで初期化したディレクトリにあるフォルダ名及びファイル名の一覧を取得するコマンドです。ファイル名には3文字の拡張子も含まれます。
フォルダ名又はファイル名を1つずつ表示します。表示は1つずつですので、複数のファイルやフォルダがある場合には、Nコマンドを複数回実行してます。すべてのフォルダ、ファイルを取得してこれ以上取得すべき内容がない場合"!04"を返します。
"!04"が返るまでNコマンドを実行することで、指定ディレクトリのすべてのフォルダ名、ファイル名を取得できます。
Nコマンドではフォルダ名、ファイル名の他に属性とサイズも返します。サイズは4バイト長の16進数表現です。
属性は下記の表の通りです。

【戻り値】

!00
NNNNN.EEE$AA$ssssssss!00

最初にACKが返ります
NNNNNはファイル又はフォルダ名、EEEは拡張子
属性データ（下表参照）
4バイト長のファイルサイズ

16進数表記で単位はバイト フォルダの場合には$00000000となります。

最後にACKがつきます$AAは1バイトサイズで属性データです、属性一覧に示す属性が返ります。該当するビットが1になります
ビット
属性

5
アーカイブ

4
フォルダ

3
ボリュームID

2
システム

1
0
隠しファイル 読み取り専用

属性一覧
例えば、フォルダの場合には、"010000"となりますので、戻り値のは$10となります。
どのビットが1になっているかを判定すると、そのファイルの属性を知ることができます。

18

@コマンドで指定したディレクトリが、ルートディレクトリよりも下の階層にある場合には下記のようになります。

!00
.
$10
$00000000!00

ピリオド(0x2E)が1つ返ります
属性は$10(10000)となり、フォルダを示します
サイズは0になります

再度Nコマンドを送信すると下記のような文字列が返ります。

!00
..
$10
$00000000!00

ピリオド(0x2E)が2つ返ります
属性は$10(10000)となり、フォルダを示します
サイズは0になります

再度Nコマンドを送信すると、そのディレクトリにあるファイル名やフォルダ名が返ります。
※ディレクトリの階層の深さに関わらずルートディレクトリよりも下にある場合には、常にこの内容になります。

19

【コマンド】O △ nM>full_path{LF}【動作】指定したファイルハンドルに、モードを指定してファイルをオープンする

【引数】

n

0～Fのファイルハンドル値を指定します、ここで指定したファイルハンドルにファイルが展開されます。
ファイルハンドルは0,1,2,3・・・E,Fの合計16個指定できます。

M"R" "W""A" のいずれか1つのオープンモードを指定します・・・"R" 読み込みモード
ファイルを読み込み専用モードで開きます。microSDカード内にある既存のファイルを開きます。
開いたファイルからデータを読むことはできますが、データを書き込むことはできません。
・・・"W" 新規書き込みモード（ファイル新規作成）
ファイルを新規に作成し、そのファイルに新たに書き込むモードです。
既存のファイルに書き込むのではなく新しくファイルを作成するモードです。
・・・"A" 追加書き込みモード
microSDカード内にある既存のファイルへデータを追記するための上書きモードで開きます。
指定したファイルがない場合には、新規書き込みモードになります。（Wモードと同じになります。）

full_path 開くファイルをフルパスで指定します。microSDカードのルートは、M:です。ディレクトリの区切りは\(バックスラッシュ=0x5C)です。フルパスで指定する時、既存のディレクトリ以外を含めるとそのファイルが作成されるディレクトリまで下層のディレクト
リが自動的に作られます。
【解説】

MSC-MOD20ではファイルを扱う際には必ずファイルをファイルハンドルと呼ばれる専用のメモリ空間に開く必要があります。（本書9ページ参照）

Oコマンドは指定したファイルをファイルハンドルに開きます。ファイルハンドルはMSC-MOD20内に0～Fまで16個あり、任意のファイル
ハンドルにファイルを開くことができます。一度ファイルハンドルにファイルを開いたら、次のファイル操作からはファイル名ではなくファイ
ルハンドルを指定します。下記の例は、ファイルハンドル1にファイルを割り当てます。microSDカードのルートディレクトリに"Folder"ディレ
クトリを作り、その中に"123.txt"というファイルを新規に作成しする場合です。

O<sp>1W>M:\Folder\123.txt<LF>!00
microSDカードは、MSC-MOD20ではM:ドライブと決められています。各ディレクトリの区切りは\(バックスラッシュ=0x5C)です。
もしmicroSDカード内に"Folder"というフォルダがはじめから存在している場合には、そのフォルダー内に123.txtを作ります。
もし"Folder"というフォルダが存在しない場合には、"Folder"フォルダーも作られ、その中に123.txtを作ります。

20

ファイルをファイルハンドルに開く際には、そのファイルをどんな目的で開くのかを指定します。これをオープンモードと呼びます。オープ
ンモードには下記の3つがあります。
・読み込みモード(Rモード)

・新規ファイル作成書き込みモード(Wモード)

・既存のファイルへの上書きモード(Aモード)

Rモードで開いたファイルには、データの追記はできません。
新規ファイル作成書き込みモード及び既存ファイルへの上書きモードで開いたファイルからはデータを読み取ることはできません。
モードを変更するには、一度ファイルハンドルを閉じてから（Cコマンド）改めてモードを設定してファイルを開き直します。
Aモードは既存のファイルにデータを上書きするモードですので、既存のファイルを指定するのが基本ですか、指定したファイルが存在しない場合には新規作成としてWモードとして開き、ファイルが新規に作られますのでご注意ください。（指定したファイルが存在しないことを通知するエラーにはなりません。）
Oコマンドを実行したら必ずACKの!00が返るのを待ってください。ACKが返った後、次のコマンドを送信してください。
【使用例】

microSDカードのルートディレクトリにある TEST.TXT を読み込み専用モードでファイルハンドル0に開く場合

O<sp>0R>M:\TEST.txt<LF>
!00
【補足】

MSC-MOD20では、ファイル名及びフォルダ名の大文字、小文字は区別されません。
例えば、"FOLDER"と"folder"は同じファイル名又はフォルダ名として認識されます。
内蔵のRTCを有効にしている場合には、Wモード及びAモードで作成、編集したファイルにはタイムスタンプが記録されます。
Oコマンドでファイルハンドルにファイルを開いた直後は、Wモード並びにRモードの時は、カレントカーソル位置は必ず0番地となります。
すなわちファイルの先頭位置にカーソルが置かれます。カレントカーソル位置を移動したい場合には、Oコマンドでファイルハンドルにファイルを開いた後、Pコマンドを使用してカーソル位置を移動させることができます。
※Pコマンドでカーソルを移動できるのは、Rモードで開いた場合のみです。

【コマンド】

C △ n{LF}【動作】

指定したファイルハンドルをクローズして、ファイルハンドルに開かれているファイルの内容をmicroSDカードに書き込む

【引数】

fh

【解説】

ファイルハンドルを閉じます。Rモードで開いている場合にはそのままファイルハンドルを閉じます。

0～F

クローズしたいファイルハンドルを指定します

Wモード及びAモードで開いている場合には、データをmicroSDカード上に書き込みファイルの実体を作成し、ファイルハンドルを閉じます。ファイルは、Cコマンドでファイルハンドを閉じたときに初めてその実体がファイルとして保存されます。よって、Cコマンドでファイルハ
ンドルを閉じる前にmicroSDカードを本体から外したり、電源を切断したり、リセットをしてしまうと、ファイルハンドルに展開されているファイルはすべて破棄されてしまいます。
【戻り値】

!00

ファイルハンドルが正常に閉じると ACKの!00が返ります。ACKが返る前に電源の切断やmicroSDカードの取り外しを行うと、ファイルは作成されません。

【補足】

ファイルハンドルをクローズせずにWコマンドで書き込んだデータをmicroSDカードに書き込むコマンドとしてFコマンドがあります。
Cコマンドはファイルハンドルを閉じてデータを書き込むのに対して、Fコマンドはファイルハンドルを閉じずにデータを書き込みますので、Fコマンド実行後は再び、OコマンドによってFHを開きなおさなくても、Wコマンドから始められます。

21

【コマンド】R △ nF>ssssssss{LF}【動作】

指定したファイルハンドルのファイルの内容を指定したバイト数読み込む

【引数】

fh

0～F

F

超過文字を指定します。超過文字とは、読み取りを指定したバイト数よりも実際のデータのサイズが小さい時に、その差分

読みたいファイルのあるファイルハンドルを指定しますを表す文字のことです。Fで指定した半角英数字1文字で表します

ssssssss

データを読み込むサイズを16進数のバイト単位で指定します"FFFFFFFF"まで指定できます。すなわち4294967295バイトまで1回のコマンドでデータを読み込めます【戻り値】

戻り値は、読み取ったデータの内容と、ACK及び読み取りができたデータサイズです。
書式は下記のようになります。

!00
d・・・d$aaaaaaaa!00

ACKが戻ります。

d は読み込んだデータ、s は読み込んだデータのサイズの16進値です。
最後にACKが返ります。

読み込んだデータの最後には必ず$マーク(0x24)が挿入されますので、データの最後を検出するのに使用できます。
なお、読み取り指定したサイズが、ファイルハンドルにあるデータのサイズより大きい場合には、最終データまで読み取った後、引数Fで指定した超過文字が超過分付加されます。
【解説】

Rコマンドは指定したファイルハンドルにRモードで開かれているファイルから指定したサイズ分データを読み取るコマンドです。
Rコマンドを使用する前に、必ず"O"コマンドにて、ファイルハンドルにファイルを読み込みモード(Rモード)で開いておく必要があります。
※Rモード以外のモード(WモードやAモード)で開いたファイルからはデータの読み込みはできません。
引数のFは超過文字を指定します。例えば5バイトしかないファイルに対して、7バイトの読み取りを指定した場合2バイト分が超過しています。そこでMSC-MOD20は、超過している2バイト分をFで指定した文字で返します。
Rコマンドで一度ファイルを読み込むと、カレントカーソル位置（処理を開始する位置のこと）が1回前に読み込みが終わった位置の次の番地に移動しています。例えば、ファイルハンドル1に文字列"microtechnica"が書かれた13バイトのテキストファイルがあるとして、次の例をご覧ください。
R 1Z>5!00
micro$00000005!00

ACKが返ります。
データ5バイトと、読み取ったデータサイズが16進数表記で戻ります。
最後にACKが戻ります。

Rコマンド初回の実行ですのでカレントカーソルは先頭にあり、そこから5バイト分読み取りますので"micro"の5文字(5バイト)が返ります。（下記例では便宜上テキストファイルで文字列としてデータを表しています。）

→

カーソル

カーソル位置は6バイト目に来る

続いて再度同じファイルハンドル1のファイルから3バイトのデータを読み取ります。
R 1Z>3!00
tec$00000003!00
すでにカレントカーソルは前回のRコマンドの実行によって6バイト目に来ていたため、次にRコマンドを実行すると、前回読み取りを終了
した次の位置からデータが読み取られます。

22→

カーソル位置は9バイト目に来る
続いて同じファイルハンドル1のファイルから10バイトのデータを読み取ります。
R 1Z>A!00
hnicaZZZZZ$00000005!00

9バイト目から残り5バイトのデータが返り、指定超過分の5バイトを示す超過文字Zが5つ返ります

データを読み終わってもカーソルは先頭には戻らず最終位置で止まります。
先頭に戻したい時はPコマンドを使用して先頭にカーソル位置を戻します。また任意の位置にカーソルを移動させたい場合にもPコマン
ドを使います。
※改行を含むデータを読み出す場合読み出すファイル内に改行コードが入っている場合でもデータはそのまま改行コードをデータとして読み出します。
Windowsで作られてたテキストファイルの場合には、改行はCRとLFの2バイトです。
【使用例】※ファイルハンドル1のファイルに "12345678901234567890"というデータがある場合・・・①ファイルハンドル1にあるファイルから、先頭番地から10バイト分のデータを読む
R 1Z>A!00
1234567890$0000000A!00②先頭番地から25バイト分データを読み込む
R 1Z>19!00

12345678901234567890ZZZZZ$00000014
!00
【補足】

Zは超過文字として超過したデータ分を表示しています

Rコマンドで読み込まれるデータは、すべてファイル内のデータをそのまま読み込みます。UART通信ではフォーマットを変換したりはしていません。I2C通信の場合、ほとんどのデータはそのまま読み込まれますが、一部のデータは2バイト長になります。（詳しくは7～8ページ
をご参照ください。）

23

【コマンド】W △ n>ssssssss{FH}【動作】指定したファイルハンドルにWモード又はAモードで開かれたファイルに、指定したサイズ分のデータを書き込む

【引数】

n

0～F

ssssssss

書き込むデータサイズを16進数表記のバイト単位で指定します

データを書き込みたいファイルの開かれているファイルハンドルを指定します"FFFFFFFF"まで指定できます。すなわち4294967295バイトまで1回のコマンドでデータを書き込むことができます【解説】

ファイルハンドルにOコマンドのWモード又はAモードで開かれているファイルに対して、データを書き込みます。
Rモードで開かれたファイルに対しては書き込みはできません。
MSC-MOD20はWコマンドを受信後、ACKの!00を返しその後データの受信待機状態となります。このACKがMSC-MOD20から送信されたことを確認してから、ssssssssで指定したサイズのデータを送信します。
ACK以外のコードが返った場合には、正しく書き込みができません。
MSC-MOD20は、Wコマンドのssssssssで指定したバイト数のデータを受信するまで永久的にデータの受信を待機します。
よってWコマンドを実行する場合には、書き込むデータのサイズをあらかじめよく考慮した上で書き込むデータサイズを指定する必要があります。指定したデータサイズに達しない場合、いつまでもMSC-MOD20はデータの到達を待ちます。（タイムアウト時間の設定はできません。）クローズコマンドを送信しても、データとして受け付けてしまいますので、ファイルハンドルを閉じることはできません。
OコマンドにてWモード（新規ファイル作成モード）でファイルをファイルハンドルに開いている場合には、必ず1バイト目（ファイルの先頭）から書き込みが開始されます。Aモード(上書きモード)でファイルをファイルハンドルに開いている場合には、必ず最終番地の次の番地から書き込みが開始されます。
ファイルにデータがすべて書き終わった場合には、必ずCコマンド又はFコマンドで実体をmicroSDカードに書き込みます。
クローズ処理を行うことで初めてファイルの実体が作成されます。（データを読み出すことのできるファイルとなります。）【戻り値】

MSC-MOD20は、指定したサイズ分のデータを受信すると、 下記のような戻り値を返します。

$ssssssss!00$に続き、ssssssss にて実際に書き込んだデータサイズを16進数表記の文字列で表示します。
また書き込みが成功したことを示すため ACKが1回返ります。
この戻り値が返らない場合には、まだ指定したデータサイズまでデータが受信できていないことを示します。
【使用例】

ファイルハンドル1にWモードで開かれているファイルに対し、文字列 microtechnica を書き込む場合
W 1>D
!00

書き込むサイズは16進数で表現 (0x0Dバイト = 13バイト)
Wコマンドを正しく受信

microtechnica$0000000D

書き込むデータを送信（Wコマンドで指定したデータサイズ分を送信します）
13バイトの書き込み完了の戻り値

!00
C 1
!00

書き込み正常終了
ファイルハンドル1を閉じる
ファイルハンドル1のクローズ処理完了※上記の例では、13バイトのデータを書き込んだ後クローズ処理をしていますが、クローズ処理をしなければ、再度Wコマンドを実行してデータを書き込むことができます。適宜Fコマンドでファイルの実体をメモリメディアに保存すると予期しない電源断等でデータが失われることを防げます。
【応用】※書き込むデータに改行を挿入する場合
書き込むデータが文字列で、改行を挿入したい場合には、改行コードをデータとして送信します。改行コードの挿入されたファイルを閲覧する場合、OSによって改行コードの取り扱いが異なります。下記に一覧を示します。
LF
CR+LF

UNIX系のシステム。Linux、Mac OS X、BeOS、Amiga、RISC OSなど
MS-DOS、Microsoft Windows

CR
Apple IIファミリ、Mac OS（バージョン9まで）※LFは0x0A、CRは0x0Dです。

24

Windowsにて該当のファイルを読む場合、改行として認識させるためには、CRとLFの2バイトが挿入されてる必要があります。
CR(0x0D)しか、入っていないファイルをWindows標準のメモ帳で開くと改行が正しく反映せず、改行位置に■のような記号が入ります。
インターネットエクスプローラーや表計算ソフトのエクセルなどでは正しく改行が反映されますが、Windowsで扱うテキストデータを作る
場合には改行には、CR+LFの2バイトを挿入することをお奨めします。
改行もデータサイズに含まれますので、改行が挿入されている場合には、その分Wコマンドで指定するファイルサイズを大きくする必要があります。
【使用例2】 ファイルハンドル1に新規にファイル(TEXT.TXT)を作成して改行を含むデータを作成し、それをSDカードに書き込む一連の操作例

I<sp>M:<LF>

microSDカードを初期化

!00

初期化完了

O<sp>1W>M:\TEST.TXT<LF>

FH1にTEST.TXTファイルをWモードで展開

!00

展開完了

W<sp>1>22<LF>

FH1に34バイト(0x22)のデータを書き込み指定

!00

完了

0123456789<CR><LF>ABCDEFGHIJ<CR><LF>abcdefghij

書き込むデータ33バイト$00000022!00

33バイト書き込み完了

C<sp>1<LF>

FH1をクローズ（実体の作成）!00

クローズ処理完了

書き込み完了ACK

ここまでて作成されたファイルをWindowsのメモ帳とバイナリエディタで開くと次のようになっています。
改行が入っていることが分かります。

上のファイルをバイナリエディタで開くと下のようになっています。

改行コード0x0D(CR)と0x0A(LF)が挿入されています。

【コマンド】

P △ n>ssssssss{LF}【動作】

ファイルハンドルのカレントカーソルの位置を任意の位置に設定する

【引数】

n

0～F

ssssssss

移動したいカレントカーソルの位置を16進数表記の文字列で指定します。指定できる値は0～ファイルサイズまでです【解説】

ファイルハンドルを指定します

カレントカーソルの位置は、引数ssssssssで指定します。表記は16進数表記で、0～ファイルサイズまで指定できます。
カレントカーソルの位置を指定することで、Rモードで開かれたファイルの読み込み開始位置を指定することができます。
データの先頭に移動する場合には、0を指定します。

【戻り値】

!00

【補足】

現在のカーソル位置はYコマンドで取得できます。

25

【コマンド】Y △ n{LF}【動作】

カレントディレクトリの位置（バイト数）を取得する

【引数】

n

【戻り値】

ACKとカレントカーソル位置が4バイト長の16進数表記で返ります。

0～F

!00
$ssssssss!00【解説】ファイルハンドルを指定します

最初にACKが返ります
カーソル位置が16進数表記で返ります
最後にACKが返ります

ファイルハンドルに開いているファイルについて、現在のカーソル位置を取得します。
カーソル位置のある部分からRコマンドでデータが読み取れます。

【補足】

現在のカーソル位置はPコマンドで移動できます。

【コマンド】

D △ full_path{LF}【動作】指定したファイル及びフォルダを削除する【引数】

full_path【解説】

フルパスで指定したファイルを削除します。
full_pathで指定したディレクトリの最後に\を付加するとフォルダの指定になり、フォルダが削除されます。なおフォルダを削除するには削除するファイルへのフルパスを指定します。最後に\を付加するとフォルダの指定になります。

必ずフォルダ内が空である必要があります。フォルダ内にファイルやサブディレクトリがある場合、削除ができず"!03"が返ります。
【戻り値】

!00

【使用例】

■microSDカード内の"Folder"フォルダを削除する

D<sp>M:\Folder\<LF>"Folder"フォルダを削除します、但し予めフォルダ内は!00

空である必要があります。

26

【コマンド】?△ full_path{LF}【動作】指定したファイル名のファイル又はフォルダ名のフォルダが、カレントディレクトリに存在するかどうかを確認する
存在しているファイル、フォルダの属性とタイムスタンプを取得する【引数】

full_path

調べたいファイル名又はフォルダ名をフルパスで指定します。 ワイルドカードは使用できません。
完全一致したファイル又はフォルダだけ検出します。
microSDカードのルートは、M:です。ディレクトリの区切りは\(バックスラッシュ=0x5C)です。

【戻り値】■指定した文字列のファイルがカレントディレクトリに存在していた場合
ファイル、フォルダ検出のACKが返ったあと、16進数表記の4バイト長ファイルサイズと属性、タイムスタンプの日時が返ります。

!00$ssssssss$AA$hh:mm:ss<sp>mm-dd-yyyy!00

ファイル又はフォルダを検出したことを通知するACK
16進数表記のファイルサイズ（フォルダの場合は00000000）
1バイトサイズの属性（下表参照）
タイムスタンプの日時、時間と日にちの間にはスペースが入ります
最後にACKが返ります$AAは1バイトサイズで属性データです、属性一覧に示す属性が返ります。該当するビットが1になります
ビット

5

4

3

2

属性

アーカイブ

フォルダ

ボリュームID
属性一覧

システム

1

0

隠しファイル 読み取り専用

例えば、フォルダの場合には、"010000"となりますので、戻り値のは$10となります。
■指定した文字列のファイルがカレントディレクトリに存在しなかった場合!20【コマンド】

A △ full_path>new_filename{LF}【動作】

指定したファイル又はフォルダの名前をリネームする【引数】

full_path

名前を変更したいファイル又はフォルダをフルパスで指定します。最後に\を付加するとフォルダの指定になります。
microSDカードのルートは、M:です。ディレクトリの区切りは\(バックスラッシュ=0x5C)です。

new_filename 新しいファイル名を指定します。3文字の拡張子も含められます。
【解説】

ファイル名やフォルダ名を任意の文字列にリネームできます。
フォルダを指定する場合には、フルパスの部分の最後に \ を付加します。

【使用例】■microSDカード内"TEST.TXT"ファイルの名前を"NEWNAME.TXT"に変更する

A<sp>M:\TEST.TXT>NEWNAME.TXT<LF>

ファイル名を変更

!00

変更完了

■microSDカード内"123"フォルダの名前を"Folder"に変更する

A<sp>M:\123\>Folder<LF>

フォルダ名を変更

!00

変更完了

27

【コマンド】E △ M:>ssssssss{LF}【動作】

microSDカードの書き込み、読み込み転送スピードをテストする【引数】

ssssssss

テスト転送するデータのサイズを4バイト長の16進数表記で指定します。
値は1024の倍数にします【戻り値】

指定したデータサイズの読み込み時間（ミリ秒）と、書き込み時間（ミリ秒）を返します!00$aaaaaaaa$bbbbbbbb!00【解説】（例：100MBの場合は6400000を指定します）

読み書きテスト開始を示すACKが返ります。テストには一定の時間がかかります。
データ書き込み時間が16進数表記で返ります。単位はミリ秒です。
データ読み込み時間が16進数表記で返ります。単位はミリ秒です。
テストが正常に完了したことを示すACKが返ります。

microSDカードの読み書きに要する時間を計測するコマンドです。このコマンド実行には最低2つのファイルハンドルが開いている必要があります。
このコマンド実行には時間がかかります。時間はmicroSDカードのサイズとテストに使用するデータのサイズに依存します。
このコマンドの結果は実際にファイルを書き込み、読み込みすることでその時間を実測して結果を表示します。表示時間はあくまでも実験や評価の参考としてお使いください。
このコマンドを実行する前にmicroSDカードをフルフォーマットしておくことをお奨めします。

【使用例】

E<sp>M:>6400000<LF>

SDカードに100MBのデータを転送してテストする!00$00019194$0001C2E1
!00

テスト開始
書き込みに要した時間
読み込みに要した時間

102804ミリ秒
115245ミリ秒

上記の場合、書き込み速度が何bpsなのかを求めたい場合には次のように計算します。
100MB/102804ミリ秒=972.7247967kB/sec

約973kB/secとします。

973kB/sec = ((973kB×8)/1)=7.784Mbps※100MB = 1024 × 1024 × 100 = 104,857,600バイト→ 0x6400000【コマンド】Q △ CONFIRM △ FORMAT △ M:{LF}【動作】

装着されたmicroSDカードをクイックフォーマットする【解説】

microSDカードのクイックフォーマットを行います。ローレベルフォーマットはできません。
ファイルシステムのファイル管理情報の保存領域のみを消去します。フォーマットすると、microSDカード内のすべてのデータは削除されます。フォーマットには時間がかかる場合があります。

【戻り値】

!00
!00

最初のACKはクイックフォーマットの開始を通知するものです
2回目のACKはフォーマットが完了したことを通知するものです

2回目のACKが返るまでの間がクイックフォーマットしている時間です。
2回目のACKが返るまではメモリーカードの抜き差しをしないようご注意下さい。
【補足】

クイックフォーマットに要する時間はメモリーカードの容量や、メーカー等によってかなり変動します。
実際に使用するメモリーカードを使用して実測されることをお奨めします。長い場合3分程度かかる場合もあります。
クイックフォーマットだけする場合でも最初にIコマンドによるメモリメディアの初期化が必要です。

28

①エラーコード表からエラーを特定する

エラーコード一覧

エラーコード表を参照して原因の特定を試みます。原因が分かれば、それに対応した方法でエラーを回避するようにします。

MSC-MOD20は送信したコマンドに対してエラーが発生するとエラーを返します。下表の値は、"!"マークの後ろにつく値を示しています。

②エラーが解決しない場合
エラーは各機器がすべて正常に動作していても、タイミングのずれ
や、信号に物理的な変動などの不確定要因が生じていたり、外部か※エラーコードはあくまでもエラーの目安であり、時に不正確な（下表に記載でない内容）エラーが返ることがあります。
ｴﾗｰｺｰﾄﾞらのノイズなど、様々な要因で発生することがあります。それらのエラーであった場合には、同じルーチンを繰り返し実行することで、正エラーの内容00
01

エラーなし(ACK)
理解できないコマンドです02

引数が不正です03

動作及び操作に失敗しました
書き込み禁止されているメディアへの書き込み

04

ファイル、フォルダリストが最後に到達

10
11

メディアが初期化されていません
初期化に失敗しました

常に動作することがあります。エラーが発生している場合で、エラーの原因が特定できないような場合には、再度同じコマンドを発行することで問題が回避できるかもしれません。少なくとも10回程度は同じコマンドを発行してみてACKが返ってくることがあるかどうかについて確認してみてください。
③本体をハードウエアリセットする
エラーが発生し続けている場合には、一度MSC-MOD20本体のハードウエアリセットをすると問題が回避できるかもしれません

SDカードのCD信号がH又はフローティングしている
20
21

ファイル、フォルダが存在しません
ファイルオープンに失敗しました

22
23

シークはRモードで開いたファイルのみ可能です
シークサイズの上限はファイルサイズまでです24

ファイル名は0にできません

25
26

ファイル名に不正な文字が含まれています
ファイル、フォルダ名はすでに存在しています30

不正なハンドルです31
32

ハンドルソースを開けません
ハンドルの指定先が開けません

33
34

ハンドルソースはRモードでのオープンを要求します
ハンドルソースはWモード又はAモードでのオープンを④電源を再起動する
ハードウエアリセットをかけても、本体のCPUはリセットされますが、取り付けたmicroSDカードはリセットされていません。電源を再起動することでmicroSDカードもリセットされますので、③試行後でもエラーが続く場合には一度本体を再起動することが有用である場合があります。
⑤microSDカードのフォーマットをしてみる
microSDカードへの書き込みや読み込みは、FATというファイルシス
テム仕様に基づいて行われています。ファイルシステムに問題が生じていたり、正しくフォーマットができていないメモリーデバイスを使うと、エラーが発生したり予期しない問題が発生することになります。

要求します

一度WindowsでmicroSDカードをフォーマットし直してお試し下さい。

35
36

空きハンドルはこれ以上ありません
ハンドルを開けません37

ハンドルはすでに使用されています

38
39

オープンファイルモードが不正です
ハンドルはWモード又はAモードを要求しています

3A
40

ハンドルはRモードを要求しています
システムはビジーです41

このコマンドはSPI通信の時のみサポートされます

る規格に即して設計、製造されています。よって一般的にはその規格を満たす機器同士であれば正常に使えるはずです。

FF

ブートローダインディケーションコードしかし、個別の機器自体は正常に動作しており、規格に即した仕様に

なお、フォーマットを行う場合にはクイックフォーマットは使わないでフルフォーマットをお試し下さい。
⑥相性問題を疑ってみるパソコンなどで使用されるmicroSDカードは汎用的な製品であり、あ■エラー発生時の対応方法なっているにも関わらず、組み合わせて使用すると正しく動作しなかったり動作が不安定だったり・・という問題が発生することがありま

MSC-MOD20では、ほとんどのコマンドで正しく処理が完了したり、コマンドを正しく受信すると、ACKとして!00が返るような仕組みになっす。これを一般的には相性問題と呼んでいますが、規格がオープンで広く普及した規格では相性問題がより起こりやすいと言えます。

ています。詳しくは各コマンドの詳細に記述されていますが、多くの場相性問題が発生する理由は、定められた規格の仕様に一定の余裕

合、MSC-MOD20に接続するシリアル通信側の機器は、この!00を待ってから次の操作を行う必要があり、!00のACKを待たないで、又はACKが持たせてあるためです。例えば時間的なタイミングにしても、最小○○μ秒～最大○○μ秒まで・・・というように仕様に幅があるものでの受信をしないで次の操作を行うことは、様々な問題に繋がります。

す。そのため仕様範囲内であっても、タイミングのずれが重なると、許容範囲を逸脱してしまったり、動作に問題が生じたりすることがあります。

MSC-MOD20が!00以外のエラーコードを返す場合には何らかのト

また、高速で動作する機器の場合には、分布定数回路が形成されて、ラブルが発生していることを示しており、エラーコードが返ってくる以上
正常な動作を期待できません。よって、MSC-MOD20と接続する機器はこのエラーコードを受信したら、処理を一度停止し原因を解決しなく波形が歪んだり、波形の立ち上がりや立ち下がりになまりが生じて、その結果、問題が発生するということもあります。

てはなりません。原因は特定が容易なものから特定ができない難しいものまで含まれています。多くの場合には次のような方法でエラーに対相性問題は、汎用的な規格を用いる場合にはなかなか避けられない問題で、その問題が発生した場合には解決の方法が少ないのも事実処することが望ましいと考えられます。

です。そういった場合には機器を交換するしかありません。
もし、動作がどうしてもうまくいかなかったり、不規則な問題が生じる場合には相性問題を疑って頂き、使用するmicroSDカードを変えてお試し頂くなどの対応が必要かと思います。

29

7 "Connect"ボタンをクリックして接続します。

ファームウエアのアップデートの方法

接続して通信ができていることを確認します。メニューバーの"ALFAT"から"Check Version"をクリックします。
正しく通信できていると、"Firmware version x.x.x"と現在のファー本製品に使用されているALFAT SoCのファームウエアは既知の問題点や新機能の追加、相性問題等の解決などを目的としてアップデー

ムウエアのバージョンが表示されます。

トされることがあります。アップデートを行う場合には、MSC-MOD20のUART通信端子(TXおよびRX)をRS232Cレベル変換IC等を介してパソコンと通信させられる環境が必要です。アップデートはWindowsパソ

表示されない場合には通信が正しくできていませんので、正しくパソコンと通信のできる環境にしてください。

コンから専用ツールにてCOMポート経由で行われます。また、ALFATSoCは動作モードをBootloaderモード(手順5参照)にしておく必要があ8 "Browse"ボタンをクリックして最新のファームウエアを読み込みます。

ります。次の方法でアップデートしてください。

9 書き込みを開始しますので、"Update"ボタンをクリックします。

1 当方のFAQサイトにて新しいファームウエアがリリースされていな
いかご確認ください。現在のALFAT SoCに書き込まれているファームウエアバージョンは"V"コマンドにて確認できます。

http://www.microtechnica.tv/faq/faq.cgi?mode=
kate&kate=ALFAT
2 上記のFAQサイトからアップデートツール"Firmware Updater"をダウンロードしてください。zip形式で圧縮されていますので、解凍して下図のようなメッセージが表示された場合には、OKボタンを押して続行してください。

おいください。
3 上記サイトから最新版のファームウエアのダウンロードしてください。ファームウエアファイル本体の拡張子はGHIです。
4 パソコンとMSC-MOD20を接続した状態で手順2でダウンロード
したzipファイルを解凍すると展開される"ALFAT_Updater_v100.
exe"を実行してください。
アップデート中はMSC-MOD20の電源やパソコンの電源を切断し5 MSC-MOD20をブートローダーモードで起動します。

ないでください。また接続を切断しないでください。
プログレスバーが伸びて進捗状況を表示します。

ブートローダーモードは、MSC-MOD20のMode1及びMode2を次の状態にして本体に5Vの電源を給電して起動します。
・Mode1ピン(5ピン)→Hレベル

アップデートが完了したら、バージョンを確認して本体を再起動して完了です。

・Mode2ピン(8ピン)→Lレベル
上記状態に設定した後、3.3Vを給電して起動してください。
6 "Serial COM Port #"のプルダウンから、MSC-MOD20が接続されているCOMポートを選択してください。

30

使用上の注意

製品の技術的なサポートについて

MSC-MOD20を使用するに際して、必ず下記の注意事項をお守りく

本製品の技術的なサポートは製品の開発元、米GHI Electronics社

ださい。

が直接行います。技術的なサポートが必要な場合には、開発元へ直接①MSC-MOD20を使用するに際し、当方は明示的及び潜在的な使用ご連絡頂きます。当方での技術的なサポートは致しておりません。
技術サポートはすべて英文となります。当方（日本）での技術サポート

したことによる危険性や、不確実性については予見することができませは行っておりません。あらかじめご了承頂けますようお願い申し上げまん。使用する際には、お客様の責任においてこの製品を正しくお使いいただけますようお願い致します。

す。なお、日本語マニュアル及びFAQにつきましては、当方のサイトより最新の情報をご提供致します。

②MSC-MOD20は、microSDカードに対してデータを記録したり、デー

サポートは、本製品に使われているCPUの製品名、"ALFAT(F40)"のタを読み込むことのできるモジュールですが、信頼性は一般的な使用

サポートとして開発元が行っています。開発元ではサポートフォーラムの範囲に限定されます。本製品を宇宙、航空、原子力、燃焼制御、運輸、交通、各種安全装置、ライフサポート関連の医療機器等のように、特別を開設しています。まずは本マニュアルや英語版のALFATデータシート
をお読みの上、解決方法を探して下さい。

な品質・信頼性を要求され、その故障や誤動作が直接人命を脅かした
り、人体に危害を及ぼす恐れのある用途向けには使用できません。

もし解決方法が見つからない、疑問点がある場合などはサポートフ
ォーラムにその内容を詳しく投稿してください。サポートフォーラムは世③MSC-MOD20では様々な外的要因等によって、データを正しく書き

界中のユーザーが閲覧しており、適切な回答が期待できます。投稿する込めなかったり、読み込んだデータに誤りがある場合などがあります。
本製品を使用することによって生じた、もしくはこれに関連するいかな

場合には、必ず次の内容を明記してください。

る直接・間接損害、懲罰的損害、その他データの破損や消失等を含むいかなる損害、損失についても、当方では一切責任を負いかねます。あら・お使いの製品名 → ALFAT SoC
・インターフェイスの種類 (UART or I2C)

かじめご理解とご了承頂けますようお願い致します。

・通信速度
・本機を接続しているデバイスの種類④本製品を使用した製品等を製造させる場合には、様々なフェイルセーフ機能（安全設計）を施して頂き、十分に機器のテストをした上で運

なお投稿の前にまず「必ず」パソコンと本機をUART経由で接続して用されますようお願い致します。また、データの損失や予期しない事態に備え、データのバックアップを行って頂けますようお願い致します。

パソコン側からコマンドを送信して動作を確認後、投稿をお願い致します。マイコンと接続して動作確認をした場合、マイコンのプログラム⑤本製品は日本国内での使用、消費を前提として輸入された製品でにバグがあると、どこに問題があるのか分からなくなってしまいます。
フォーラムに投稿しても「まずはパソコンと接続して試してください」とす。本製品の技術は米国で開発されたものであり、輸入に際しては最終いう回答が目立ちます。実際ほとんどのケースで、接続していたマイコ

仕向国を日本としています。よって本製品を第三国に輸出することは想定されておらず、当方では輸出に関わるあらゆる責任を負いません。まンが正しいコマンドのやりとりを実行できていないことが原因で、コマンドの動作内容が分からなくなっているケースです。

た輸出に際して必要な各種証明書等の発行はしておりません。

投稿の前に「まずパソコンと接続して1からコマンドのやりとりをし

RoHS指令や環境負荷物質等の調査書や報告書などの提出はしておりません。当方からお示しできる資料は本マニュアルと当方のFAQサイトて送信内容、戻り値の内容を確認する」ということをお願い致します。

に記載されているドキュメントがすべてです。

また、お問い合わせの際にはできるかぎり、その内容を明示できる波形データや、シリアル通信のログを添付してください。ロジックアナライ
ザもしくは、オシロスコープでコマンドのやりとりを観察したデータがなく、「●●というコマンドを送ったが■■できない」という内容だけでは本当に「●●」というコマンドが送られているのか客観的に評価できません。また「●●」というコマンドを送れば何らかの戻り値があります。!00のACKなのか、又はエラーコードなのかを明記してください。
シリアル通信のデバッグには、コマンドをやりとりした具体的なデー
タ（波形データなど）は必須ですので、どうぞご協力をお願い致します。
なお、サポートはいずれも技術者専門となっており、技術的なご質問をするためのものとなっております。マニュアルに既に記載されている内容などについては回答が得られない場合があります。

https://forums.ghielectronics.com/
投稿には予めユーザー登録が必要です。ユーザー登録をする場合には上記サイトの右上にある"Log In"のリンクをクリックした後表示されるログイン画面で"Create New Account."をクリックすると登録が可能です。登録後、フォーラムに投稿ができます。
お問い合わせのカテゴリーは「File-System Hardware」としてくださ
い。

31

主な仕様
電源電圧：

DC3.3V（±3%以内）

Vbatピン：

DC1.65V～3.6V

消費電流：

通常動作時 平均約50mA
スタンバイモード時 80μA(max)
ストップモード時 2mA(max)Vbatピン消費電流:
動作環境：

平均1.32μA (3.3V時)-10℃～70℃ （動作保証範囲）

対応SDカード規格：
対応ファイルシステム：

microSDカード
FAT16 、 FAT32

シリアル通信方式：

非同期式シリアル通信UART

CPU:

同期式シリアル通信I2C
ALFAT SoC (GHI Electronics社製)

開発元：

米GHI Electronics社

生産国：

米国

※その他の電気的特性は本書5ページを参照下さい。

マイクロテクニカ〒158-0094

東京都世田谷区玉川1-3-10(C)2014 Microtechnica All rights reserved
32