TQ-ZQL 发表于 2012-4-10 17:00 
一般做法大概是先将数据保存到内存中,然后再将数据做相关处理(编码之类的)。再放到其它介质(如sd卡)中 ...
再次感谢热心的版主回答小菜的问题,但是我在读写SD卡的时候不太行。版主看看是怎么回事~:dizzy:
环境:2011年10月购的TQS3C2440,无OS裸奔中第10个实验Test_SDI;
问题:写成功读也成功,但是数据不对,全为FF FF 。。。
部分程序:
for(i=0;i<SDCARD_BUFF_SIZE;i++)
{
cTxBuffer = 0x0f;
}
if(Write_One_Block(0,(U32 *)cTxBuffer))
{
Uart_Printf("\nWrite 0 Block is OK!\n");
}
else
{
Uart_Printf("\nWrite 0 Block is Fail!\n");
}
Delay(500);
while( ((CardStatus=CMD13(SDCard.iCardRCA)) &0x100) !=0x100 )
Uart_Printf("\ncard status is %x\n",CardStatus);
for(i=0;i<SDCARD_BUFF_SIZE;i++)
{
cRxBuffer = 0x00;
}
if(Read_One_Block(0,(U32 *)cRxBuffer))
{
for(i=0;i<512;)
{
Uart_Printf("%02x ",cRxBuffer[i+3]);
Uart_Printf("%02x ",cRxBuffer[i+2]);
Uart_Printf("%02x ",cRxBuffer[i+1]);
Uart_Printf("%02x ",cRxBuffer[i+0]);
i += 4;
if(i%16==0)
Uart_Printf("\n");
}
Uart_Printf("\nRead 0 Block is OK!\n");
}
实验结果(部分):
0x1640007d
卡容量为:30400KB,29MB
Card sel desel OK!
Card Status is 0x900
Bus Width is 4bit
卡初始化完毕!
Write 0 Block is OK!
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
....
Read 0 Block is OK!
蹭的CMD13和延时是自己加的,我以为是SD卡没有写到里面,所以读出来还是这样,
但是加了延时还有读状态后,还是读出FF。。没有读出0F。。
实在是不知道什么原因呀。。
|