OpenEdv-开源电子网

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

关于SD卡SPI模式下的crc校验

[复制链接]

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2014-2-27
在线时间
71 小时
发表于 2015-1-22 22:20:50 | 显示全部楼层 |阅读模式
[mw_shl_code=c,true]看到SD卡的crc校验时,查了相关资料,总算弄懂了些,于是写了个计算方法,如果哪里不对还请指正。 [/mw_shl_code] [mw_shl_code=c,true]
[mw_shl_code=c,true]/*返回SD卡命令的第6个字节,即crc<<1+1*/ #define gx 137 // 1001001 x7+x3+1 u8 GetCRC(u8 cmd,u32 dat) { u8 crc; long long tmp; tmp=cmd|0x40; tmp=(tmp<<32)+dat; tmp<<=7; crc=div2(tmp,gx); crc=(crc<<1)+1; return crc; } /*模二除法,a被除数,b除数*/ long long div2(long long a,long long b) { u8 ai,bi; if(b==0) return 0; ai=bitn_t(a); bi=bitn_t(b); for(;;) { a=a^(b<<(ai-bi)); ai=bitn_t(a); if(a<b) return a; } } /*返回dat的位数(二进制)*/ u8 bitn_t(long long dat) { u8 i; for(i=1;i<=64;i++) { dat>>=1; if(dat==0) break; } return i; }[/mw_shl_code]


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-22 23:38:06 | 显示全部楼层
谢谢分享。最好出一个实际使用结果的对比。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-1-23 07:55:15 | 显示全部楼层
谢谢分享!!!


同意原子哥说法,出个具体的例程说明效果就最好了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2014-2-27
在线时间
71 小时
 楼主| 发表于 2015-1-23 09:19:30 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
SD_SendCmd(CMD0,0,0x95);//进入 IDLE 状态
GetCRC(0,0)=0x95      
SD_SendCmd(CMD8,0x1AA,0x87)
GetCRC(8,0x1aa)=0x87
以上两个命令的校验码验证是对的,但是还有好多命令发送的校验码都是0x01,这个算出来是不对的,不知道为什么。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-24 00:01:53 | 显示全部楼层
回复【4楼】xgzxgyf:
---------------------------------
那就有待观察了,呵呵
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2014-2-27
在线时间
71 小时
 楼主| 发表于 2015-4-2 22:50:29 | 显示全部楼层


应该是没问题的,因为手册里说SPI模式默认crc校验是关闭的,需要发送CMD59来开启。但是在SPI模式下CMD0、CMD8以及发送ACMD41之前但不包括CMD55,是需要校验的。所以程序中只有CMD0和CMD8的校验码,其它的都是0X01。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 03:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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