野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11322|回复: 2

SD卡初始化代码中一个奇怪的地方

[复制链接]
发表于 2020-4-23 21:43:06 | 显示全部楼层 |阅读模式
本帖最后由 zhangjw258 于 2020-4-23 21:54 编辑

在"SD_Error SD_GetCardInfo(SD_CardInfo *cardinfo)"函数中
................

  /*!< Byte 12 */
  tmp = (uint8_t)((CSD_Tab[3] & 0xFF000000) >> 24);
  cardinfo->SD_csd.WrProtectGrEnable = (tmp & 0x80) >> 7;
  cardinfo->SD_csd.ManDeflECC = (tmp & 0x60) >> 5;
  cardinfo->SD_csd.WrSpeedFact = (tmp & 0x1C) >> 2;
  cardinfo->SD_csd.MaxWrBlockLen = (tmp & 0x03) << 2;
  /*!< Byte 13 */
  tmp = (uint8_t)((CSD_Tab[3] & 0x00FF0000) >> 16);
  cardinfo->SD_csd.MaxWrBlockLen |= (tmp & 0xC0) >> 6;
  cardinfo->SD_csd.WriteBlockPaPartial = (tmp & 0x20) >> 5;
  cardinfo->SD_csd.Reserved3 = 0;
cardinfo->SD_csd.ContentProtectAppli = (tmp & 0x01);//关注这一句
  /*!< Byte 14 */
  tmp = (uint8_t)((CSD_Tab[3] & 0x0000FF00) >> 8);
  cardinfo->SD_csd.FileFormatGrouop = (tmp & 0x80) >> 7;
  cardinfo->SD_csd.CopyFlag = (tmp & 0x40) >> 6;
  cardinfo->SD_csd.PermWrProtect = (tmp & 0x20) >> 5;
  cardinfo->SD_csd.TempWrProtect = (tmp & 0x10) >> 4;
  cardinfo->SD_csd.FileFormat = (tmp & 0x0C) >> 2;
  cardinfo->SD_csd.ECC = (tmp & 0x03);
......................
" Byte 13 "已经用完了8位,(tmp & 0x01)又是什么?

Reserved3 已经占5bits,这个字节已处理完,何来(tmp & 0x01).
有哪位老师能回答我?
我居然把这么枯燥的代码读了一遍.



回复

使用道具 举报

 楼主| 发表于 2020-4-23 21:50:19 | 显示全部楼层
附图:
无标题.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-23 22:48:03 | 显示全部楼层
sd card sdhc:
无标题.png

回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-29 13:37 , Processed in 0.040658 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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