| 现在能写了,直接用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;
 }
 }
 难道是红色的问题?
 |