4377|9

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

sd卡读写 [复制链接]

u8 MSD_ReadBlock(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead)
{
  u32 i = 0;
  u8 rvalue = MSD_RESPONSE_FAILURE;

  /* MSD chip select low */
  MSD_CS_LOW();
  /* Send CMD17 (MSD_READ_SINGLE_BLOCK) to read one block */
  MSD_SendCmd(MSD_READ_SINGLE_BLOCK, ReadAddr, 0xFF);

  /* Check if the MSD acknowledged the read block command: R1 response (0x00: no errors) */
  if (!MSD_GetResponse(MSD_RESPONSE_NO_ERROR))
  {
    /* Now look for the data token to signify the start of the data */
    if (!MSD_GetResponse(MSD_START_DATA_SINGLE_BLOCK_READ))
    {
      /* Read the MSD block data : read NumByteToRead data */
      for (i = 0; i < NumByteToRead; i++)
      {
        /* Save the received data */
        *pBuffer = MSD_ReadByte();
        /* Point to the next location where the byte read will be saved */
        pBuffer++;
      }
      /* Get CRC bytes (not really needed by us, but required by MSD) */
      MSD_ReadByte();
      MSD_ReadByte();
      /* Set response value to success */
      rvalue = MSD_RESPONSE_NO_ERROR;
    }
  }

  /* MSD chip select high */
  MSD_CS_HIGH();
  /* Send dummy byte: 8 Clock pulses of delay */
  MSD_WriteByte(DUMMY);
  /* Returns the reponse */
  return rvalue;
}
其中有一句if (!MSD_GetResponse(MSD_START_DATA_SINGLE_BLOCK_READ))为什么不成立
此帖出自stm32/stm8论坛

最新回复

                                 chenjinb03@163.com   详情 回复 发表于 2008-3-20 12:55
点赞 关注
 

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

用的是哪家的SD卡?容量是多大的?

                                  
此帖出自stm32/stm8论坛
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

sms064fff5

                                  
此帖出自stm32/stm8论坛
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 

这是什么?还是不明白你用的是哪家的SD卡?容量是多大?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 

st开发板 stm32f10x-128k-eval 自带的

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 

如果使用的是ST的开发板和自带的SD卡,问题就好办了

先问几个问题:
1)你是否改过程序?这个问题总是出现吗?用的是什么程序?
2)是否试过其它SD卡?也有同样问题吗?
3)是否试过把板上自带的卡通过其它读卡器操作成功?

你是通过什么渠道拿到这个板的?如果上述诊断后都不能解决问题,你可以找提供给你板子的代理商寻求帮助,他们解决不了会交给我们处理,谢谢。
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 

我们有用过别的卡

我就是st代理的技术。
  这个程序 我只是把先前一个调试flash的程序 驱动和main改为sd卡的

读不行
写语句
MSD_ReadBlock(Rx_Buffer, Memory_Offset, 512);
为什么 字节必须是512才可以
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 

为什么字节必须是512才可? 因为SD卡要求必须以512字节操作

请参考SD卡的技术资料,这个限制不是ST定的。

估计是因为SD卡里用的是NAND Flash有关,这样可以简化SD卡内部电路的设计。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 

那个sd卡演示程序是不完整的 。

  程序不全兼容MMC,SD1.0,SD2.0或者是SD2.0大容量卡,如果只是
if (!MSD_GetResponse(MSD_START_DATA_SINGLE_BLOCK_READ))不成立,尝试多发几次读命令,反复判断MSD_GetResponse(MSD_START_DATA_SINGLE_BLOCK_READ)的值,个人觉得这个sd卡程序还是得重写,我这写了一下,已调试通过。大家有兴趣的可以一起讨论。jynkelan@yahoo.com.cn
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 

能否共享一下 向你学习

                                 chenjinb03@163.com
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表