关于sdio初始化sd成功后,但是读取扇区失败的问题,请大家帮帮忙

2019-07-20 01:28发布

现在在用f411的板子,几天前想参考原子大哥的407例程修改一个sd的程序,把芯片对应的引脚修改了(因为我没有外部flash所以注释了初始化ccm内存池,没有用tft屏,关于屏的也去掉了,都改用串口打印了,下面是我的主函数),我的 [mw_shl_code=c,true]int main(void) { u8 key; u32 sd_size; u8 t=0; u8 *buf; buf=mymalloc(0,512); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(168); //初始化延时函数 uart_init(115200); //初始化串口波特率为115200 my_mem_init(SRAMIN); //初始化内部内存池 // my_mem_init(SRAMCCM); //初始化CCM内存池 LED_Init();//LED初始化 GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET);//点亮LED小灯 while(SD_Init())//检测不到SD卡 { printf("SD Card Error!"); delay_ms(500); printf("Please Check! "); delay_ms(500); } show_sdcard_info(); //打印SD卡相关信息 printf("SD Card OK "); while(SD_ReadDisk(buf,0,1)); //读取0扇区的内容 printf("SECTOR 0 DATA: "); for(sd_size=0;sd_size<100;sd_size++)printf("%x ",buf[sd_size]);//打印0扇区数据 printf(" DATA ENDED "); while(1); } [/mw_shl_code] 初始化sd卡也成功了

这是用串口打印出来的sd卡信息,可是读扇区却出了问题,debug发现是程序在这里进行判断后返回,
为什么接收起始位会错误呢?小弟是个新手.........请大侠们帮帮忙,后来在发送发送CMD17后sdio寄存器STBITERR位就发生了变化,可是还是不知道什么原因,已经在这里卡了好多天了,希望您能帮帮忙,非常感谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
ylyn
2019-07-20 17:33
回复【4楼】正点原子:
---------------------------------
原子哥我经过又是一个上午的折腾终于有了一点眉目,他返回的错误是在宽线模式下,有的线检测不到起始信号,我在想是不是sd卡或者底座有毛病?能上电我觉的cmd线肯定没问题,于是我把4线模式换成单线模式,可以正常工作了,换了几个sd卡结果都是一样,可是没有底座了,正在买...您说有可能是他的原因吗?

一周热门 更多>