OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8893|回复: 3

急,大容量SD卡(16G/32G)支持不????

[复制链接]

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
发表于 2015-6-3 15:15:38 | 显示全部楼层 |阅读模式
5金钱
我在网站下的SDIO程序,用到8G/16G卡,写数据时,经常分区没有了。
主要是这几个函数
SD_Error SD_ReadBlock(uint32_t addr, uint32_t *readbuff, uint16_t BlockSize);
SD_Error SD_ReadMultiBlocks(uint32_t addr, uint32_t *readbuff, uint16_t BlockSize, uint32_t NumberOfBlocks);
SD_Error SD_WriteBlock(uint32_t addr, uint32_t *writebuff, uint16_t BlockSize);
SD_Error SD_WriteMultiBlocks(uint32_t addr, uint32_t *writebuff, uint16_t BlockSize, uint32_t NumberOfBlocks);

SD_Error SD_ReadBlock(u32 addr, u32 *readbuff, u16 BlockSize)
{
  SD_Error errorstatus = SD_OK;
  u32 count = 0, *tempbuff = readbuff;
  u8 power = 0;

  if (NULL == readbuff)
  {
    errorstatus = SD_INVALID_PARAMETER;
    return(errorstatus);
  }

  TransferError = SD_OK;
  TransferEnd = 0;
  TotalNumberOfBytes = 0;

  /* Clear all DPSM configuration */
  SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
  SDIO_DataInitStructure.SDIO_DataLength = 0;
  SDIO_DataInitStructure.SDIO_DataBlockSize = SDIO_DataBlockSize_1b;
  SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToCard;
  SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
  SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Disable;
  SDIO_DataConfig(&SDIO_DataInitStructure);
  SDIO_DMACmd(DISABLE);

  if (SDIO_GetResponse(SDIO_RESP1) & SD_CARD_LOCKED)
  {
    errorstatus = SD_LOCK_UNLOCK_FAILED;
    return(errorstatus);
  }
  
  if (CardType == SDIO_HIGH_CAPACITY_SD_CARD)
  {
    BlockSize = 512;
    addr /= 512;
  }



这里地址都是uint32_t,会不会是地址超过4G,是不是把分区表覆盖了。急急,有没有支持大容量SD卡(16G/32G)代码???

最佳答案

查看完整内容[请看2#楼]

最新的战舰V3 开发板有sdio例程,支持64G SD卡都没问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-6-3 15:15:39 | 显示全部楼层
最新的战舰V3 开发板有sdio例程,支持64G SD卡都没问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2012-3-30
在线时间
7 小时
 楼主| 发表于 2015-6-13 22:35:53 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
    我的问题比较奇怪,用的是SDIO保存串口发送来的数据,SD卡是32G的,大概1S也就20K数据,文件系统是fatfs 0.09,收到1K数据,就用fwrite函数写到文件中,程序跑个4-5个小时一般没有什么问题,跑到2-3天时候,必然出现到不到分区现象,报no filesystem 出错,开始怀疑是fat32格式4G问题,现在把地址都改成long long ,还是出现fat32分区被搞没了,找不到问题所在,不知道哪里出问题了??急啊!!这写文件,也能把文件系统干掉吗,真搞不懂了!!
回复

使用道具 举报

12

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2016-6-30
在线时间
36 小时
发表于 2017-6-12 21:48:03 | 显示全部楼层
正点原子 发表于 2015-6-3 15:15
最新的战舰V3 开发板有sdio例程,支持64G SD卡都没问题。

原理是什么啊。我看库函数的结构体地址变量也是32位的啊,怎么做到操作64G的啊?求解~
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-18 11:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表