TfSpikeInit
TF カード初期化 spike (docs/tfcard.md「spike の構成」)
SpiMaster + 最小シーケンサで初期化シーケンス (CMD0 → CMD8 → CMD55/ACMD41 ポーリング → CMD58) を完走し,データクロックへ切り替えて CMD17 で セクタ 0 (MBR) を読む.結果は ASCII 1 行の stream として送出する:
TF R1=xx,xx,xx,xx OCR=xxxxxxxx S0=<先頭16バイトhex> SIG=K E=-
R1=は CMD0 / CMD8 / ACMD41 (最終) / CMD58 の R1 (未実行は FF)SIG=は MBR 署名 55AAh の検査 (K=一致 / N=不一致)E=はエラー段 (-なし /0CMD0 /8CMD8 非対応 /AACMD41 タイムアウト /CCCS=0 非対応 /RCMD17 応答・トークン異常 /Xデータ CRC16 不一致)
発行コマンドは CMD0/CMD8/CMD55/ACMD41/CMD58/CMD17 のみ (リード専用, write 系は FSM 上存在しない).
Parameters
| InitDivider | u32 | 初期化クロック分周比 (337.5 kHz) |
|---|---|---|
| FastDivider | u32 | データ転送クロック分周比 (13.5 MHz) |
| PowerUpBytes | u32 | 電源投入クロック供給のバイト数 (74 クロック以上 → 10 バイト = 80 クロック) |
| NcrMaxBytes | u32 | R1 応答待ちの上限バイト数 (NCR) |
| Acmd41MaxPolls | u32 | ACMD41 ポーリング上限回数 (337.5 kHz で約 1.2 s 相当) |
| TokenMaxBytes | u32 | データトークン待ちの上限バイト数 (13.5 MHz で約 155 ms 相当) |
Ports
| i_clk | input | clock | クロック (27 MHz) |
|---|---|---|---|
| i_rst | input | reset | リセット |
| o_sclk | output | logic | TF SCK |
| o_mosi | output | logic | TF MOSI |
| o_cs_n | output | logic | TF CS# |
| i_miso | input | logic | TF MISO |
| msg | modport | stream_if source | 結果メッセージ (リセット毎に 1 行送出) |