你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3987|回复: 1

从SD卡读出一个字符,他怎么也算是一个字节???

[复制链接]

227

主题

601

回帖

32

蝴蝶豆

金牌会员

最后登录
2020-11-10
发表于 2010-7-12 09:27:39 | 显示全部楼层 |阅读模式
sd卡读出数据后,如何送入ILI9325的屏进行显示
                                    请教高手:我现在可以从SD卡中读出数据(抄袭的),但是从SD中读出一个字符他也会认为是一个字节的数据,请问这个要怎么改啊?不知道是不是这个读出一个字节的函数有问题还是???望高人指点!!
            我的QQ:519212866
             
            unsigned char bdata _dat;
            sbit _dat7 = _dat^7;
            sbit _dat6 = _dat^6;
            sbit _dat5 = _dat^5;
            sbit _dat4 = _dat^4;
            sbit _dat3 = _dat^3;
            sbit _dat2 = _dat^2;
            sbit _dat1 = _dat^1;
            sbit _dat0 = _dat^0;
             
             
            unsigned char SD_spi_read() //SPI读一个字节
            { 
             SD_SO=1;
             SD_SCL=1;
             SD_SCL=0;
             _dat7=SD_SO;
             SD_SCL=1;
             SD_SCL=0;
             _dat6=SD_SO;
             SD_SCL=1;
             SD_SCL=0;
             _dat5=SD_SO;
             SD_SCL=1;
             SD_SCL=0;
             _dat4=SD_SO;
             SD_SCL=1;
             SD_SCL=0;
             _dat3=SD_SO;
             SD_SCL=1;
             SD_SCL=0;
             _dat2=SD_SO;
             SD_SCL=1;
             SD_SCL=0;
             _dat1=SD_SO;
             SD_SCL=1;
             SD_SCL=0;
             _dat0=SD_SO;
             
             return (_dat);
            }
             
            unsigned char SD_Read_Sector(unsigned long addr,unsigned char *buffer)//从SD卡的指定扇区中读出512个字节,使用CMD17(17号命令)
            {
             unsigned int j;
             unsigned char time,temp;
             unsigned char pcmd[]={0x51,0x00,0x00,0x00,0x00,0xff}; //CMD17的字节序列
              
             addr16)>>8);   //12T  0.13835ms
             pcmd[2] = (unsigned char)((unsigned int)(addr>>16));      //10T  0.00271ms
             pcmd[3] = (unsigned char)(((unsigned int)addr)>>8);       //7T   0.0038ms
             //pcmd[4] = (unsigned char)((unsigned int)addr);            //5T   0.00271ms
            
             SD_CS=0;//打开片选
             time=0;
             do
             { 
              temp=SD_Write_Cmd(pcmd); //写入CMD17
              time++;
              if(time==TRY_TIME)
              {
               return(READ_BLOCK_ERROR); //读块失败
              }
             }while(temp!=0);
                  
             while (SD_spi_read()!= 0xfe); //一直读,当读到0xfe时,说明后面的是512字节的数据了
             for(j=0;jpfi->FileSize) len=pfi->FileSize-offset;
              znFAT_Seek_File(pfi,offset);
             
              znFAT_ReadSector(pfi->FileCurSector,znFAT_Buffer);
              for(i=pfi->FileCurPos;iBytesPerSector;i++)
              {
               if(counter>=len)
               {
                 return len;
               }
               (*pfun)(znFAT_Buffer);
               counter++;
               pfi->FileCurPos++;
               pfi->FileCurOffset++;
              }
              if(pfi->FileCurSector-(SOC(pfi->FileCurCluster))!=(pArg->SectorsPerClust-1))
              {
               for(j=pfi->FileCurSector+1;jFileCurCluster))+pArg->SectorsPerClust;j++)
               {
                znFAT_ReadSector(j,znFAT_Buffer);
                pfi->FileCurSector=j;
                for(i=0;iBytesPerSector;i++)
                {
                 if(counter>=len)
                 {
                   return len;
                 }
                 (*pfun)(znFAT_Buffer);
                 counter++;
                 pfi->FileCurPos++;
                 pfi->FileCurOffset++;
                }
               }
              }
              temp=(len-counter)/(pArg->BytesPerSector*pArg->SectorsPerClust);
              for(k=0;kFileCurCluster=znFAT_GetNextCluster(pfi->FileCurCluster);
               for(j=(SOC(pfi->FileCurCluster));jFileCurCluster))+pArg->SectorsPerClust;j++)
               {
                znFAT_ReadSector(j,znFAT_Buffer);
                pfi->FileCurSector=j;
                for(i=0;iBytesPerSector;i++)
                {
                 if(counter>=len) 
               {
                   return len;
                 }
                 (*pfun)(znFAT_Buffer);
                 counter++;
                 pfi->FileCurOffset++;
              pfi->FileCurPos++;
              pfi->FileCurPos%=pArg->BytesPerSector;
                }
               }   
              }
              pfi->FileCurCluster=znFAT_GetNextCluster(pfi->FileCurCluster);
              temp=(SOC(pfi->FileCurCluster))+((len-counter)/pArg->BytesPerSector);
              pfi->FileCurSector=(SOC(pfi->FileCurCluster));
              for(j=(SOC(pfi->FileCurCluster));jFileCurSector=j;
               for(i=0;iBytesPerSector;i++)
               {
                if(counter>=len)
                {
                  return len;
                }
                (*pfun)(znFAT_Buffer);
                counter++;
                pfi->FileCurPos++;
                pfi->FileCurPos%=pArg->BytesPerSector;
                pfi->FileCurOffset++;
               }  
              }
              pfi->FileCurSector=j;
              znFAT_ReadSector(pfi->FileCurSector,znFAT_Buffer);
              temp=len-counter;
              for(i=0;i=len)
               {
                 return len;
               }
               (*pfun)(znFAT_Buffer);
               counter++;
               pfi->FileCurPos++;
               pfi->FileCurPos%=pArg->BytesPerSector;
               pfi->FileCurOffset++; 
              }
             }
             else
             {
              len=0;
             }
             return len;
            } 
             
            
             
             
            
            
            
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2010-7-12 16:46:13 | 显示全部楼层

RE:从SD卡读出一个字符,他怎么也算是一个字节???

读出来应该是1个字节,是双字节。你可以查看你输出的字节。
回复 支持 反对

使用道具 举报

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版