SD卡学习笔记(5)

这篇博客详细介绍了SD卡的数据传输机制,包括数据读取的同步方式、面向块的传输、CRC校验和错误处理。重点讲述了多块写操作的流程,如预擦除设置、写保护区域的处理,以及在不同错误情况下如何中止和管理数据缓冲区。还提到了写操作的CRC校验和数据保护,确保数据的正确传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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)轮询卡的状态,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值