打印
[ZLG-ARM]

问个sd卡读写问题!

[复制链接]
1520|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dlwlmlj|  楼主 | 2007-6-26 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 我不太理解

相关帖子

沙发
high| | 2007-6-26 20:47 | 只看该作者

9位=0x1FF

我想应该是先左移9位,后右移9位吧,这样就地址就对齐512了。

使用特权

评论回复
板凳
dlwlmlj|  楼主 | 2007-6-27 09:34 | 只看该作者

没看明白?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

436

帖子

0

粉丝