SD卡的SPI模式是一种专为简单通信设计的接口,尤其适用于单片机系统。在SPI模式下,SD卡与主机之间的交互遵循特定的协议和规则,简化了与SD卡的标准模式相比的数据传输过程。 1. **模式选择**: - SD卡在上电后默认处于SD模式,但可以通过CMD0命令切换到SPI模式。如果在CMD0命令期间CS(Chip Select)信号被拉低,卡会进入SPI模式并返回一个SPI模式的R1响应。一旦进入SPI模式,就只能通过重新上电来回到SD模式。 2. **SPI总线协议**: - SPI模式基于命令和数据流,每个命令或数据块由多个8位字节组成,每个字节与CS信号对齐。通信由主机控制,每次传输由拉低CS信号开始。 - 与SD模式不同,被选择的卡在SPI模式下总是回应命令,使用8位的附加响应结构,且在数据检索问题时,会立即返回错误响应,而不是超时。 3. **响应行为**: - **命令响应**:在SPI模式下,卡总是回应命令,响应结构有所增加,包括一个8位的附加响应。 - **数据响应**:写操作期间,每个数据块都会有一个特殊的数据响应令牌作为回应。数据块大小可以是单个字节到最大块大小,具体取决于CSD寄存器的设置。部分块的读/写操作由CSD寄存器定义的参数启用。 4. **总线传输保护**: - 在SPI模式下,SD卡提供了非保护模式,这意味着CRC校验由系统自身处理,发送器无需计算CRC,接收器则忽略CRC位。 - CMD59命令可以用来开关CRC选项,而RESET命令虽然在SPI模式下切换卡,但在SD模式下被接收,因此必须包含有效的CRC域。 5. **读数据操作**: - 单块读(CMD17)和多块读(CMD18)在SPI模式下都支持。数据块长度由CMD16定义,最大长度受限于CSD寄存器。每个有效数据块都有16位CRC校验。 - 如果发生可修复错误,卡不会传输数据,而是发送数据错误令牌。 6. **写数据操作**: - 单块写(CMD24)和多块写(CMD25)同样被支持。写操作流程与读操作相似,数据块大小、CRC校验以及地址限制与读操作一致。 7. **CRC_ON_OFF命令**: - CMD59用于控制CRC选项,允许系统在需要时开启或关闭CRC校验。 SD卡的SPI模式简化了与单片机的接口,降低了硬件复杂性,但同时也限制了一些高级功能和错误检测机制。在设计涉及SD卡的嵌入式系统时,根据具体需求选择合适的通信模式至关重要。
剩余6页未读,继续阅读
- 粉丝: 37
- 资源: 302
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于JavaWeb的学生管理系统.zip
- (源码)基于Android的VR应用转换系统.zip
- (源码)基于NetCore3.1和Vue的系统管理平台.zip
- (源码)基于Arduino的蓝牙控制LED系统.zip
- SwitchResX 4.6.4 自定义分辨率 黑苹果神器
- (源码)基于Spring Boot和MyBatis的大文件分片上传系统.zip
- (源码)基于Spring Boot和MyBatis的后台管理系统.zip
- (源码)基于JDBC的Java学生管理系统.zip
- (源码)基于Arduino的教室电力节能管理系统.zip
- (源码)基于Python语言的注释格式处理系统.zip
评论0