现在在用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位就发生了变化,可是还是不知道什么原因,已经在这里卡了好多天了,希望您能帮帮忙,非常感谢!
---------------------------------
原子哥我经过又是一个上午的折腾终于有了一点眉目,他返回的错误是在宽线模式下,有的线检测不到起始信号,我在想是不是sd卡或者底座有毛病?能上电我觉的cmd线肯定没问题,于是我把4线模式换成单线模式,可以正常工作了,换了几个sd卡结果都是一样,可是没有底座了,正在买...您说有可能是他的原因吗?
一周热门 更多>