打印
[STM32F1]

STM32F103VE+TF卡的SDIO问题

[复制链接]
3816|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddf6d|  楼主 | 2014-10-11 17:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ddf6d 于 2014-10-11 17:59 编辑

简单说,我用的ST官方驱动“stm32_eval_sdio_sd.c”版本4.4,TF卡容量为金士顿1GB,大概是2007年买的,格式化后为Fat32,簇大小512Byte。
用以下代码读从0地址连续读512Byte的数据进行测试:
void SD_TEST(void){
    Status = SD_Init();
    Status = SD_GetCardInfo(&SDCardInfo);
    Status = SD_SelectDeselect((uint32_t) (SDCardInfo.RCA << 16));
    Status = SD_EnableWideBusOperation(SDIO_BusWide_4b);
    Status = SD_SetDeviceMode(SD_DMA_MODE);  
         if (Status == SD_OK)
          {
        // 从地址0开始读取512字节  
            Status = SD_ReadBlock(Buffer_Block_Rx, 0x0,  512);
          }
          if (Status == SD_OK)
    {         
       // 返回成功的话,串口输出SD卡测试成功信息
                USART_OUT(USART1, " \r\n CardType is :%d ", SDCardInfo.CardType );   
              USART_OUT(USART1," \r\n CardCapacity is :%d ", SDCardInfo.CardCapacity );
             USART_OUT(USART1, " \r\n CardBlockSize is :%d ", SDCardInfo.CardBlockSize );   
             USART_OUT(USART1, " \r\n RCA is :%d ", SDCardInfo.RCA);   
             USART_OUT(USART1, " \r\n ManufacturerID is :%d \r\n", SDCardInfo.SD_cid.ManufacturerID );
    }
}
仿真看数组Buffer_Block_Rx[]变量中的数据,跟我用WinHex软件查看的数据相同。同时,串口输出如下:
  
CardType is :1  
CardCapacity is :1584  
CardBlockSize is :512  
RCA is :2  
ManufacturerID is :27


首先,串口数据“CardCapacity is :1584  ”貌似很异常!!!,继续测试
但是我将 SD_ReadBlock函数中的地址更换为根目录的首地址0x01000000时,即 SD_ReadBlock(Buffer_Block_Rx, 0x01000000,  512);同样仿真看Buffer_Block_Rx[]中的数据,结果全都是0。
但是WinHex查看根目录的数据如下

我又将地址更换为:0x00000200,也就是第2号扇区的首地址,读回来的数据又正常,不知道为什么。
望大家积极发表见解


发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

13

帖子

2

粉丝