| #if defined(__MK64FX512__) || defined(__MK66FX1M0__) | #if defined(__MK64FX512__) || defined(__MK66FX1M0__) | ||||
| #include "kinetis.h" | #include "kinetis.h" | ||||
| #include "core_pins.h" // testing only | |||||
| //#include "core_pins.h" // testing only | |||||
| //#include "HardwareSerial.h" // testing only | |||||
| // Missing in Teensyduino 1.30 | // Missing in Teensyduino 1.30 | ||||
| #ifndef MPU_CESR_VLD_MASK | #ifndef MPU_CESR_VLD_MASK | ||||
| SDHC_RESULT_NO_RESPONSE /* 5: No Response */ // from old diskio.h | SDHC_RESULT_NO_RESPONSE /* 5: No Response */ // from old diskio.h | ||||
| }; | }; | ||||
| /*void print_result(int n) | |||||
| { | |||||
| switch (n) { | |||||
| case SDHC_RESULT_OK: serial_print("OK\n"); break; | |||||
| case SDHC_RESULT_ERROR: serial_print("R/W Error\n"); break; | |||||
| case SDHC_RESULT_WRPRT: serial_print("Write Protect\n"); break; | |||||
| case SDHC_RESULT_NOT_READY: serial_print("Not Ready\n"); break; | |||||
| case SDHC_RESULT_PARERR: serial_print("Invalid Param\n"); break; | |||||
| case SDHC_RESULT_NO_RESPONSE: serial_print("No Response\n"); break; | |||||
| default: serial_print("Unknown result\n"); | |||||
| } | |||||
| }*/ | |||||
| #define SDHC_STATUS_NOINIT 0x01 /* Drive not initialized */ | #define SDHC_STATUS_NOINIT 0x01 /* Drive not initialized */ | ||||
| #define SDHC_STATUS_NODISK 0x02 /* No medium in the drive */ | #define SDHC_STATUS_NODISK 0x02 /* No medium in the drive */ | ||||
| #define SDHC_STATUS_PROTECT 0x04 /* Write protected */ | #define SDHC_STATUS_PROTECT 0x04 /* Write protected */ | ||||
| } | } | ||||
| resR = SDHC_CMD8_SetInterface(0x000001AA); // 3.3V and AA check pattern | resR = SDHC_CMD8_SetInterface(0x000001AA); // 3.3V and AA check pattern | ||||
| if (resR > 0) { | |||||
| sdCardDesc.status = SDHC_STATUS_NOINIT; | |||||
| return SDHC_STATUS_NOINIT; | |||||
| } | |||||
| if (resR == 0) { | |||||
| if (resR == SDHC_RESULT_OK) { | |||||
| if (SDHC_CMDRSP0 != 0x000001AA) { | if (SDHC_CMDRSP0 != 0x000001AA) { | ||||
| sdCardDesc.status = SDHC_STATUS_NOINIT; | sdCardDesc.status = SDHC_STATUS_NOINIT; | ||||
| return SDHC_STATUS_NOINIT; | return SDHC_STATUS_NOINIT; | ||||
| } | } | ||||
| sdCardDesc.highCapacity = 1; | sdCardDesc.highCapacity = 1; | ||||
| } else if (resR == SDHC_RESULT_NO_RESPONSE) { | |||||
| // version 1 cards do not respond to CMD8 | |||||
| } else { | |||||
| sdCardDesc.status = SDHC_STATUS_NOINIT; | |||||
| return SDHC_STATUS_NOINIT; | |||||
| } | } | ||||
| if (SDHC_ACMD41_SendOperationCond(0)) { | if (SDHC_ACMD41_SendOperationCond(0)) { |