OpenEdv-开源电子网

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

原子大哥,所谓的SD卡的命令参数是什么东西呢?

[复制链接]

31

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2012-5-18
在线时间
6 小时
发表于 2012-5-23 08:45:06 | 显示全部楼层 |阅读模式

 比如说你例程里面的:u8 SD_SendCmd(u8 cmd, u32 arg, u8 crc),arg和crc有些什么意义呢?

并且我不大懂为啥要

    SD_SPI_ReadWriteByte(cmd | 0x40);//分别写入命令
    SD_SPI_ReadWriteByte(arg >> 24);
    SD_SPI_ReadWriteByte(arg >> 16);
    SD_SPI_ReadWriteByte(arg >> 8);
    SD_SPI_ReadWriteByte(arg);
    SD_SPI_ReadWriteByte(crc);

这样处理。为何CMD要将bit3置1呢? 且arg为啥是32位的呢?,,,,crc又是起什么作用呢?

比如说复位部分

do
 {
  r1=SD_SendCmd(CMD0,0,0x95);//进入IDLE状态
 }while((r1!=0X01) && retry--);       

为啥不是发个CMD0就OK呢?反而还要发个crc=0x95的数据过去呢?且书上不是说禁止使用crc吗、、、 

谁来买我的火柴.....
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-5-24 09:00:42 | 显示全部楼层
回复【11楼】lsj9383:
---------------------------------
男人别轻易说自己不行了...
你懂的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-5-23 09:22:24 | 显示全部楼层
禁止CRC是在之后禁止的,有些指令是一定需要CRC的,比如说这个CMD0,就必须发送CRC.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-5-23 09:44:24 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
那么发0x95是个什么含义呢?
我看见其他很多指令都是发CRC为0x01的数据,那是个什么含义呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-5-23 09:53:35 | 显示全部楼层
CRC值.
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-5-23 10:08:13 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
额,,,好嘛,虽然简直不懂发0x01或0x95是校验什么、、是否是固定的呢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-5-23 10:22:57 | 显示全部楼层
对固定的数据,是固定的CRC.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-5-23 18:16:00 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
亲~那么为啥要
SD_SPI_ReadWriteByte(cmd | 0x40);//分别写入命令
 
这样呢? 不直接写cmd可以吗?或下干嘛呐?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-5-23 21:31:56 | 显示全部楼层
回复【7楼】lsj9383:
---------------------------------
这个,看SD卡的指令说明.
什么东西都是源自手册的,不会凭空出现,也不能凭空消失,存在即有道理.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-5-23 21:36:04 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
大哥,就是没看懂嘛........就是知道有他的道理才问是什么道理啊、、
复位后IDLE位为1,处于空闲状态,初始化指令后,要使其IDLE位为0,能否理解为初始化后 SD卡就已不再处于空闲状态呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-5-23 21:48:28 | 显示全部楼层
回复【9楼】lsj9383:
---------------------------------
我已经给你指了明路,走不走是你自己的事情.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-5-24 01:19:28 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
大哥 我快不行了,我在程序最开始往SD中的第0个地址写512个数据,但是我读第0个地址,怎么读都是0x09,但是我单步运行,一步一步的来,却可以成功读出数据、、全速运行就不行,简直要人崩溃呀!
回复 支持 反对

使用道具 举报

27

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
300
金钱
300
注册时间
2012-9-11
在线时间
31 小时
发表于 2012-10-15 18:08:24 | 显示全部楼层
回复【7楼】lsj9383:
---------------------------------
SD_SPI_ReadWriteByte(cmd | 0x40);//分别写入命令 
命令总共48位,分六次写入,且高位在前,这是高八位写入,按位或0x40,这一位设置为1是指主机给sd卡的命令
回复 支持 反对

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
发表于 2013-8-13 19:58:41 | 显示全部楼层
看这个:

SanDisk Secure Digital (SD) Card Product Manual, Rev. 2.2

回复 支持 反对

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
发表于 2013-8-13 20:17:08 | 显示全部楼层
起始位|host|命令|参数|CRC7|结束位;
cmd0不带参数是0x40 00 00 00 00 ,进行crc7计算得到0x4a,0x4a左移一位,得到0x94,因为末尾总是结束位,为1,故0x94 | 0x01 = 0x95
回复 支持 反对

使用道具 举报

7

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-9-24
在线时间
0 小时
发表于 2013-9-24 15:59:08 | 显示全部楼层

新人报道,挺热闹哈~~~呵呵

回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-9-18
在线时间
2 小时
发表于 2013-10-2 19:18:05 | 显示全部楼层
回复【15楼】EDA3rd:
---------------------------------
谢谢你的讲解
回复 支持 反对

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2012-10-14
在线时间
0 小时
发表于 2013-12-12 20:28:09 | 显示全部楼层
回复【15楼】EDA3rd:
起始位|host|命令|参数|CRC7|结束位;cmd0不带参数是0x40 00 00 00 00 ,进行crc7计算得到0x4a,0x4a左移一位,得到0x94,因为末尾总是结束位,为1,故0x94 | 0x01 = 0x95
---------------------------------
请问,你知道这个CRC7是怎么算出来的么?在SD卡协议说明书里有介绍关于CRC7校验的计算过程,但是里面的x是取得什么值啊?
回复 支持 反对

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
发表于 2013-12-19 17:42:01 | 显示全部楼层
X不是取值,是生成多项式的一个位标记
相关信息请看:
http://txyl.jpkc.zstu.edu.cn/zhidao/08-1869.html
请百度CRC,在百度百科里介绍的很详细了,不用管那么多理论,照着方法算出来行了
回复 支持 反对

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
发表于 2013-12-19 17:42:21 | 显示全部楼层
回复【18楼】fgq369:
---------------------------------
X不是取值,是生成多项式的一个位标记 
相关信息请看: 
http://txyl.jpkc.zstu.edu.cn/zhidao/08-1869.html 
请百度CRC,在百度百科里介绍的很详细了,直接看生成方法,不用管那么多理论,照着方法算出来行了
回复 支持 反对

使用道具 举报

43

主题

278

帖子

1

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2013-12-27
在线时间
0 小时
发表于 2014-1-7 16:50:44 | 显示全部楼层



水的比较多。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 23:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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