找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3219|回复: 16
收起左侧

用STC12单片机检测SD扩容假卡,要怎样实现呢?

[复制链接]
ID:283954 发表于 2021-2-13 03:46 | 显示全部楼层 |阅读模式
本帖最后由 dalaoshi 于 2021-2-13 16:03 编辑

这几天用STC12单片机成功启动了SD卡,从2G到32G都能用,而我手头还有几年前在某宝买到的所谓“扩容卡”,标明是2G,把歌曲写进去后,文件名都还在,就是歌曲打不开,上网搜寻才发现了有所谓扩容卡。

扩容卡可恶之处在于,写文件时不会发生错误,等写完了读不到才知道上当,花费消费者大量时间和精神,扩容卡最近闹得更凶,大量1T2T的卡,很便宜,很多人买了回去作测试,制作了大量视频在油管上劝人们不要购买,他们的测试办法是把大量文件抄进去,然后读出校验,非常费时,动辄几个小时甚至隔夜。

我想应该有办法用SPI与SD卡对话读出SD卡的标称容量和检测出实际容量,但找遍所有CMD却没有看到,是否还有什么SD-CMD没有公布?或者大家有什么建议。
回复

使用道具 举报

ID:678280 发表于 2021-2-14 11:34 | 显示全部楼层
对楼主的问题有兴趣,但对我来说太高深。仅为一顶。
回复

使用道具 举报

ID:743654 发表于 2021-2-18 15:42 | 显示全部楼层
最近也在调试SD卡,一直卡在初始化CMD0写入失败,楼主的例程可否提供参考
回复

使用道具 举报

ID:283954 发表于 2021-2-18 18:39 | 显示全部楼层
cheney03:

这篇文章很好,有C的代码:

http://www.51hei.com/bbs/dpj-186038-1.html“单片机软件SPI和硬件SPI读写SD卡,TF卡测试程序”

如果你是卡在CMD0,多半是接线错误,或者接触不良。CMD0命令很简单。
回复

使用道具 举报

ID:743654 发表于 2021-2-19 15:54 | 显示全部楼层
1.jpg
图1用SD卡模块连接(两个模块都试了),CMD0写入后,读不到返回值0x01,初始化不成功

2.jpg

图2 SPI接口直接焊在SD卡对应引脚上,写入CMD0后,能读取到返回值0x01,初始化成功
回复

使用道具 举报

ID:743654 发表于 2021-2-19 16:00 | 显示全部楼层
1.png
2.png

我加入了串口调试,SPI直接 接SD卡对应引脚 初始化成功
回复

使用道具 举报

ID:743654 发表于 2021-2-19 16:08 | 显示全部楼层
1.png
例程中主函数 通过P0接LED灯状态来检查SD卡读写数据是否正确,貌似这样无法判断数据有无写入或读出。
因为缓存数组中已经写入了512个0x7F,不管SD卡是否读写数据,P0=BUFFER_DATA[0];P0的结果都是0x7F

还有一个问题:SD卡写入数据后,用什么软件可以看到哪个扇区写入的具体内容
回复

使用道具 举报

ID:283954 发表于 2021-2-20 00:24 | 显示全部楼层
我在实验中还发现,连接线的长度长一些会偶尔会发生错误,另外要测量一下供电压,我用开发板在初期实验时给SD卡的电压才2V,折腾了半天,最好有逻辑分析仪可以显示四个脚的逻辑图,多试几次一定会成功,CMD0已经成功了,那就没有问题了。
回复

使用道具 举报

ID:743654 发表于 2021-2-20 10:04 | 显示全部楼层
非常感谢楼主,确实是杜邦线过长,换了短的,通讯正常,成功读写SD卡。
回复

使用道具 举报

ID:743654 发表于 2021-2-20 10:28 | 显示全部楼层
请问你逻辑分析仪是怎么抓取时序图的,我的没信号。我看你另外一个帖子中,写入每个命令的时序图都能抓取到。
1.png

回复

使用道具 举报

ID:743654 发表于 2021-2-20 10:32 | 显示全部楼层
2.png

我主程序中执行到最后是while(1);死循环,逻辑分析仪抓取不到前面SD卡写CMD0等初始化各个命令的时序图
回复

使用道具 举报

ID:828160 发表于 2021-2-20 12:57 | 显示全部楼层
SD卡的真实容量很好测,用单片机写程序就可以实现
回复

使用道具 举报

ID:283954 发表于 2021-2-21 17:28 | 显示全部楼层
cheney03,

C语言我只看懂一些,可能是死机了。你把各个命令逐个试,这样才知道究竟卡在哪里,单单一个写动作就有很多步骤。逻辑分析仪取样2M不够大,至少要8M才容易抓到波形。
回复

使用道具 举报

ID:743654 发表于 2021-2-22 15:11 | 显示全部楼层
我在网上下了一个工具,可以检测是否为扩容卡。工具的原理就是将存储设备全部写满数据,然后对这些写入的数据进行校验。这样,不管是内存卡上有“物理坏块”还是“扩容卡”,都逃不过此款工具的检测。按这个原理可以给楼主提供一个思路,看有没办法通过SPI写的方式 来检测

SD卡检测.zip

202.17 KB, 下载次数: 5

回复

使用道具 举报

ID:57657 发表于 2021-2-22 16:16 | 显示全部楼层
向最后一个扇区写数据,写进去读不出来1000%是假的。
回复

使用道具 举报

ID:57657 发表于 2021-2-22 16:57 | 显示全部楼层
cheney03 发表于 2021-2-20 10:04
非常感谢楼主,确实是杜邦线过长,换了短的,通讯正常,成功读写SD卡。

高速信号,远距离传输都是要用屏蔽线的。
回复

使用道具 举报

ID:283954 发表于 2021-2-24 05:17 | 显示全部楼层
谢谢各位的提议,我这几天也看了不少资料,原来做扩容卡是用一个生产厂家生产SD卡的软件随便就可以设定的,根本就不是什么了不起的高科技,是操作系统层面的东西,若是直接与SD卡沟通,正如npn君所言,直接向标称容量的扇区写数据再读回,若发生错误就是假卡了。但有大量的SD卡用户却被无良厂家所害,旅游所拍的照片不见了,快乐的假期变成梦魇,还得用大量时间证明卡的容量是假的,唉!
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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