chinxue 发表于 2018-9-9 15:54:11

SD卡读取CID信息

自带的SD卡读取信息SD_MMC.C中,读取CID的信息,打印产品名称有点问题。
        if(CMD2(SDCard.cCardCID))
        {
                #ifdef __SD_MMC_DEBUG__
                Uart_Printf("CID\n");
                Uart_Printf("MID = %d\n",SDCard.cCardCID);
                Uart_Printf("OLD = %d\n",(SDCard.cCardCID*0X100)+SDCard.cCardCID);
                Uart_Printf("生产厂家:%s\n",(SDCard.cCardCID+3));
                Uart_Printf("生产日期:20%d,%d\n",((SDCard.cCardCID&0x0f)<<4)+((SDCard.cCardCID&0xf0)>>4),(SDCard.cCardCID&0x0f));
                #endif
        }
根据CID的定义

第一字节是MID
第2、3字节是OID
第4-8字节是PNM
所以注释有问题,应该是产品名称,而不是生产商
用uart_printf来打印5个字节,判断结尾“\0”有问题,会出现乱码

用5个%c来打印,成功

注释也该改一下
        if(CMD2(SDCard.cCardCID))
        {
                #ifdef __SD_MMC_DEBUG__
                Uart_Printf("CID\n");
                Uart_Printf("MID = %d\n",SDCard.cCardCID);
                Uart_Printf("OEM ID = %d\n",(SDCard.cCardCID*0X100)+SDCard.cCardCID);
                Uart_Printf("Product Name is:%c%c%c%c%c\n",SDCard.cCardCID,SDCard.cCardCID,SDCard.cCardCID,SDCard.cCardCID,SDCard.cCardCID);
                Uart_Printf("Manual Data:20%d.%d\n",((SDCard.cCardCID&0x0f)<<4)+((SDCard.cCardCID&0xf0)>>4),(SDCard.cCardCID&0x0f));
                #endif
        }
页: [1]
查看完整版本: SD卡读取CID信息