SD NAND的通信主要遵循SD协议,通常可以在SD模式(4线或1线)和SPI模式两种方式下工作。下面这个表格概括了其主要通信阶段和核心任务:
| 信阶段 | 核心任务 | 关键命令 | 状态变化 |
|---|---|---|---|
| 卡识别模式 (初始化和识别) | 1. 复位并进入空闲状态 2. 检查电压兼容性 3. 完成初始化过程 4. 获取卡唯一标识 5. 分配相对地址 | • CMD0: 复位卡,进入空闲状态 • CMD8: 检查接口电压条件 • ACMD41: 启动并完成初始化 • CMD2: 获取CID(卡识别号) • CMD3: 发布RCA(相对卡地址) | 空闲状态 → 待机状态 |
| 数据传输模式 (数据读写操作) | 1. 选中指定卡 2. 配置块大小 3. 执行数据读写 4. 管理传输过程 5. 监控卡状态 | • CMD7: 选中卡进入传输状态 • CMD16: 设置块长度(SDSC) • CMD17/18: 单块/多块读取 • CMD24/25: 单块/多块写入 • CMD12: 停止传输 • CMD13: 查询卡状态 | 待机状态 → 传输状态 |

初始化流程(以SPI模式为例)
上电与时钟同步:上电后,主机先使SD NAND进入SPI模式(通过拉低CS并发送CMD0),并发送至少74个时钟周期以便卡完成内部初始化。电压与兼容性检查:发送CMD8命令,验证卡是否支持主机提供的电压,并确认卡兼容SD协议2.0或更高版本。
初始化和容量确认:重复发送ACMD41(注意,ACMD41是应用特定命令,需先发送CMD55),直到卡跳出空闲状态,表示初始化完成。通过CMD58读取OCR寄存器,可确认卡容量(CCS位):CCS=0为标准容量SDSC;CCS=1为高容量SDHC或扩展容量SDXC。
读取寄存器与发布地址:主机通过CMD2读取卡的唯一CID标识,然后通过CMD3要求卡发布一个相对地址RCA用于后续寻址。之后卡进入待机状态。主机发出CMD7选中卡,卡进入传输状态,准备进行数据传输。
数据读写流程
设置块长度:对于标准容量卡(SDSC),可使用CMD16设置块长度。高容量卡(SDHC/SDXC)的块长度固定为512字节。
读取数据:
主机发送CMD17(单块读)或CMD18(多块读)及起始地址
卡先返回一个响应令牌,接着发送数据块。数据块以起始令牌开始,以16位CRC结束
写入数据:
主机发送CMD24(单块写)或CMD25(多块写)及起始地址。
卡接收数据后,返回一个数据响应令牌。如果数据被接受,卡会开始编程,并通过拉低数据线(忙信号)指示忙状态。主机可轮询CMD13查询状态。
错误处理与数据保护
CRC校验:命令和数据块传输通常受CRC(循环冗余校验) 保护,以确保传输完整性。在SPI模式下,默认CRC检查可能关闭(CRC OFF模式),但主机可通过CMD59开启。
ECC技术:SD NAND内部通常集成ECC(错误校正码) 功能,用于检测和纠正NAND闪存单元可能发生的位错误,保障数据可靠性。
上一篇:SPI同一总线如何挂载两个设备
电话:176-6539-0767
Q Q:135-0379-986
邮箱:1350379986@qq.com
地址:深圳市南山区后海大道1021号C座