使用最新官网例程?
版本:2.4 上传时间:2024-03-11
下面是错误定位代码:
int?main(void) { u32?i; u32?Sector_Nums; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n",?SystemCoreClock); printf("ChipID:%08x\r\n",?DBGMCU_GetCHIPID()); while(eMMC_Init()) { printf("eMMC?Card?Error!\r\n"); delay_ms(1000); } show_eMMCcard_info(); printf("eMMC?Card?initial?OK!\r\n"); Sector_Nums?=?((u32)?(eMMCCardInfo.SectorNums)); eMMC_Change_Tran_Mode(); for?(i?=?0;?i?<?512;?i++) { buf[i]?=?i; } for?(i?=?0;?i?<?Sector_Nums;?i++) { if?(SD_WriteDisk(buf,?i,?1)) { printf("Wr?%d?sector?fail\n",?i); } else { printf("Wr?%d?sector?success\n",?i); } if?(SD_ReadDisk(Readbuf,?i,?1)) { printf("Rd?%d?sector?fail\n",?i); } else { printf("Rd?%d?sector?success\n",?i); } if?(memcmp(buf,?Readbuf,?512)) { printf("?%d?sector?Verify?fail\n",?i); break; } } printf("end\n"); while(1); }
在主函数中,
eMMC_Change_Tran_Mode();
之前的步骤均可以正常运行,并且可以拿到卡的CID、CSD等卡参数,读到卡容量和扇区大小。但是调用
SD_WriteDisk(buf,i,1)
SD_ReadDisk(Readbuf,i,1)
等函数就会失败,直接返回fail。
请问应该如何解决?这个问题是否跟分区有关?需要切换到EMMC的UAR区才能进行读写?但是我看ST的参考EMMC例程似乎也没有进行切换,就可以顺利读写了?
热门产品 :
CH390:以太网控制器芯片