SD卡学习笔记(5)

  1. 数据读,没有数据传输,数据总线是高电平,一个传输块包括四个低电平的bit,然后是持续的数据流,数据流结束位是四位高电平,数据传输和时钟是同步的,面向块的数据传输由1位或4位的CRC校验和保护,CRC被附加在块的末尾,单块传输不需要停止命令,多块CMD18需要CMD12停止,停止有延迟,在停止命令的结束位结束,

  2. 多块写命令应使用,而不是连续单写命令,以提高写操作的速度。
    如果主机使用的部分块的累计长度没有块对齐且不允许块对齐(CSD参数WRITE_ blk_不对齐),则在第一个不对齐的块开始之前,卡应检测到块对齐错误并中止编程。卡片应该在状态寄存器中设置ADDRESS_ ERROR错误位,同时忽略所有进一步的数据传输,在接收数据状态中等待停止命令。
    注意,第一个数据块不对齐为写命令(即ADDRESS
    _ERROR在写命令的实际响应中报告),卡保持在传输状态,没有数据被编程。
    如果主机试图对写保护区域进行写操作,也应该中止写操作。然而,在这种情况下,卡片应该设置wp_viol位。
    CSD寄存器的编程不需要先前的块长度设置,传输的数据也受CRC保护。如果CSD寄存器的一部分存储在ROM中,那么。这个不可改变的部分必须与接收缓冲区的相应部分相匹配。如果这个匹配失败,那么卡片将报告一个错误,并且不改变任何寄存器内容。
    有些卡可能需要很长且不可预测的时间来写一个数据块。在接收到一个数据块并完成CRC检查后,如果写缓冲区已满且无法接受新的write BLOCK命令的新数据,卡将开始写,并保持DAT0线低。主机可以在任何时候用SEND status命令(CMD13)轮询卡的状态,卡将以其状态响应。状态位READY_FOR _DATA表示卡是否可以接受新数据或写进程是否仍在进行。主机可以通过发出CMD7(选择另一张卡)来取消对卡的选择,CMD7将把卡移到断开状态并释放DAT线,而不中断写操作。当重新选择卡时,如果编程仍在进行并且写缓冲区不可用,它将通过将DAT拉到低重新激活忙指示。实际上,主机可以用交错进程对多个卡同时执行写操作。交叉过程可以通过在其他卡忙时分别访问每一张卡来完成。这个过程可以通过适当的CMD和DAT0-3行操作(断开繁忙卡的连接)来完成。

  3. 多块写操作之前的预擦除设置
    设置预擦除的写块数量(ACMD23)将使后续的多个块写操作比不使用ACMD23的相同操作更快。主机将使用这个命令来定义在下一个写操作中将要发送多少个写块。如果主机将在所有的数据块发送到卡之前终止写操作(使用停止传输),剩余的写块的内容是未定义的(可以擦除或仍然保留旧数据)。
    如果主机发送的写块数大于ACMD23定义的写块数,卡将一个一个地擦除写块(当接收到新的数据时),在多个写块操作后,该值将重置为默认值(=1)。
    建议在CMD25之前使用此命令,一些卡对于多个写块操作会更快。注意,如果主机想要使用预擦除特性,那么主机应该在写命令之前发送ACMD23。如果没有,pre - erase-count可能在其他命令时被自动清除。(例如:安全应用程序命令)被执行。在某些情况下,如果在多个块的写操作中发生错误,使用“管道机制来管理数据缓冲区”的系统无法确定哪个块最后被很好地写入闪存。卡将响应ACMD22与良好编写块的数量。

  4. (数据传输格式类似于数据读取格式。对于面向块的写数据传输,在每个数据块上增加CRC校验位。在写操作之前,对每个接收到的数据块进行1位或4位的CRC奇偶校验(见4.5节)。通过这种机制,可以防止错误传输数据的写入。
    如果发生BLOCK_ LEN_错误或ADDRESS_错误,并且没有进行数据传输,则写命令会被拒绝。
    在块写入(CMD24 - 27,42,56 (w))期间,一个或多个数据块从主机传输到卡上,主机在每个块的末尾加上1或4位的CRC (CRC校验)。支持块写的卡必须要求CMD16设置的块长度为512字节,无论WRITE_ BL_ LEN是多少设置为1k或2k字节。
    数据传输过程使用CRC16进行数据保护,当用于宽总线模式时,CRC16在每根总线单独作用。512bytes with 0xff data CRC16=0X7FA1

  5. 在CMD行中,首先传输最高有效位(MSB),最后传输最低有效位(LSB)。
    当使用宽总线选项时,数据每次传输4位(参见图3-10)。开始和结束位,以及CRC位,为每一条DAT线路传输。对每条数据线分别计算和检查CRC位。CRC状态响应和繁忙指示将被卡发送到主机仅在dat0 (DAT1-DAT3期间不参与)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值