我使用一个微控制器(PIC18F26J50)与G.Skill 4GB microSD卡接口。
但是,在尝试编写块时,我从未看到响应令牌。把原始块倒掉在卡片上。我看到数据确实是写的,但是它不是对齐的properly...the最好的解释方法是用实际的图片。

在重复之前,应该填充0x01、0x02、0x03等最多0xFF。
这张卡片在窗户里工作得很好。我能正确地读写数据。
通过调查,我发现我得到的响应是0XCA,如果您正确地转换得到0xE5,这是一个正确的响应令牌。数据本身是左对齐的。此外,两个虚拟字节和令牌似乎也被写入了。纠正你得到的轮班:
FF FF FE 00 01 02 03 04 05 06 07 08 09 0A 0B 0C因此,我删除了编写2个虚拟字节和0xFE令牌的代码,神圣的s*#$卡在命令之后立即开始写入数据,我认为这违反了规范!有人能确认这是否是SDHC卡的预定行为吗?还是这张卡只是运行一个真正的s*#$ty SD控制器?(我怀疑后者是因为我有一张16 is的卡,工作正常)
发布于 2016-01-04 11:52:10
我只是遇到了同样的问题,结果不是SD卡的问题,而是我的SPI接口问题。
我正在使用的特定芯片(Freescale KL03)将在数据缓冲区中保留当前接收的字节,直到您读取它,即使在您已经开始发送下一个字节之后。我不同步,所以每次我写一个SPI字节,等待传输,然后从缓冲区读取,我实际上得到的是之前的结果,而不是当前的结果。因此,在每个SPI事务中都有一个字节滞后。
因此,我的范围显示,我与卡片交换了以下内容:
MOSI: 58 00 00 00 01 00 00 00 00 7E nn nn nn ...
MISO: FF FF FF FF FF FF FF 00 FF FF FF FF FF ...这导致了你遇到的错位。应该是这样的:
MOSI: 58 00 00 00 01 00 00 00 7E nn nn nn nn ...
MISO: FF FF FF FF FF FF FF 00 FF FF FF FF FF ...总之,确保在将00响应发送到命令之后立即发送7E 。
https://stackoverflow.com/questions/32938029
复制相似问题