|
我在2440的开发板上使用SD卡用作U盘,在我的电脑上可以看到 <可移动磁盘>,也可以读写文件,但经常写一部分就出错,比如同时写200多个文件,写了几十个或100多个文件时(已经写进去的文件是好的,可以用读卡器读到),就出现错误。
停止仿真程序后发现错误出在读写SD卡上(USB通讯是好的)。
程序:
wt_cnt=0x00;
while(wt_cnt <512*block)
{
status=rSDIFSTA;
if((status&0x2000)==0x2000)
{
dat = *Rx_buffer++ < <24;
dat = dat|*Rx_buffer++ < <16;
dat = dat|*Rx_buffer++ < <8;
dat = dat|*Rx_buffer++;
rSDIDAT = dat;
wt_cnt = wt_cnt + 4;
status = rSDIFSTA;
}
}
SDI寄存器中内容:
0x5a000000 00000011 00000003 00084400 00000259
0x5a000010 00000019 00000900 31202020 10E7C037
0x5a000020 D5008C27 007FFFFF 00000200 00133040
0x5a000030 00000000 00000010 00000040 00000000
0x5a000040 00000000 00000000 00000000 00000000
出现的情况:写0x40个数据块时,SDIDCNT(0X5A000030)已经计数到0,SDIDSTA(0x5a000034)也检测
到数据结束(0x10),但是wt_cnt只计数到0x00004040(40个数据块应该为0x00008000),然后就
在这进行死循环,不知为什么wt_cnt没有计数到0x00008000?
此时FIFO(0x5a000030)中已有0x40个数据,但是不再往SD卡中写入,所以内存中数据也就不能再
写入FIFO中,程序出现死循环。
高手们帮帮忙啊!!!!!!
|
|