首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SPI上写入SDHC卡时数据不对齐

在SPI上写入SDHC卡时数据不对齐
EN

Stack Overflow用户
提问于 2015-10-04 20:27:37
回答 1查看 470关注 0票数 1

我使用一个微控制器(PIC18F26J50)与G.Skill 4GB microSD卡接口。

  • SD卡初始化是成功的,我从接收0x01 (空闲) R1令牌到0x00 (就绪) R1令牌。
  • 读取数据块可以工作,我可以读取分区1的位置并读取该分区的第一个扇区。

但是,在尝试编写块时,我从未看到响应令牌。把原始块倒掉在卡片上。我看到数据确实是写的,但是它不是对齐的properly...the最好的解释方法是用实际的图片。

在重复之前,应该填充0x01、0x02、0x03等最多0xFF。

这张卡片在窗户里工作得很好。我能正确地读写数据。

通过调查,我发现我得到的响应是0XCA,如果您正确地转换得到0xE5,这是一个正确的响应令牌。数据本身是左对齐的。此外,两个虚拟字节和令牌似乎也被写入了。纠正你得到的轮班:

代码语言:javascript
复制
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的卡,工作正常)

EN

回答 1

Stack Overflow用户

发布于 2016-01-04 11:52:10

我只是遇到了同样的问题,结果不是SD卡的问题,而是我的SPI接口问题。

我正在使用的特定芯片(Freescale KL03)将在数据缓冲区中保留当前接收的字节,直到您读取它,即使在您已经开始发送下一个字节之后。我不同步,所以每次我写一个SPI字节,等待传输,然后从缓冲区读取,我实际上得到的是之前的结果,而不是当前的结果。因此,在每个SPI事务中都有一个字节滞后。

因此,我的范围显示,我与卡片交换了以下内容:

代码语言:javascript
复制
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 ...

这导致了你遇到的错位。应该是这样的:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32938029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档