前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >瀚海微SD NAND之SD 协议(36)SPI模式

瀚海微SD NAND之SD 协议(36)SPI模式

作者头像
杭州瀚海微
发布2024-08-20 17:08:13
1310
发布2024-08-20 17:08:13

简介

SPI模式由基于flash的SD存储卡提供的辅助通信协议组成。

这种模式是SD存储卡协议的一个子集,设计用于与SPI通道通信,通常在摩托罗拉(以及最近一些其他供应商)的微控制器中发现。

接口是在上电后的第一个reset (CMD0)命令中选择的,设备上电后不能更改。

SPI标准只定义了物理链路,而不是完整的数据传输协议。

SDl存储卡SPI实现使用SD存储卡协议和命令集的一个子集。

SPI模式的优点是能够使用现成的主机,从而将设计工作量降至最低。

缺点是SPI模式相对于SD模式的性能损失(例如单个数据线和每个卡的硬件CS信号)。

2.00版本以后定义的SD模式下的命令和功能在SPI模式下不支持。

即使卡处于SPI模式,卡也可以响应命令和功能,但主机不应该在SPI模式下使用它们。

SPI总线协议

虽然SD存储卡通道是基于命令和数据位流,由开始位发起,由停止位终止,SPI通道是面向字节的。每个命令或数据块都是由8位字节组成的,并且是与CS信号对齐的字节(即长度是8个时钟周期的倍数)。卡开始计数SPI总线时钟周期在CS信号的断言。每个命令或数据令牌应对齐到8时钟周期边界。与SD存储卡协议类似,SPI消息由命令、响应和数据锁令牌组成。主机和卡之间的所有通信都由主机(master)控制。

主机通过断言CS信号低来启动每个总线事务。与SD模式相反,所选卡总是响应命令。

当卡在读取操作中遇到数据检索问题时,它将响应一个错误响应(替换预期的数据块),而不是像SD模式那样响应一个超时。

此外,在写操作期间发送到卡的每个数据块都将使用数据响应令牌进行响应。

在标准容量存储卡的情况下,一个数据块可以像一个卡写块一样大,也可以像单个字节一样小。部分块读/写操作是由cssregister中指定的卡选项启用的。对于SDHC和SDXC卡,块长度固定为512字节。

CMD16设置的块长度仅用于CMD42,不用于内存数据传输。因此,部分块读/写操作也被禁用。另外,不支持写保护命令(CMD28、CMD29和CMD30)。

模式选择与初始化

SD卡在SD模式下上电。在接收复位命令(CMD0)期间,如果CS信号被断言(负),则将进入SPl模式。如果卡识别到需要SD模型,它将不响应命令并保持在SD模式。

如果需要SPl模式,则该卡将切换到SPI并以SPI模式R1响应响应。返回SD模式的唯一方法是进入电源循环。

在SPl模式下,不观察SD模式下的SD Cardl协议状态机。SPI模型支持的所有SD卡命令始终可用。

SPI模式初始化顺序如下图所示。

SEND_IF_COND (CMD8)用于校验SD Memory Card接口的工作状态。

CMD8的参数格式与SD模式下定义的格式相同。

卡通过分析CMD8的参数来检测运行状态的有效性,主机通过分析CMD8的响应来检测运行状态的有效性。

供电电压由参数中的VHS字段表示。

卡假定VHS中规定的电压为当前提供的电压。

在任何给定时间,VHS中只有1位被设置为1。

检查模式用于主机检查主机与卡之间通信的有效性。

如果该卡指示非法命令,则该卡是遗留的卡,不支持cMD8。

如果卡支持CMD8并且可以在供电电压上操作,则响应将返回在命令参数中设置的供电电压和检查模式。

如果响应中的VCA设置为0,则卡不能在供电电压下工作。

如果校验模式不匹配,CMD8通信无效。

此时,建议重试CMD8顺序。

READ_OCR (CMD58)旨在为SD存储卡主机提供一种机制,以识别与主机所需的Vop范围

不匹配的卡。如果主机不接受电压范围,它将不进行进一步的初始化顺序。

OCR寄存器中的电平应相应地定义(参考之前的介绍寄存器的文章)。

SD_SEND_OP_COND (ACMD41)用于启动初始化并检查卡是否已完成初始化。

必须在第一个ACMD41之前发布CMD8。CMD8的接收扩展了CMD58和ACMD41的功能;

ACMD41论证中的HCS (High Capacity Support)和CMD58响应中的CCSl (Card Capacity Status)。卡忽略了HCS,不接受CMD8。标准容量SD存储卡忽略HCS。

ACMD41的R1响应中的“in idle state”位被卡用来通知主机是否完成了ACMD41的初始

化。将此位设置为“1”表示卡仍在初始化。将该位设置为“0”表示初始化完成。

主机重复发出ACMD41,直到该位被设置为“0”。卡只在第一个ACMD41检查ocl中的HCS位。在重复ACMD41的同时,主机不能发出除CMDO以外的其他命令。

初始化完成后,主机应从CMD58的响应中获取CCS信息,当卡接受CMD8并完成初始化后,CCS才有效。CCS-0表示该卡是SDSD。CCS-1表示卡是SDHC或SDXC。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档