sd-card - CRC CMD18 SD 卡
问题描述
我正在尝试使用 SPI 和 DSP 读取 SDHC 卡。
我使用 CMD17 命令成功读取了很多信息(容量,一些其他信息)。
现在我想使用 CMD18 命令(READ_MULTIPLE_BLOCK),因为我想读取 2 个扇区(2 * 512 字节)。我将所有值放在缓冲区中。
当我读到它时,不在卡上的 2 个扇区之间有 4 个字节(当我使用 4GB 4 类或 10 个字节时,当我使用 4GB 10 类时)(我用 HxD 读取了 2 个扇区)软件)。这些价值观是什么?
这是一个 4GB Class 4 的示例:
缓冲区值:
buffer[511] = 68 **// Good value**
buffer[512] = 143 // Bad value
buffer[513] = 178 // Bad value
buffer[514] = 255 // Bad value
buffer[515] = 254 // Bad value
buffer[516] = 48 **// Good value**
使用 HxD 读取的实际值
buffer[511] = 68 **// Good value**
buffer[512] = 48 **// Good value**
buffer[513] = 54 **// Good value**
buffer[514] = 48 **// Good value**
buffer[515] = 52 **// Good value**
buffer[516] = 69 **// Good value**
我不发送 CRC (0xFF),有问题吗?
谢谢您的帮助。
问候,
解决方案
buffer[512] = 143 // 错误值
buffer[513] = 178 // 错误值
这两个字节是 512 字节块的 CRC。可以不使用,但不能从接收流中拒绝。
buffer[514] = 255 // 错误值
卡预充下一区块,每次随机获得数量(包括零)255张。(取决于 SPI 速度和卡速度)
buffer[515] = 254 // 错误值
卡已准备好传输下一个数据块。您应该等待 254,然后您知道以下数据将是正确的。实际上,即使在第一个数据块之前,您也应该等待/获取这些 255...255、254。
推荐阅读
- python - 试图翻译多个xml文件的特定文本,然后修改每个文件
- bluetooth - ESP32:BLE传输速度很慢
- attributes - 在systemverilog中,如何检测文本宏(定义)中的操作数属性(有符号或无符号)?
- swift - 如何将作为字符串的参数放入 URL 的路径中?
- python - 使用代理,但它仍在转发我自己的 IP 地址
- visual-studio-code - 在 vscode 中更改 'ctrl + c' 键绑定
- c# - 使用 C# 返回 WordOffice 中找到关键字的段落名称?
- java - Hadoop 在 Windows 10 中的安装和运行时间过长
- python - 点击打开一个新链接
- python - Python/Scapy - 嗅探和存储源 IP 地址和源 MAC 地址