マイクロテクニカ MSC-MOD10をI2Cでアクセスする例
マイクロテクニカ マイクロSDカードアクセスモジュール
MSC-MOD10の使用例を記す。
販売先:
GHI ELECTRONICS(チップメーカー):
この使用例ではマイクロチップ社のPIC18F452というマイコンを中心にアナログ4点、デジタル4点の入力状態をマイクロSDカードに記録するシステム構築する。
その中でも注意すべき点について記す。
<回路>
・電源はMSC-MOD10へ3.3V。それ以外は5Vの電源を用意する。
5V電源については三端子レギュレーター7805。3.3V電源については317で生成する。
・CN3はPICマイコンのインサーキットデバッガICD2を接続する。最近はICD3が発売になりICD2は安くなったようだ。
・VREFはA/D用の基準電圧2.5Vを生成する。
・CN3の1~4ピン目はアナログ入力。5~8ピン目はデジタル入力。
・MSC-MOD10へはI2Cにてアクセスする。I2C_SCL、I2C_SDAは5V電源でプルアップ。
・UART_TX,UART_RXはDATA_RDY、BUSY信号となる。トランジスタを用いてレベルシフトをしている。
トランジスタを介さず直結しても動作はする、オシロで眺めると不安定な動きなのでレベルシフトしている。
・CN4はシリアル出力。パソコンに接続してリアルタイムでデータの入力を確認する。
<ソフトウェア>
基本シーケンス
(1)オープニングメッセージの受信
(2)ファイルシステムの初期化
(1)オープニングメッセージの受信
{CR}
GHI Electronics, LLC{CR}
----------------------{CR}
Boot Loader 2.03{CR}
uALFAT(TM) 2.16{CR}
!00{CR}
(留意点)
・I2Cにおいても行末にはキャリッジリターンが挿入される。
・Gの前にはスペースがひとつ入る。
・全てアスキーコード。
(2)ファイルシステムの初期化
SDカードにアクセスする前に「I」コマンドによりファイルシステムの初期化を行う。
(留意点)
・このコマンドを送信しないとSDカードへアクセスできない。
・このコマンドはSDカードのフォーマットではないことに注意。
「V」コマンドの例
void
SD_V_Command(void) {
static char SD_Buffer[25];
auto char Count = 0;
auto short ErrorFlag = FALSE;
/*
send 'V' command */
i2c_start();
i2c_write(0xA4+0x00);
i2c_write('V');
/* V command */
i2c_write(0x0D); /* return code
*/
i2c_stop();
delay_ms(50);
/* wait DATA_RDY = HI */
while(1) {
if (DATA_RDY == 1) {
break;
}
}
/* read version */
while(DATA_RDY) {
i2c_start();
i2c_write(0xA4+0x01);
SD_Buffer[Count] = i2c_read();
i2c_stop();
Count++;
if (Count == 255) {
break;
ErrorFlag = TRUE;
}
}
delay_ms(1);
}
V_Command全体波形
Vコマンドを送信してから50ms間の待ちを設けている。(特に必要ないみたい)
V_Command受信部
「W」コマンドの例
説明書にある「microtechnica」と書き込んだ時の波形。
書き込み完了の戻り値が送信準備されるまで約10msほど必要なようである。