当前位置: 首页 > news >正文

极速闪存启动:SD与SPI模式的智能初始化指南

最近很多客户朋友在询问我们 CS 创世 SD NAND 能不能使用 SPI 接口,两者使用起来有何区别,下面为大家详细解答。

SD MODE:

CS 创世 SD NAND 支持 SD 模式和 SPI 模式,SD NAND 默认为 SD 模式,上电后,其初始化过程如下:

image-20240820191618511

  1. 配置时钟,0-400KHZ,设置工作模式

  2. 发送 CMD0,使卡进入 idle 状态,该指令没有反馈

  3. 发送 CMD8,如果有反应,那就是 CRC 值与发送的相同,说明该卡兼容 SD2.0 协议,同时还是获取 SD 的工作电压

  4. 发送 CMD55+ACMD41, 判断 SD 卡的上电是否正确,短响应成功说明该卡为 SD 卡(短响应第 31 位为 1,说明为 HC 卡),否则发送 CM0, 有反应说明为 MMC 卡

  5. 发送 CMD2 验证 SD 卡是否正确接入,长响应(CID)

  6. 发送 CMD3,读取 SD 卡的 RCA(地址),短响应

  7. 发送 CMD9,获取 CSD 寄存器来获取卡的相关信息

  8. 发送 CMD7,使能 SD 卡

  9. 配置高速时钟,准备数据传输,一般为 20M-25M

SPI MODE:

image-20240820191629218

  1. 设置 SPI 时钟为低速 0~400khz-------------SD 卡初始化只能在低速模式下进行

  2. 发送至少 74 个周期的时钟信号 ------------- 建议适当多发送一些 (怕有些电路有延时)

  3. 发送 SD 卡命令 CMD0------------------------- 使在 SD 卡收到复位命令时,CS 为有效电平(低电平),则 SD 卡切换到 SPI 模式,进入 IDLE 状态

  4. 发送 CMD8(SD2.0)-------- 针对 SD2.0 进行鉴别同时读取后续 4 个字节返回值,判断其是否支持工作电压(例如:2.7~3.6v 支持则为 0x01aa)

  5. 发送 CMD55+ACMD41(SD2.0)----- 检测初始化是否完成

  6. 发送 CMD58------------------------ 对 SD2.0 版本进一步确认 SD 卡型号(SDHC 为扇区块寻址,普通 SD 卡为字节寻址)

  7. 发送 CMD55+ACMD41(SD1.0)---------------- 检测返回值进行判断为 SD1.0 或 MMC 卡

  8. 发送 CMD55+ACMD41(SD1.0)---------------- 检测初始化是否完成

  9. 发送 CMD16------------------------------------- 设置 SD 卡扇区大小(默认为 512 字节)

设置 SPI 时钟为高速,最大为 25Mhz,初始化完成

SD 模式与 SPI 模式的区别:

1.SD NAND 默认为 SD MODE,而进入 SPI MODE 必须在第一次上电的时候就要点复位

2.SD MODE 默认为单线输出 date0, 但是在高速模式下可以走四线,date0~date3; 在 SD NAND 下走的 SPI MODE ,只能走单线模式,其通信只有 CS(片选)、CLK(时钟)、DI(输入)、DO(输出)

  1. 很多客户由于板子上只有 SPI 接口,所以用 SPI MODE 能让客户减少设计上的压力,不过 SD NAND 使用 SPI MODE 只能走单线,相比于 SD MODE 四线来说传输速度会慢。

  2. 接口连接:

image-20240820191639824

以上为 CS 创世 SD NAND 在 SD MODE 和 SPI MODE 使用时的初始化过程介绍, 目前 CS 创世 SD NAND 在市面上广泛应用,在穿戴类的消费市场,以及航空航天、铁路交通、水利检测等工业领域都有应用,欢迎有兴趣的朋友来电咨询,我们竭诚为您服务。

image-20240820191656481

http://www.lryc.cn/news/428412.html

相关文章:

  • 利用多Lora节省大模型部署成本|得物技术
  • 使用SSMS连接和查询 SQL Server 实例
  • HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(十五)
  • 两个系统之间跳转免密登录
  • SQL基础——MySQL的触发器、存储引擎、事务
  • 目标检测算法:对比YOLOv3、YOLOv5、YOLOv8
  • C# 属性(Property)
  • 3. 数据结构——栈的操作实现
  • EmguCV学习笔记 VB.Net 4.5 像素距离和连通区域
  • 使用spring boot开发与直接开发一个web项目的区别
  • Leetcode JAVA刷刷站(48)旋转图像
  • 编译型语言和解释型语言
  • TensorRT 和 PyTorch区别
  • iOS 17.6.1版本重发,修复高级数据保护错误
  • 【排序算法】八大排序(上)(c语言实现)(附源码)
  • Python版《超级玛丽+源码》-Python制作超级玛丽游戏
  • 互联网私有IP地址列表
  • 光伏项目管理软件为什么那么多光伏人在用?
  • 《AOP实战》— 自定义注解
  • 微前端架构下的单页应用实现策略
  • JWT(JSON Web Token)工作原理及特点
  • 【体检】程序人生之健康检查,全身体检与预防疫苗,五大传染病普筛,基因检测等
  • 汇编语言中的指令锁定:解锁高效并发编程
  • 《人工智能时代:金融投资决策的潜在系统性风险及防范策略》
  • MT7621+MT7915(MT7905)+MT7975 (W7621A6G-SDK)编译固件与升级固件方法
  • [php:\\filter]
  • Linux-环境变量
  • DISCUZ论坛中 “阅读权限10“这几个字的修改教程以及后台目录路径修改后的管理路径
  • springboot 整合spring-boot-starter-data-elasticsearch
  • Element UI中el-dialog作为子组件如何由父组件控制显示/隐藏~