FatFs

車載外部ストレージ

【FileSystem】車載外部ストレージ その23【SD初期化⑥】

SDカードのSDモード通信の初期化シーケンスを大雑把に説明。 次回から以下の流れで説明予定。CMD8(SEND_IF_COND)によるSDv2判定及びサポート電圧判定。 ACMD41(SD_SEND_OP_COND)によるHigh Capacity設定とVoltage Switch可否判定。 CMD11(VOLTAGE_SWITCH)によるVoltage Switch。 CMD2(ALL_SEND_CID)によるCIDの取得。 CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得。 CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移。
車載外部ストレージ

【FileSystem】車載外部ストレージ その22【SD初期化⑤】

SDカードのSPIモード通信の初期化シーケンスの中のSDv2の容量判定について説明。 CMD58(RAD OCR)を投げてCCS(Card Capacity Status)ビットを確認する。 CCSが0ならSDSC、1ならSDHC/SDXC。 結果的にCMD58(READ OCR)を2回発行するが、仕様書上はmust要件となってる。
車載外部ストレージ

【FileSystem】車載外部ストレージ その21【SD初期化④】

SDカードのSPIモード通信の初期化シーケンス読み書き可能状態遷移を説明。 ACMD41(SEND_OP_COND)を投げてR1レスポンスのin idle stateを監視するだけ。 ACMD41(SEND_OP_COND)のパラメータにHCS(High Capacity Support)の付加してSDHC以降のモードに切り替えられる。 SDHC以降モードはBlock lengthが512byte固定となる。
車載外部ストレージ

【FileSystem】車載外部ストレージ その20【SD初期化③】

SDカードのSPIモード通信の初期化シーケンスの中の駆動電圧判定について説明。 CMD58(READ_OCR)を送ると、R3フォーマットのレスポンスが返る。 R3フォーマットはR1にOCRが付加されたもの。 OCRのbit15~bit23が駆動可能電圧を示している。 自装置の駆動電圧が範囲外の場合は制御不可。
車載外部ストレージ

【FileSystem】車載外部ストレージ その19【SD初期化②】

SDカードのSPIモード通信の初期化シーケンス詳細を開始。以下の順番で説明予定。初期状態に戻す。 SDv2以降判定。 駆動電圧判定。 読み書き可能状態へ。 SDv2の容量判定。 初期状態に戻すのはCMD0(GO_IDLE)。 SDv2を判定するのはCMD8(SEND_IF_COND)でエラーになるかどうか
車載外部ストレージ

【FileSystem】車載外部ストレージ その18【SD初期化①】

SDカードはいきなり読み書きはできない。 初期化シーケンスを通してSDカード状態を読み書き可能状態へ遷移させる。 初期化シーケンスはSDv1、SDv2のルートに分かれる。 SDv1とSDv2 SDSCはモノとしては一緒。 SDSCかSDHC/SDXCはSDv2の最後のCCSの判定で分かる。
車載外部ストレージ

【FileSystem】車載外部ストレージ その17【SDカード⑬】

SDカードのSDモード通信に於いてのレスポンス(R1とR1b)について説明。 R1の中にcard statusという32bitのエラー&状態情報がある。 状態が想定と異なる場合は再初期化等で期待する状態に再遷移させる設計/実装をする必要がある。 R1bはSPIモードと同じく、R1にbusyが付いたもの。 busyはDATが0を維持している状態。
車載外部ストレージ

【FileSystem】車載外部ストレージ その16【SDカード⑫】

SDカードのSDモード通信に於いてのレスポンスについて説明。 SPIモードに無かったR6が追加。 R6はRCA(Relative Card Address)を取得するもの。 RCAはCMD7の引数に使われるもので、これが無いと読み書きモードへ移行できない。 上記使用はSPIモードには無いもの。
車載外部ストレージ

【FileSystem】車載外部ストレージ その15【SDカード⑪】

SDモード通信の(Multiple) Block Write Operationについて説明。 data block送信毎にbusyが入る。 busyの待ち時間はACMD13(SD_STATUS)で取得できるAU_SIZEに依存。 AU_SIZEは組み込みに於いては重要なパラメータ。 AU_SIZEが小さい高速なSDカードを選択したり、AU_SIZEに合わせて書き込み単位を変えたり。
車載外部ストレージ

【FileSystem】車載外部ストレージ その14【SDカード⑩】

SDモード通信の(Multiple) Block Read Operationの説明。 CMDラインとDATラインがあるため、responseが終わる前にdata blockが送出されることを想定する必要あり。 CMD12(STOP_TRANSMISSION)で強制停止できる。 SPIモードと使い方は一緒。