当前位置:  技术问答>linux和unix

SD 卡读写问题?高分求助

    来源: 互联网  发布时间:2016-03-07

    本文导语:  我使用的是AT91RM9200控制器,ATMEL的ARM,遵循的是SDcard的1。0标准 现在自己在做驱动 在我完成对SD卡的初始化之后,想对其做测试,测试代码如下 int AT91F_Test(void) { unsigned int Max_Read_DataBlock_Length; unsigned int Relative_A...

我使用的是AT91RM9200控制器,ATMEL的ARM,遵循的是SDcard的1。0标准
现在自己在做驱动

在我完成对SD卡的初始化之后,想对其做测试,测试代码如下

int AT91F_Test(void)
{
unsigned int Max_Read_DataBlock_Length;
unsigned int Relative_Address;
unsigned int RData;
int j=0,i=0;
    AT91F_MCI_MMC_SelectCard(&MCI_Device,MCI_Device.pMCI_DeviceFeatures->Relative_Card_Address);//选择卡
  Max_Read_DataBlock_Length =(MCI_Device.pMCI_DeviceFeatures->Max_Read_DataBlock_Length);

    AT91C_BASE_MCI->MCI_MR |= (Max_Read_DataBlock_LengthMCI_TDR=Buffer[j];
       }
    }
    printf("j %drn",j);
    printf("send tdr over!rn");
    AT91F_MCI_SendCommand(&MCI_Device,AT91C_READ_SINGLE_BLOCK_CMD,5*Max_Read_DataBlock_Length);

    for(j=0;jMCI_SR>>1)&0x1)//检测接收状态位,准备接收数据,问题就出在这里,假如我不检测接收状态位直接读,则在我读一次接收寄存器之后,状态位显示为接收到新的数据,读两次之后则又变为没有收到新的数据,并且一直按照这种规则循环。
    {
       AT91F_MCIDeviceWaitReady(100);
       RData=AT91C_BASE_MCI->MCI_RDR;
       RData=AT91F_MCI_SWAP(RData);
       printf("RData is %x,%d !rn",RData,j);
       printf("AT91C_BASE_MCI->MCI_SR is %x!rn",AT91C_BASE_MCI->MCI_SR);
       j++;
//      }
    }
    AT91F_MCIDeviceWaitReady(100);
    Delay_time(1000);  
return TRUE;
}

问题在:
1、假如我每次只写一个数,然后跳过状态检测立即读出来(如果检测状态位,仍然过不去),则结果正确。
2、假如我每次写一个块的数据,然后读,无论怎样都不正确。


在这里我采用的是轮询的方式检测其读写状态,写操作能够完成。

但是读操作始终不能进行,状态寄存器显示没有收到数据。假如我

跳过状态检测直接读数据寄存器,也能够读到数据,并且我读一次接受数据寄存器之后,状态寄存器则变为接受到新的数据,只是数据不对。




|
路过,顶一下.

|
你是用的4bit还是1bit模式来做的,如果一种不行换另外一种试一下

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix/Linux下c++ boost thread库读写锁介绍
  • 自旋锁和读写自旋锁、信号量和读写信号量分别有什么区别?
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • linux 下能否读写.dbf 或者.xls格式的文件,怎样读写?高手指点,拜谢!!!
  • 最新Windows下c++读写锁SRWLock介绍
  • CentOS5.2 如何设置目录读写权限,要求子目录均可以读写。
  • windows下c/c++读写锁实现原理及代码参考
  • SD卡的驱动只能支持读写2GB的卡,如果要读写更大容量,该修改什么地方?
  • 博客 iis7站长之家
  • 串口读写,双方同时读写控制问题(linux内核)。
  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 在中断服务程序里可以进行文件的读写操作么?
  • linux多线程无法进行阻塞方式的读写操作
  • 有谁知道,Linux下文件的读写原理是怎样的?急
  • 文件或文件夹,如何指定某用户的读写权限?
  • socket是否可以同时读写
  • 如何通过LD_PRELOAD降低程序的读写速度
  • 请问JAVA如何读写注册表
  • 怎样编程实现I/O端口的读写?
  • 如何以独占式读写文件?
  • 父子进程读写文件问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3