change for use
SDHandler.cpp@0:e882606c8174, 2021-12-07 (annotated)
- Committer:
- dank
- Date:
- Tue Dec 07 07:54:45 2021 +0000
- Revision:
- 0:e882606c8174
sdhandler;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dank | 0:e882606c8174 | 1 | #include "SDHandler.h" |
dank | 0:e882606c8174 | 2 | #include "SDCommands.h" |
dank | 0:e882606c8174 | 3 | |
dank | 0:e882606c8174 | 4 | |
dank | 0:e882606c8174 | 5 | bool SD_Initialize(){ |
dank | 0:e882606c8174 | 6 | |
dank | 0:e882606c8174 | 7 | SpiRawInitialize(); |
dank | 0:e882606c8174 | 8 | |
dank | 0:e882606c8174 | 9 | //--------------------------- 74clock --------------------------- |
dank | 0:e882606c8174 | 10 | Dummy74Clacks(); |
dank | 0:e882606c8174 | 11 | |
dank | 0:e882606c8174 | 12 | //--------------------------- CMD0 --------------------------- |
dank | 0:e882606c8174 | 13 | if(!CMD0())return false; |
dank | 0:e882606c8174 | 14 | |
dank | 0:e882606c8174 | 15 | //--------------------------- CMD8 --------------------------- |
dank | 0:e882606c8174 | 16 | uint32_t r7; |
dank | 0:e882606c8174 | 17 | if(!CMD8(&r7))return false; |
dank | 0:e882606c8174 | 18 | |
dank | 0:e882606c8174 | 19 | //--------------------------- ACMD41 --------------------------- |
dank | 0:e882606c8174 | 20 | bool flag = false; |
dank | 0:e882606c8174 | 21 | for(int i = 0;i < 100;i++){ |
dank | 0:e882606c8174 | 22 | flag = ACMD41(); |
dank | 0:e882606c8174 | 23 | if(flag)break; |
dank | 0:e882606c8174 | 24 | } |
dank | 0:e882606c8174 | 25 | |
dank | 0:e882606c8174 | 26 | if(!flag)return false; |
dank | 0:e882606c8174 | 27 | |
dank | 0:e882606c8174 | 28 | //--------------------------- CMD58 --------------------------- |
dank | 0:e882606c8174 | 29 | uint32_t ocr; |
dank | 0:e882606c8174 | 30 | if(!CMD58(&ocr))return false; |
dank | 0:e882606c8174 | 31 | |
dank | 0:e882606c8174 | 32 | //--------------------------- CMD9 --------------------------- |
dank | 0:e882606c8174 | 33 | uint8_t csd[16]; |
dank | 0:e882606c8174 | 34 | if(!CMD9(csd))return false; |
dank | 0:e882606c8174 | 35 | |
dank | 0:e882606c8174 | 36 | //--------------------------- CMD10 --------------------------- |
dank | 0:e882606c8174 | 37 | uint8_t cid[16]; |
dank | 0:e882606c8174 | 38 | if(!CMD10(cid))return false; |
dank | 0:e882606c8174 | 39 | |
dank | 0:e882606c8174 | 40 | return true; |
dank | 0:e882606c8174 | 41 | } |
dank | 0:e882606c8174 | 42 | |
dank | 0:e882606c8174 | 43 | bool SD_WriteMulti(uint32_t sector, uint8_t *data, uint16_t count){ |
dank | 0:e882606c8174 | 44 | if(!CMD25(sector,data,count))return false; |
dank | 0:e882606c8174 | 45 | return true; |
dank | 0:e882606c8174 | 46 | } |
dank | 0:e882606c8174 | 47 | |
dank | 0:e882606c8174 | 48 | bool SD_ReadMulti(uint32_t sector, uint8_t *data, uint16_t count){ |
dank | 0:e882606c8174 | 49 | if(!CMD18(sector,data,count))return false; |
dank | 0:e882606c8174 | 50 | return true; |
dank | 0:e882606c8174 | 51 | } |
dank | 0:e882606c8174 | 52 | |
dank | 0:e882606c8174 | 53 | bool SD_Write(uint32_t sector, uint8_t *data){ |
dank | 0:e882606c8174 | 54 | if(!CMD24(sector,data))return false; |
dank | 0:e882606c8174 | 55 | return true; |
dank | 0:e882606c8174 | 56 | } |
dank | 0:e882606c8174 | 57 | |
dank | 0:e882606c8174 | 58 | bool SD_Read(uint32_t sector, uint8_t *data){ |
dank | 0:e882606c8174 | 59 | if(!CMD17(sector,data))return false; |
dank | 0:e882606c8174 | 60 | return true; |
dank | 0:e882606c8174 | 61 | } |