-
数据读,没有数据传输,数据总线是高电平,一个传输块包括四个低电平的bit,然后是持续的数据流,数据流结束位是四位高电平,数据传输和时钟是同步的,面向块的数据传输由1位或4位的CRC校验和保护,CRC被附加在块的末尾,单块传输不需要停止命令,多块CMD18需要CMD12停止,停止有延迟,在停止命令的结束位结束,
-
多块写命令应使用,而不是连续单写命令,以提高写操作的速度。
如果主机使用的部分块的累计长度没有块对齐且不允许块对齐(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行操作(断开繁忙卡的连
SD卡学习笔记(5)
最新推荐文章于 2024-09-25 21:37:27 发布
这篇博客详细介绍了SD卡的数据传输机制,包括数据读取的同步方式、面向块的传输、CRC校验和错误处理。重点讲述了多块写操作的流程,如预擦除设置、写保护区域的处理,以及在不同错误情况下如何中止和管理数据缓冲区。还提到了写操作的CRC校验和数据保护,确保数据的正确传输。

最低0.47元/天 解锁文章
794

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



