tkking 发表于 2013-7-31 10:42:57

关于TQ2440系统自带的SD卡读写问题

本帖最后由 tkking 于 2013-7-31 10:49 编辑

我现在是在裸奔中,对SD卡的读操作能正确验证,但是写却不行,不知道有没有同志有过相同的经验。
运行自带的程序也不能写。。。
CMD8:rSDICSTA=0xc00, rSDIRSP0=0x0
SD_V1X_CARD   //SD卡类型
SD is ready
CID
MID = 1
OLD = 20545
生产厂家:S128BA:h?
生产日期:203,10
SD Card RCA = 0xabf5
SD Frequency is 25000000Hz
Read Card CSD OK!
0x005d0132
0x135983d3
0xf6da4fff
0x1640009b
卡容量为:669890048KB,654189MB   //SD卡容量为128M的 怎么读出来不对??
Card sel desel OK!
Card Status is 0x900
Bus Width is 4bit
卡初始化完毕!

wbz073 发表于 2013-7-31 11:26:29

我们的资料发布区有相应的脚本去读写SD卡,你去找找

tkking 发表于 2013-7-31 17:15:56

现在能写了,直接用U8 Write_One_Block(U32 Addr,U32* TxBuffer)可以写128个字;
但是U8 Write_Mult_Block(U32 Addr,U32 DatSize,U32* TxBuffer)函数 DatSize=256的时候却只能写128个字,512的时候写256个字。不知道为什么。
希望有知道的告诉下。
数组定义正确。可排除。
U16 i = 0;
        U32 status = 0;

        rSDIDTIMER=0x7fffff;                // Set timeout count
        rSDIBSIZE=0x200;                        // 512byte(128word)        rSDIFSTA = rSDIFSTA|(1<<16); // FIFO reset
        rSDIDCON = (1<<SDCard_BlockSize)|(3<<12)|(1<<14)|(1<<16)|(1<<17)|(1<<20)|(2<<23);        
                while((rSDIDCON&0x4000)!=0x4000)
        {
                rSDIDCON = rSDIDCON| 0x4000;
        }
       
        if(CMD25(Addr)!=1)//发送写多块操作指令
                return 0;
        else
                Uart_Printf("CMD25 IS OK!\n");
               
        while(i<DatSize)
        {//开始传递数据到缓冲区
                status = rSDIFSTA;
                if((status&0x2000)==0x2000)
                {//如果发送 FIFO 可用,即 FIFO 未满
                        rSDIDAT = *TxBuffer;
                        TxBuffer++;
                        i++;
                }
        }
        rSDIDCON = rSDIDCON&~(7<<12);
       
        while(CMD12()!=1);//发送结束指令
       
        do
        {//等待数据发送结束
                status = rSDIDSTA;
        }while((status&0x2)==0x2);
       
        rSDIDSTA = status;
        Uart_Printf("status %x\n",status);
       
        if((status&0x89)!=0x00)
        {
                Uart_Printf("send fail!\n");
                return 0;
        }
        else
        {
                Uart_Printf("send ok!\n");
                return 1;
        }
}
难道是红色的问题?

tkking 发表于 2013-7-31 17:24:50

wbz073 发表于 2013-7-31 11:26 static/image/common/back.gif
我们的资料发布区有相应的脚本去读写SD卡,你去找找

希望管理员帮我把贴子移到无OS版去。
谢谢。

tkking 发表于 2013-7-31 22:13:21

太坑爹了!上午调试单块写的时候不行,吃了饭后就可以了。
下午调试多块写的不的行,晚饭吃了后就可以了!
什么都没改动!
坑爹啊!
页: [1]
查看完整版本: 关于TQ2440系统自带的SD卡读写问题