検索条件
全1件
(1/1ページ)
SD Card専用のCRC7計算ルーチン(C言語汎用)。戻り値をそのまま「6byte目」として送信できる。このソースは自由にご利用ください。
//****************************************************************************** // Calc SD CRC7 //****************************************************************************** int calc_sd_crc7(char *buf) { int crc, crc_prev; int i,j; crc = buf[0]; for(i=1; i<6; i++) { for(j=7; j>=0; j--) { crc <<= 1; crc_prev = crc; if (i<5) crc |= (buf[i]>>j) & 1; if (crc & 0x80) { crc ^= 0x89; } // Generator } } return crc_prev | 1; }
元データに x7 かけるのを見落としていたため、えらいハマった(汗)
CRCの説明って、どこもあんまりストレートじゃないなあ。
「引き算の代わりにXORを使った」(2進数)のわり算でいえばいいんですが、桁借り*1を無視した(2進数の)わり算って書いてあれば、すぐに思い出せたのにと思ったのでした。*2