引数部は、コマンドによっては不要となるが、その場合でも空データ(0x00)を送信し、コマンド・トークンの合計6バイトを守らなければならない。 CRC部は、コマンド部~引数部をCRC7で演算したものである。図のように1バイト(8ビット)の内、上位7ビットがCRC、最下位(LSB)は1固定であるので、計算したCRCを1bit左シフトするなどの考慮が必要である。 ・CRC(巡回冗長検査) SDカードのコマンド・トークンで使われるCRCはCRC7である。多項式は である。 CRCの計算方法はいくつかあるが、下のようなCRC生成回路をそのままCで実現することとする。 プログラム例を示す。 1: char calc_CRC7(char *data, int len) { 2: int i, j; 3: char crc, dt; 4: 5: crc = 0; 6: for (i = 0; i < le
![SDカードの構造と内部レジスタ(その1) – ミームス(MEMEs)のサポートページ](https://cdn-ak-scissors.b.st-hatena.com/image/square/34687bcea181102a28b854faeffea8d98979aa7b/height=288;version=1;width=512/http%3A%2F%2Fmemes.sakura.ne.jp%2Fmemes%2Fwp-content%2Fuploads%2F2013%2F10%2Fsd1-6.png)