ZLGFS文件系统 中的块命令 /******************************************************************************************************************** ** 函数名称: INT8U SD_BlockCommand() Name: INT8U SD_BlockCommand() ** 功能描述: 块命令 Function: command about block operation ** 输 入: INT8U cmd : 命令字 Input: INT8U cmd : command byte INT8U resptype : 响应类型 INT8U resptype : response type INT32U parameter: 块操作参数 INT32U parameter: parameter of block operation ** 输 出: 0: 正确 >0: 错误码 Output: 0: right >0: error code *********************************************************************************************************************/ INT8U SD_BlockCommand(INT8U cmd, INT8U resptype, INT32U parameter) { INT8U param[4],resp,ret; parameter <<= SD_BLOCKSIZE_NBITS; /* 调整地址:左移9位 adjust address: move 9 bits left */
SD_PackParam(param, parameter); /* 将参数转化为字节形式 change the parameter to bytes form */
ret = SD_SendCmd(cmd, param, resptype, &resp); if (ret != SD_NO_ERR) return ret; /* 结束数据传输失败 stop transmission operation fail */ if (resp != 0) return SD_ERR_CMD_RESP; /* 响应错误 response is error */ return SD_NO_ERR; } parameter <<= SD_BLOCKSIZE_NBITS; /* 调整地址:左移9位 adjust address: move 9 bits left */ 为什么左移9位呢? 书上说是因为 每块大小是512 就是9 我不太理解 |