OpenEdv-开源电子网

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

SDIO读卡第一个字节总是0

[复制链接]

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2014-7-16
在线时间
3 小时
发表于 2014-8-5 14:59:40 | 显示全部楼层 |阅读模式
5金钱
  采用SDIO模式读取SDHC(8G)卡,设置BLOCK大小为16,写BLOCK没有问题,但是读BLOCK的时候,第一个字节总是0;最奇怪的是,调用函数检查写入和读出的数据是否一致时,函数竟然通过了。求解释。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-5 22:49:52 | 显示全部楼层
帮顶。。。
不知道你为什么把BLOCK大小设置为16呢?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2014-7-16
在线时间
3 小时
 楼主| 发表于 2014-8-6 14:00:53 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
有效信息一组为16个字节,所以就把BLOCK设为16了。不过好像程序会自动改成512.
回复

使用道具 举报

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2014-7-16
在线时间
3 小时
 楼主| 发表于 2014-8-6 14:02:42 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
不过这个问题现在解决了。也不太明白。不知道您有没有SD卡读写的例程,不要直接操作寄存器的。其中最好有现成的BLOCK,或者BYTE读写的函数就好了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-6 23:14:17 | 显示全部楼层
回复【4楼】半城:
---------------------------------
我的都是直接一次操作512字节的,你读1个字节,直接用fatfs去实现就是了
不过他也是以512字节为单位访问的,只是丢了511个数据而已.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2014-7-16
在线时间
3 小时
 楼主| 发表于 2014-8-7 18:53:44 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
 我的数据特点是:每次存入的数据量比较少,只要16个字节就足够了。但是需要存入许多次,然后将所有数据统一读出。这样子的话用BLOCK是不是有一些浪费啊。
请问原子哥,SD卡可以按字节存取吗?如果可以的话,就方便多了。
回复

使用道具 举报

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2014-7-16
在线时间
3 小时
 楼主| 发表于 2014-8-7 19:06:51 | 显示全部楼层
还有一个问题,比如我写入10次数据,就有160个字节。掉电后,如果立即全部读出,数据是正确的;但是如果掉电后继续写入数据,没有及时读出数据,那么掉电之前的数据就被破坏了。这是什么问题啊?是不是分配的地址有问题?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-7 23:07:04 | 显示全部楼层
回复【6楼】半城:
---------------------------------
没做过按字节存储
你起始可以自己在内存做个buf,等大于等于512以后,才写SD卡,这效率更高.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-7 23:07:29 | 显示全部楼层
回复【7楼】半城:
---------------------------------
可能就是和你访问不规矩导致的吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 17:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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