printf("ManufactDate:0x%04x",SDCardInfo.SD_cid.ManufactDate);
//串口打印信息为 ManufactDate:0x0146
printf("ManufactDate:%d",SDCardInfo.SD_cid.ManufactDate);
//串口打印信息为 ManufactDate:326
printf("ManufactDate:[%d.%d]\n", (uint8_t)(SDCardInfo.SD_cid.ManufactDate>>4), (uint8_t)(SDCardInfo.SD_cid.ManufactDate&0x0F));
//串口打印信息为 ManufactDate:[20.6]
ManufactDate是一个unsigned short 类型 0x0146 十进制为326。
如何将它转换成对应的年月日:
● MDT
制造日期由两个 16 进制数组成,一个是 8bit 的年(y),一个是 4bit 的月(m)。
m = bit [ 11 : 8 ],1 = 1 = 1 月
y = bit [ 19 : 12 ],0 = 00 = 2000 年
比如 2001 年 4 月,MDT=0b 0000 0000 0001 0100
所以0x0146 MDT= 0b 0000 0001 0100 0110 也就是2020年6月

本文介绍了如何通过SD卡CID注册信息中的ManufactDate字段解析出具体的制造日期。详细解释了十六进制日期编码的组成,包括如何从二进制位中提取年份和月份信息。
878

被折叠的 条评论
为什么被折叠?



