CRC example for SD driver

Committer:
deepikabhavnani
Date:
Tue Jan 02 15:47:19 2018 +0000
Revision:
1:ca0b1e353dfe
Parent:
0:e60fda833675
Child:
2:ee110889fa99
SlowCRC is renamed to BitwsieCRC; No template class for CRC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
deepikabhavnani 0:e60fda833675 1 #include "mbed.h"
deepikabhavnani 1:ca0b1e353dfe 2 #include "BaseCRC.h"
deepikabhavnani 1:ca0b1e353dfe 3 #include "BitwiseCRC.h"
deepikabhavnani 0:e60fda833675 4 #include "FastCRC.h"
deepikabhavnani 0:e60fda833675 5
deepikabhavnani 0:e60fda833675 6 int crc_sd_7bit() {
deepikabhavnani 1:ca0b1e353dfe 7 BitwiseCRC ct(CRC_7BIT_SD);
deepikabhavnani 1:ca0b1e353dfe 8 char test[5];
deepikabhavnani 1:ca0b1e353dfe 9 uint32_t crc;
deepikabhavnani 1:ca0b1e353dfe 10
deepikabhavnani 0:e60fda833675 11 ct.init();
deepikabhavnani 0:e60fda833675 12 test[0] = 0x40;
deepikabhavnani 0:e60fda833675 13 test[1] = 0x00;
deepikabhavnani 0:e60fda833675 14 test[2] = 0x00;
deepikabhavnani 0:e60fda833675 15 test[3] = 0x00;
deepikabhavnani 0:e60fda833675 16 test[4] = 0x00;
deepikabhavnani 1:ca0b1e353dfe 17
deepikabhavnani 1:ca0b1e353dfe 18 ct.compute((void *)test, 5, &crc);
deepikabhavnani 0:e60fda833675 19 // CRC 7-bit as 8-bit data
deepikabhavnani 0:e60fda833675 20 crc = (crc << 1 ) + 1;
deepikabhavnani 1:ca0b1e353dfe 21 printf("The CRC of 0x%x \"CMD0\" is \"0x95\" Result: 0x%x\n",
deepikabhavnani 0:e60fda833675 22 ct.get_polynomial(), crc);
deepikabhavnani 0:e60fda833675 23
deepikabhavnani 0:e60fda833675 24 test[0] = 0x48;
deepikabhavnani 0:e60fda833675 25 test[1] = 0x00;
deepikabhavnani 0:e60fda833675 26 test[2] = 0x00;
deepikabhavnani 0:e60fda833675 27 test[3] = 0x01;
deepikabhavnani 0:e60fda833675 28 test[4] = 0xAA;
deepikabhavnani 1:ca0b1e353dfe 29
deepikabhavnani 1:ca0b1e353dfe 30 ct.compute((void *)test, 5, &crc);
deepikabhavnani 0:e60fda833675 31 // CRC 7-bit as 8-bit data
deepikabhavnani 0:e60fda833675 32 crc = (crc << 1 ) + 1;
deepikabhavnani 1:ca0b1e353dfe 33 printf("The CRC of 0x%x \"CMD8\" is \"0x87\" Result: 0x%x\n",
deepikabhavnani 0:e60fda833675 34 ct.get_polynomial(), crc);
deepikabhavnani 0:e60fda833675 35
deepikabhavnani 0:e60fda833675 36 test[0] = 0x51;
deepikabhavnani 0:e60fda833675 37 test[1] = 0x00;
deepikabhavnani 0:e60fda833675 38 test[2] = 0x00;
deepikabhavnani 0:e60fda833675 39 test[3] = 0x00;
deepikabhavnani 0:e60fda833675 40 test[4] = 0x00;
deepikabhavnani 0:e60fda833675 41
deepikabhavnani 1:ca0b1e353dfe 42 ct.compute((void *)test, 5, &crc);
deepikabhavnani 0:e60fda833675 43 // CRC 7-bit as 8-bit data
deepikabhavnani 0:e60fda833675 44 crc = (crc << 1 ) + 1;
deepikabhavnani 1:ca0b1e353dfe 45 printf("The CRC of 0x%x \"CMD17\" is \"0x55\" Result: 0x%x\n",
deepikabhavnani 0:e60fda833675 46 ct.get_polynomial(), crc);
deepikabhavnani 0:e60fda833675 47
deepikabhavnani 0:e60fda833675 48 ct.deinit();
deepikabhavnani 0:e60fda833675 49 return 0;
deepikabhavnani 0:e60fda833675 50 }
deepikabhavnani 0:e60fda833675 51
deepikabhavnani 0:e60fda833675 52 int crc_sd_16bit() {
deepikabhavnani 0:e60fda833675 53 char test[512];
deepikabhavnani 0:e60fda833675 54 uint32_t crc;
deepikabhavnani 1:ca0b1e353dfe 55 FastCRC sd(CRC_16BIT_SD);
deepikabhavnani 1:ca0b1e353dfe 56
deepikabhavnani 0:e60fda833675 57 memset(test, 0xFF, 512);
deepikabhavnani 0:e60fda833675 58 // 512 bytes with 0xFF data --> CRC16 = 0x7FA1
deepikabhavnani 0:e60fda833675 59 sd.init();
deepikabhavnani 0:e60fda833675 60 sd.compute((void *)test, 512, &crc);
deepikabhavnani 0:e60fda833675 61 printf("The 16BIT SD CRC of 512 bytes with 0xFF data is \"0x7FA1\" Result: 0x%x\n", crc);
deepikabhavnani 0:e60fda833675 62 sd.deinit();
deepikabhavnani 0:e60fda833675 63 return 0;
deepikabhavnani 0:e60fda833675 64 }
deepikabhavnani 0:e60fda833675 65
deepikabhavnani 1:ca0b1e353dfe 66 int main()
deepikabhavnani 0:e60fda833675 67 {
deepikabhavnani 1:ca0b1e353dfe 68 crc_sd_16bit();
deepikabhavnani 0:e60fda833675 69 crc_sd_7bit();
deepikabhavnani 0:e60fda833675 70 return 0;
deepikabhavnani 0:e60fda833675 71 }