引数部は、コマンドによっては不要となるが、その場合でも空データ(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