0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瀚海微SD NAND应用存储功能描述(6)读写数据

吕辉 来源:jf_40298777 作者:jf_40298777 2024-08-06 14:21 次阅读

宽总线选择/取消

选择宽总线(4位总线宽度)操作模式可以使用AcMD6选择/取消选择。默认总线上电或GO IDLE (CMDO)后的宽度为1位总线宽度。

要改变母线宽度需要满足两个条件:

a)卡处于“传输状态”。

b)卡未锁定被锁定的卡将响应ACMD6为非法命令。

2GB卡

要制作2GByte卡,最大块长度(READ BL LEN- write BL LEN)应设置为1024字节。但是,CMD16设置的块长度最多为512字节,以保持与512字节最大块长度卡(小于等于2GByte卡)的一致性。

数据读取

当没有数据传输时,通过上拉使数据总线电平高。传输的数据块由起始位(低1位或低4位)和连续数据流组成。数据流包含有效载荷数据(如果使用off-card ECC is used,则包含纠错位)。数据流以endl位结束(1位或4位HIGH).

数据传输与时钟信号同步。面向块的数据传输的有效载荷由1位或4位CRC校验和保护。关闭电源可能会中断SD存储卡的读取操作。SDl存储卡确保在主机发出的除写或擦除操作外的所有情况下,即使在突然关闭或删除的情况下,数据也不会被破坏。如果发生BLOCK_LEN_ERROR或ADDRESS ERROR,并且没有进行数据传输,则拒绝读取命令。

块读取

块读取是面向块的数据传输。数据传输的基本单位是一个块,其最大大小始终为512字节。较小的块,其起始和结束地址完全包含在512字节边界内,可以传输。

CMD16设置的块长度可以设置为512字节,与READ_BL_LEN无关。CRC被附加到每个块的末尾,以确保数据传输的完整性。CMD17 (READ_SINGLE_BLOCK)发起一个块读取,完成传输后,卡返回到传输状态。CMD18 (READ_MULTIPLE_BLOCK)启动几个连续块的传输。块将持续传输,直到发出停止传输命令(CMD12)。l由于串行命令传输,stop命令有执行延迟。数据传输在stop命令结束位之后停止。

当使用CMD18读取用户区的最后一块时,即使顺序正确,主机也应该忽略可能发生的OUT_OF_RANGE错误。

如果主机使用的部分块的累积长度不是块对齐的,并且不允许块错位,卡应该在第一个错位块的开始处检测到块错位,在状态寄存器中设置ADDRESS_ERROR错误位,中止传输,并在Data State中等待停止命令。

下方图格定义了当局部块访问被启用时的卡片行为。

如果不对齐的块是命令的第一个数据块(即在对命令的实际响应中报告了i.e.ADDRESS_ERROR),则不传输数据,卡保持在TRAN状态。

wKgaomaxwIiACRhXAAC7cBGbp2Y569.png

*1:“当前块栏”大小由CMD16设置或更改。如果value小于或等于512字节(与Misalign和Partial选项没有关系),则设置无错误。

*2:当Blocklen大小数据范围超过512字节的块边界时,卡片输出数据直到512字节的块边界,此时数据无效,也可能出现CRC错误。卡将在下一个命令响应中发送“ADDRESS_ERROR”。主机应该发出CMD12来恢复。

数据写入

数据传输格式与数据读取格式类似。对于面向块的写数据传输,CRC校验位被添加到每个数据块中。在写操作之前,卡对每个接收到的数据块执行1位或4位CRC奇偶校验。通过这种机制,可以防止写入错误传输的数据。如果发生BLOCK_LEN_ERROR或ADDRESS_ERROR,并且没有进行数据传输,则拒绝写命令。

块的写入

在块写入(CMD24 - 27,42,56 (w))期间,一个或多个数据块从主机传输到卡,主机在每个块的末尾附加1或4位CRC。无论WRITE_BL_LEN设置为1k还是2k字节,支持块写的卡都要求CMD16设置的block Length为512字节。下方表格定义了当部分块访问被禁用(WRITE_BL_PARTIAL = 0)时卡的行为。

wKgZomaxwKCAIf3wAAC8Bhlbd-Q405.png

*1:“当前块栏”大小由CMD16设置或更改。如果value小于512字节(与Misalign和Partial选项没有关系),则设置无错误。然后在写命令执行时测试“当前Blocklen”大小。

*2:如果当前的Blocklen不是这个值,卡在写命令响应上指示“BLOcK_LEN_ERROR”。

*3:如果起始地址不是这个值,卡将在写命令响应中发送“ADDRESS_ERROR”。

如果允许WRITE_BL_PARTIAL(=1),那么也可以使用更小的块,最高分辨率为一个字节。如果CRC失败,卡应在DAT线上指示失败€;传输的数据将被丢弃而不被写入,所有进一步传输的块(在多个块中)将被写入模式)将被忽略。

为了提高写操作的速度,建议使用多个块写命令,而不是连续的单个写命令。如果主机使用的部分块的累计长度没有块对齐,并且不允许块错位(CSD参数WRITE_BLK_MISALIGN未设置),则卡应在第一个错位块开始之前检测到块错位错误并中止编程

卡应该在状态寄存器中设置ADDRESS_ERROR错误位,同时忽略所有进一步的数据传输,在Receive-data-State中等待停止命令。

注意,第一个数据块对于写命令是不对齐的(即在写命令的实际响应中报告i.e.ADDRESS_ERROR),卡保持在tran状态,没有数据被编程。如果主机试图在写保护区域上写,写操作也会被终止。然而,在这种情况下,卡应该设置WP_VIOLATION位。

CSD寄存器的编程不需要先前的块长度设置。传输的数据也受CRC保护。如果CSD寄存器的一部分存储在ROM中,那么这个不可改变的部分应与接收缓冲区的相应部分相匹配。如果匹配失败,那么卡将报告一个错误,并且不会更改任何寄存器内容。

有些卡可能需要很长且不可预测的时间来写入数据块。在接收到数据块并完成CRC检查后,如果写缓冲区已满并且无法接受来自新WRITE_BLOCK命令的新数据,则卡将开始写入并保持DATO低电平。主机可以在任何时候用SEND_STATUS命令(CMD13)轮询卡片的状态,卡片将用它的状态进行响应。状态位READY_FOR_DATA表示卡是否可以接受新数据,或者写过程是否仍在进行中。

主机可以通过发出CMD7(选择不同的卡)来取消卡的选择,这将使卡进入断开状态并释放数据线而不中断写操作。当重新选择卡时,如果编程仍在进行中并且写缓冲区不可用,它将通过将DAT拉到低来重新激活忙指示。

实际上,主机可以同时对多张卡进行写操作,并有互留过程。交错过程可以通过在其他卡忙时单独访问每个卡来完成。这个过程可以通过适当的CMD和DATO-3线操作(断开忙卡)来完成。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4110

    浏览量

    85234
  • SD NAND
    +关注

    关注

    0

    文章

    57

    浏览量

    1156
收藏 人收藏

    评论

    相关推荐

    瀚海SD NAND存储功能描述(24)擦除超时计算

    擦除单元速度类规范定义了一个新的管理单元AU(分配单元)。擦除超时计算被定义为AU的基础。SD存储卡支持块擦除,但擦除块需要更多的时间,这是AU(部分擦除AU)的一部分。在这种情况下,主机应该在以AU为基础计算的超时结果中添加250毫秒。当开始和结束块位于相同的部分擦除A
    的头像 发表于 09-07 10:58 113次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(24)擦除超时计算

    瀚海SD NAND存储功能描述(22)Timing Values

    Timing Values 块读取Gap 在读取操作过程中,由于主机缓冲区已满,主机需要通过停止SDCLK来停止从卡中读取数据的输出。考虑到使用采样时钟调优方法,主机需要在块间隙停止SDCLK,而
    的头像 发表于 09-04 11:20 79次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(22)Timing Values

    瀚海SD NAND存储功能描述(21)数据读写

    数据读取 注:数据线表示数据总线(1位或4位)。 单块读取 主机选择一张卡进行CMD7的数据读取操作,并设置CMD16面向块的数据传输的有效
    的头像 发表于 09-03 10:14 132次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(21)<b class='flag-5'>数据</b><b class='flag-5'>读写</b>

    瀚海SD NAND存储功能描述(18)命令类e

    SD存储SD 状态 SD状态包含与SD存储卡专有特性相关的状态位,并且可能用于未来特定应用程序
    的头像 发表于 08-26 10:00 142次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(18)命令类e

    瀚海SD NAND存储功能描述(14)命令类a

    的类总是被设置为1。具有特定功能的卡可能需要支持一些可选命令。 例如,Combo Card应该支持CMD5。等级0、2、4、5和8是强制性的,所有SD存储卡都应支持。除CMD40外,SDHC和SDXC是强制性的。其他类是可选的。
    的头像 发表于 08-19 10:26 162次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(14)命令类a

    瀚海SD NAND存储功能描述(13)读写擦除超时

    读、写、擦除超时条件 如果主机在给定的超时时间内没有收到任何响应,则应假定该卡不会响应,并尝试恢复(例如重置卡,电源周期,拒绝等)。 Read 对于标准容量SD存储卡,读取操作的超时条件发生的时间
    的头像 发表于 08-18 13:43 135次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(13)<b class='flag-5'>读写</b>擦除超时

    瀚海SD NAND存储功能描述(11)命令系统CMD8

    (CMD6)可以将1.10及以上版本的SD卡置于高速模式。l高速是access模式组中的功能,如下表所示。是否支持高速模式是可选的
    的头像 发表于 08-12 16:03 183次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(11)命令系统CMD8

    瀚海SD NAND存储功能描述(10)CMD6和其他命令关系

    。如果主机无法获取CMD6的有效数据,建议发出CMDO,尝试重新初始化。 CMD6数据与CMD12的关系 案例1:不完整案例(卡没有输出所有数据
    的头像 发表于 08-11 16:32 129次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(10)CMD<b class='flag-5'>6</b>和其他命令关系

    瀚海SD NAND存储功能描述(9)切换功能

    开关功能状态 开关功能状态是返回的数据块,其中包含功能和当前消耗信息。块长度预定义为512位,不需要使用SET_BLK_LEN命令。状态数据
    的头像 发表于 08-09 10:15 148次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>(9)切换<b class='flag-5'>功能</b>

    SD NAND:高效存储的未来之选

    在现代数据驱动的社会中,存储技术的发展显得尤为重要。SD NAND作为一种基于NAND闪存技术的存储
    的头像 发表于 07-29 17:38 231次阅读
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>:高效<b class='flag-5'>存储</b>的未来之选

    瀚海SD NAND应用之SD协议存储功能描述2 初始化命令

    ACMD41的功能;争论中的HCS和回应中的CCS(卡容量状态)。 HCS被卡忽略,卡对CMD8没有反应。 但是,如果卡没有返回CMD8响应,主机应该将HCS设置为0。标准容量SD存储卡忽略HCS。如果
    的头像 发表于 07-22 10:54 207次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>应用之<b class='flag-5'>SD</b>协议<b class='flag-5'>存储</b><b class='flag-5'>功能</b><b class='flag-5'>描述</b>2 初始化命令

    瀚海SD NAND应用之SD协议系统功能和概念 1 基础知识

    针对目前使用的SDNAND 、SD卡、TF卡,简单介绍一下系统信息 标准容量SD存储卡(SDSC):不超过2GB 高容量SD存储卡(SDHC
    的头像 发表于 07-19 11:47 302次阅读
    <b class='flag-5'>瀚海</b><b class='flag-5'>微</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>应用之<b class='flag-5'>SD</b>协议系统<b class='flag-5'>功能</b>和概念 1 基础知识

    SD NAND和SPI NAND的区别

    SD NAND和SPI NAND各有优缺点,适用于不同的应用场景。SD NAND提供更高的读写
    的头像 发表于 06-04 14:26 1047次阅读

    SD NAND:儿童玩具的多功能存储神器

    儿童玩具的发展一直在不断创新,而SD NAND作为一种多功能存储器,为儿童玩具带来了全新的应用体验。无论是音乐和故事播放器,还是教育游戏和应用,甚至是图像和视频
    的头像 发表于 01-31 16:47 472次阅读
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>:儿童玩具的多<b class='flag-5'>功能</b><b class='flag-5'>存储</b>神器

    什么是SD NAND存储芯片?

    前言   大家好,我们一般在STM32项目开发中或者在其他嵌入式开发中,经常会用到存储芯片存储数据。今天我和大家来介绍一款存储芯片,我这里采用(雷龙) CS创世
    发表于 01-05 17:54