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

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

3天内不再提示

瀚海微SD NAND之SD 协议(37)SPI总线保护和读写

吕辉 来源:jf_40298777 作者:jf_40298777 2024-10-09 10:29 次阅读

总线传输保护

总线上传输的每条SD卡命令都受到CRC位的保护。在SPI模式下,SD存储卡提供了CRC ON模式,使具有可靠数据链路的系统能够排除实现CRC生成和验证功能所需的硬件或固件。在CRC OFF模式下,命令的CRC位被定义为“不关心”发送端,而被接收端忽略。

缺省情况下,SPI接口初始化为CRC OFF模式。然而,用于将卡切换到SPI模式的RESET命令(CMD0)在SD模式下被卡接收,因此应该有一个有效的CRC字段。

由于CMD0没有参数,所有字段的内容(包括CRC字段)都是常量,不需要在运行时计算。

有效的复位命令为:Ox40, Ox0, Ox0, Ox0, Ox0, ox95卡进入SPI模式后,将根据CMD59设置对包括CMD0在内的所有命令进行CRC检查。

主机可以使用CRC_ON_OFF命令(CMD59)打开和关闭CRC选项。

主机应在发出ACMD41之前启用CRC验证。始终启用CMD8 CRC校验。

主机应在CMD8参数中设置正确的CRC。

如果检测到CRC错误,无论命令索引如何,卡都会在R1响应中返回CRC错误。

数据读取

SPI模式支持单块读取和多块读取操作(SD Memory Card协议中的CMD17或CMD18)。

在接收到一个有效的读命令后,卡将用一个响应令牌和一个数据令牌进行响应,参考下图。

在标准容量卡的情况下,数据令牌中的大小由set BLOCKLEN (CMD16)设置的块长度决定。

对于SDHC和SDXC卡,无论cmd16设置的块长度如何,块长度都固定为512字节。

wKgaomcF6iyAAa-bAABwzBmzE3I594.png

最大块长度为512字节,与CSD中定义的READ_BL_LEN无关。

如果在标准容量卡中启用部分块访问(即CSD参数READ BL partial等于1),块长度可以是1到512字节之间的任何数字。

起始地址可以是卡有效地址范围内的任意字节地址。但是,每个块应包含在单个物理卡扇区中。

如果禁用部分块访问,则只支持512字节的数据长度。SDHC和SDXC卡只支持512字节的块长度。起始地址应与块边界对齐。

在数据检索错误的情况下,卡将不传输任何数据。相反,一个特殊的数据错误令牌将被发送到主机。

下图显示了一个以错误令牌而不是数据块结束的数据读取操作。

wKgZomcF6kWASRDFAADodlS3Etc553.png

数据写入

SPI模式支持单块和多块写命令。在接收到有效的写命令(SD存储卡协议中的CMD24或CMD25)后,卡将使用响应令牌进行响应,并等待主机发送数据块。

CRC后缀、块长度和起始地址限制(CSD参数WRITE BL PARTIAL控制部分块写选项和WRITE_BL_LEN除外)与读操作相同,参考下图

wKgZomcF6l6ANb0PAABrbTB5Vlc941.png

每个数据块都有一个“开始块”标记的前缀(一个字节)。在接收到数据块后,卡将使用数据响应令牌进行响应。如果接收到的数据块没有错误,将对其进行编程

只要卡在忙编程,所有连续的忙令牌流将被发送到主机(有效地保持低数据输出线)。

一旦编程操作完成,主机应该使用SEND_STATUS命令(CMD13)检查编程的结果。一些错误(例如地址超出范围,违反写保护等)仅在编程期间检测到。

在数据块上执行并通过数据响应令牌与主机通信的唯一验证检查是CRC和一般写错误指示。

在多块写操作中,停止传输将通过在下一个块的开始处发送' stop Tran'令牌而不是'Start Block'令牌来完成。

如果出现写错误指示(在数据响应上),主机将使用SEND_NUM_WR_BLOCKS (ACMD22)来获取写好的写块的数量。

wKgaomcF6m-AFCqBAABpymRye3g152.png

当卡忙时,重置CS信号不会终止编程过程。卡将释放数据输出线(三状态)并继续编程。

如果在编程完成之前重新选择卡,则DataOut线将被强制返回低电平,并且所有命令将被拒绝。

重置存储卡(使用CMDO用于SD存储卡)将终止任何挂起的或正在进行的编程。这可能会破坏卡上的数据格式。预防是主机的责任

擦写保护管理

SPI模式的擦写保护管理过程与SD模式的擦写保护管理过程相同。

当卡擦除或更改预定义扇区列表的写保护位时,它将处于忙状态并使DataOut线保持低电平。

下图说明了使用和不使用忙信令的“无数据”总线事务。

wKgaomcF6oGAP-p6AABOFd1W64o130.png



审核编辑 黄宇

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

    关注

    17

    文章

    1677

    浏览量

    90930
  • 总线
    +关注

    关注

    10

    文章

    2834

    浏览量

    87795
  • SD NAND
    +关注

    关注

    0

    文章

    70

    浏览量

    1180
收藏 人收藏

    评论

    相关推荐

    瀚海SD NANDSD 协议(38)寄存器&复位&开解锁

    读取CID/CSD寄存器 类似SD存储卡协议(其中寄存器内容作为命令响应发送)。在SPI模式下读取CSD和CID寄存器的内容是一个简单的读块事务。该卡将响应一个标准的响应令牌,后跟一个16字节的数据
    的头像 发表于 10-10 09:28 58次阅读

    瀚海SD NANDSD 协议(36)SPI模式

    简介 SPI模式由基于flash的SD存储卡提供的辅助通信协议组成。 这种模式是SD存储卡协议的一个子集,设计用于与
    的头像 发表于 10-08 10:13 74次阅读
    <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'>SD</b> <b class='flag-5'>协议</b>(36)<b class='flag-5'>SPI</b>模式

    瀚海SD NANDSD 协议(32)1.8V信令的驱动强度和总线时序

    输出驱动强度 4级驱动强度为了保持主机系统的灵活设计,输出驱动可以看到大范围的主机负载。 4 种可选驱动强度使主机系统能够调整驱动强度,以优化特定的主机负载。 这使SD卡能够灵活地支持不同的系统负载
    的头像 发表于 09-26 10:31 127次阅读
    <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'>SD</b> <b class='flag-5'>协议</b>(32)1.8V信令的驱动强度和<b class='flag-5'>总线</b>时序

    瀚海SD NANDSD 协议(29)硬件接口

    SD存储卡硬件接口 SD存储卡有6条通信线路和3条供电线路: CMD:命令是双向信号。主机和卡驱动以推拉方式工作。 DAT0-3:数据线是双向信号。主机和卡驱动在推拉模式下运行 CLK:时钟是主机到
    的头像 发表于 09-24 10:19 136次阅读
    <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'>SD</b> <b class='flag-5'>协议</b>(29)硬件接口

    SD NAND SPI模式:如何实现低功耗运行

    最近,收到客户反馈,使用我们SD NAND过程中,使用SPI模式,对SD完成操作后,SD没有进入低功耗模式,未对
    的头像 发表于 09-02 11:06 268次阅读
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b> <b class='flag-5'>SPI</b>模式:如何实现低功耗运行

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

    (SDXC): 32GB以上,不超过2TB 工作电压范围:2.7 V ~ 3.6 V专为只读和读写卡设计。 总线速度模式(使用4条并行数据线) (1)默认速度模式:3.3V信令,频率最高可达25mhz,最高
    的头像 发表于 07-19 11:47 384次阅读
    <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 NANDSPI NAND和eMMC的区别对比分析

    SPI NANDSD NAND和eMMC是三种不同类型的嵌入式存储技术,它们各自具有独特的特点和应用场景。以下是这三种存储技术的主要区别:
    的头像 发表于 07-02 11:31 694次阅读
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>、<b class='flag-5'>SPI</b> <b class='flag-5'>NAND</b>和eMMC的区别对比分析

    Verilog:【8】基于FPGA实现SD NAND FLASH的SPI协议读写

    的硬件电路连接,下一步就是根据SD卡的读写时序讲通信方式初始化为SPI模式,并按照SD协议进行读写
    发表于 06-21 17:58

    SD NANDSPI NAND的区别

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

    stm32 CubeMx 怎么实现SD卡/sd nand FATFS读写测试

    本实验仅用于记录和分享技术经验若涉及侵权请联系我删除。   stm32 CubeMx 实现SD卡/sd nand FATFS读写测试。   材料:stm32F407ZGT6开发板、雷龙
    发表于 01-09 17:37

    什么是SD NAND存储芯片? SD NAND与TF卡的区别

    什么是SD NAND?它俗称贴片式T卡,贴片式TF卡,贴片式SD卡,贴片式内存卡,贴片式闪存卡,贴片式卡...等等。虽然SD NAND 和T
    的头像 发表于 01-06 14:35 1477次阅读
    什么是<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>存储芯片? <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>与TF卡的区别

    什么是SD NAND存储芯片?

    NAND闪存芯片,支持 ECC (Error Correcting Code) 算法和坏块管理,能有效地降低数据丢失的风险。   高速读写SD NAND
    发表于 01-05 17:54

    基于Zynq FPGA对雷龙SD NAND的测试

    ) 采用机械开关的写保护功能 内置写保护功能(永久和临时) 应用程序特定命令 舒适擦除机制   该SD卡支持SDIO读写SPI
    发表于 12-22 17:43

    ESP32应用教程— SD NAND(记录飞控LOG)

    可定制,LGA-8 封装,标准 SDIO 接口,兼容 SPI,兼容拔插式 TF卡/SD卡,可替代普通 TF卡/SD卡,尺寸 6.2x8mm。   内置平均读写算法,通过 1 万次随机掉
    发表于 11-30 18:16

    SDSPI读写中文资料

    电子发烧友网站提供《SDSPI读写中文资料.pdf》资料免费下载
    发表于 10-13 10:09 6次下载
    <b class='flag-5'>SD</b>卡<b class='flag-5'>SPI</b><b class='flag-5'>读写</b>中文资料