关于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
1楼-- · 2019-07-21 00:11
 精彩回答 2  元偷偷看……
ylyn
2楼-- · 2019-07-21 01:10
回复【7楼】正点原子:
---------------------------------
不还意思一直没回原子哥,因为一直没有结果,速度我试了很多次四线模式还是行不通,我改变的是这个SDIO_Clock的大小,不知0道对不对,
还有一个问题是,我用的是战舰开发板上的ov7670摄像头,也一直在调,可是我移植完程序后,摄像头初始化成功了,但是我把每一个像素通过串口打印出来发现数据都一样,自己焊了一个底座,摄像头我是插到底座上头的411板子通过底座和摄像头相连。
Theone
3楼-- · 2019-07-21 02:14
回复【9楼】ylyn:
---------------------------------
我当初自己画的板子,也是用四线不行,后来我重新焊了一下sd卡座四线就没问题了,你首先要保证物理连接的正常。原子的程序是没问题的
ylyn
4楼-- · 2019-07-21 07:37
 精彩回答 2  元偷偷看……
ylyn
5楼-- · 2019-07-21 12:58
 精彩回答 2  元偷偷看……
lle
6楼-- · 2019-07-21 16:08
我也遇到了这样的问题,怎样解决的,谢谢;

一周热门 更多>