SDIO CMD & 数据部分 CRC 计算规则

使用的在线 crc 计算工具网址:http://www.ip33.com/crc.html

CMD CRC7 计算

如下图为使用逻辑分析仪获取的SDIO读写SD卡时,CMD16指令发送的格式,通过逻辑分析仪总线分析,可以看到,该部分的CRC7校验值得0x05,大多数情况下,我们基本上不用考虑这个值的计算过程,但如果我们关心这个值硬件是通过什么多项式计算出来的,那可以继续往下看。

下图为使用crc在线工具计算上图的CMD16的结果

使用CRC-7参数模型默认的多项式、初始化值等参数,将需要校验的数据以hex的形式写入输入框,可以直接得到校验计算结果。

这里有一个地方,还存在疑惑,就是下面这个地方,来自STM32F407中文参考手册,说在计算CRC7的时候,不使用起始位、传输位,但通过我的计算,不带入这两位的话,是得不到正确结果的,不带入这两位的话,使用工具计算的值跟实际值是不一样的,如果有知道怎么回事的铁汁,欢迎在评论区留言,我暂且归咎于参考手册写的有问题吧,哈哈哈哈。

 数据部分 CRC16 计算规则

上图是计算使用SDIO单根线发送128字节0xFF时,得到的CRC16 校验值的例子
512 字节的 0xFF data-->CRC16= 0xEDA9(4线模式);
512 字节在用四根数据线Data0~Data3传输时,单根数据线上的数据量为 128 字节,128 字节
对应的 CRC16 = 0xEDA9;下图为发送 512 个字节时,逻辑分析仪对应的 crc16
波形图

请注意:

下图是SDIO数据发送时,单线模式和四线模式下总线上的数据发送形式

使用四线 D0~D3 传输数据时,最后的 CRC 是针对所在数据线上的数据做的 CRC16 校验。
也就是传输一个数据块的数据,CRC 校验需要 16 个时钟脉冲周期。

相关推荐

  1. capl实现crc校验码计算

    2024-07-09 21:38:03       37 阅读
  2. CRC循环冗余校验码算法计算

    2024-07-09 21:38:03       38 阅读
  3. 数据处理 -- CRC32校验算法整理

    2024-07-09 21:38:03       24 阅读
  4. modbus CRC16校验计算法查表法

    2024-07-09 21:38:03       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 21:38:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 21:38:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 21:38:03       57 阅读
  4. Python语言-面向对象

    2024-07-09 21:38:03       68 阅读

热门阅读

  1. mysql面试题 Day5

    2024-07-09 21:38:03       22 阅读
  2. Xcode简介

    2024-07-09 21:38:03       22 阅读
  3. iOS项目怎样进行二进制重排

    2024-07-09 21:38:03       25 阅读
  4. 相机光学(二十八)——感光度(ISO)

    2024-07-09 21:38:03       21 阅读
  5. 【Adobe】Photoshop图层的使用

    2024-07-09 21:38:03       24 阅读
  6. Rust破界:前端革新与Vite重构的深度透视(上)

    2024-07-09 21:38:03       25 阅读
  7. bash终端快捷键

    2024-07-09 21:38:03       23 阅读
  8. ChatGPT 5.0:一年半后的展望与看法

    2024-07-09 21:38:03       21 阅读
  9. python实现excel数据自动统计

    2024-07-09 21:38:03       23 阅读
  10. NIO基础

    NIO基础

    2024-07-09 21:38:03      19 阅读
  11. Hive、SQL Server、MySQL 和 PostgreSQL 之间的对比区别

    2024-07-09 21:38:03       26 阅读