mbed_example
/
CRC_eample_sd
CRC example for SD driver
main.cpp@1:ca0b1e353dfe, 2018-01-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |