Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // .....
- char buffer[512];
- //......
- SDMMC1->IDMABSIZE = (sizeof(buffer)/4/8) << SDMMC_IDMABSIZE_IDMABNDT_Pos;
- SDMMC1->IDMACTRL |= SDMMC_IDMA_IDMAEN_Msk;
- SDMMC1->IDMABASER = (unsigned int)buffer;
- SDMMC1->DLEN = sizeof(buffer);
- SDMMC1->DTIMER = 0xFFFFFFFF; // max timeout
- SDMMC1->DCTRL = (9<<SDMMC_DCTRL_DBLOCKSIZE_Pos) |
- SDMMC_DCTRL_DTDIR // read
- | SDMMC_DCTRL_DTEN;
- while(!(SDMMC1->STA & SDMMC_STA_DPSMACT));
- SDMMC1->ICR |= 0xFFFFFFFF;
- SDMMC1->ARG = lba;
- SDMMC1->CMD = (17 << SDMMC_CMD_CMDINDEX_Pos) |
- SDMMC_CMD_WAITRESP_0 |
- SDMMC_CMD_CPSMEN;
- while (!(SDMMC1->STA & (SDMMC_STA_CMDSENT | SDMMC_STA_CMDREND | SDMMC_STA_CTIMEOUT | SDMMC_STA_CCRCFAIL)));
- if(SDMMC1->STA & SDMMC_STA_CTIMEOUT || SDMMC1->STA & SDMMC_STA_CCRCFAIL){
- return ;
- }
- // here infinite loop. I use debugger to check buffer value.
Advertisement
Add Comment
Please, Sign In to add comment