mbed_example
/
CRC_eample_sd
CRC example for SD driver
Diff: main.cpp
- Revision:
- 0:e60fda833675
- Child:
- 1:ca0b1e353dfe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Dec 18 22:58:44 2017 +0000 @@ -0,0 +1,69 @@ +#include "mbed.h" +#include "mbed_crc.h" +#include "SlowCRC.h" +#include "FastCRC.h" + +int crc_sd_7bit() { + SlowCRC<uint8_t> ct(CRC_7BIT_SD); + + ct.init(); + test[0] = 0x40; + test[1] = 0x00; + test[2] = 0x00; + test[3] = 0x00; + test[4] = 0x00; + + ct.compute((void *)test, 5, &crc); + // CRC 7-bit as 8-bit data + crc = (crc << 1 ) + 1; + printf("The CRC of 0x%x \"CMD0\" is \"0x95\" Result: 0x%x\n", + ct.get_polynomial(), crc); + + test[0] = 0x48; + test[1] = 0x00; + test[2] = 0x00; + test[3] = 0x01; + test[4] = 0xAA; + + ct.compute((void *)test, 5, &crc); + // CRC 7-bit as 8-bit data + crc = (crc << 1 ) + 1; + printf("The CRC of 0x%x \"CMD8\" is \"0x87\" Result: 0x%x\n", + ct.get_polynomial(), crc); + + test[0] = 0x51; + test[1] = 0x00; + test[2] = 0x00; + test[3] = 0x00; + test[4] = 0x00; + + ct.compute((void *)test, 5, &crc); + // CRC 7-bit as 8-bit data + crc = (crc << 1 ) + 1; + printf("The CRC of 0x%x \"CMD17\" is \"0x55\" Result: 0x%x\n", + ct.get_polynomial(), crc); + + ct.deinit(); + return 0; +} + +int crc_sd_16bit() { + char test[512]; + uint32_t crc; + FastCRC<uint16_t> sd(CRC_16BIT_SD); + + memset(test, 0xFF, 512); + // 512 bytes with 0xFF data --> CRC16 = 0x7FA1 + sd.init(); + sd.compute((void *)test, 512, &crc); + printf("The 16BIT SD CRC of 512 bytes with 0xFF data is \"0x7FA1\" Result: 0x%x\n", crc); + sd.deinit(); + return 0; +} + +int main() +{ + crc_sd_16bit(); + crc_sd_7bit(); + return 0; +}