找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2534|回复: 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没有公布?或者大家有什么建议。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

15#
ID:57657 发表于 2021-2-22 16:16 | 只看该作者
向最后一个扇区写数据,写进去读不出来1000%是假的。
回复

使用道具 举报

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

SD卡检测.zip

202.17 KB, 下载次数: 5

回复

使用道具 举报

13#
ID:283954 发表于 2021-2-21 17:28 | 只看该作者
cheney03,

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

使用道具 举报

12#
ID:828160 发表于 2021-2-20 12:57 | 只看该作者
SD卡的真实容量很好测,用单片机写程序就可以实现
回复

使用道具 举报

11#
ID:743654 发表于 2021-2-20 10:32 | 只看该作者


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

使用道具 举报

10#
ID:743654 发表于 2021-2-20 10:28 | 只看该作者
请问你逻辑分析仪是怎么抓取时序图的,我的没信号。我看你另外一个帖子中,写入每个命令的时序图都能抓取到。


回复

使用道具 举报

9#
ID:743654 发表于 2021-2-20 10:04 | 只看该作者
非常感谢楼主,确实是杜邦线过长,换了短的,通讯正常,成功读写SD卡。
回复

使用道具 举报

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

使用道具 举报

7#
ID:743654 发表于 2021-2-19 16:08 | 只看该作者

例程中主函数 通过P0接LED灯状态来检查SD卡读写数据是否正确,貌似这样无法判断数据有无写入或读出。
因为缓存数组中已经写入了512个0x7F,不管SD卡是否读写数据,P0=BUFFER_DATA[0];P0的结果都是0x7F

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

使用道具 举报

6#
ID:743654 发表于 2021-2-19 16:00 | 只看该作者



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

使用道具 举报

5#
ID:743654 发表于 2021-2-19 15:54 | 只看该作者

图1用SD卡模块连接(两个模块都试了),CMD0写入后,读不到返回值0x01,初始化不成功



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

使用道具 举报

地板
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-18 15:42 | 只看该作者
最近也在调试SD卡,一直卡在初始化CMD0写入失败,楼主的例程可否提供参考
回复

使用道具 举报

沙发
ID:678280 发表于 2021-2-14 11:34 | 只看该作者
对楼主的问题有兴趣,但对我来说太高深。仅为一顶。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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