SD卡读写实验(SPI模式)

2023-11-18

对于 SD 卡的 SPI 模式而言,采用的 SPI 的通信模式为模式 3,即 CPOL=1,CPHA=1,在 SD 卡 2.0 版

本协议中,SPI_CLK 时钟频率可达 50Mhz。

SD 卡的 SPI 模式,只用到了 SDIO_D3(SPI_CS)、SDIO_CMD(SPI_MOSI),SDIO_SC(SPI_SCK)和 SDIO_D0(SPI_MISO)引脚

sd卡初始化命令

1、SD 卡在正常读写操作之前,必须先对 SD 卡进行初始化,SD 卡的初始化过程就是向 SD 中写入命令。在对 SD 卡进行读写操作时同样需要先发送写命令和读命令,SD 卡的命令格式由 6 个字节组成(先发送高位再发送低位)

写入命令:

byte1:命令号,格式为01xx_xxxx,

byte2~byte5:命令参数

byte6: 前 7 位为 CRC(循环冗余校验)校验位,最后一位为停止位 0. 在 SPI 模式下默认不开启CRC 校验(校验位全部设为1),在 SDIO 模式下开启 CRC 校验.SD 卡上电默认是 SDIO模式,在接收 SD 卡返回 CMD0 的响应命令时,拉低片选 CS,进入 SPI 模式.

SD 卡的命令号(byte1)分为标准命令(如 CMD0)和应用相关命令,在发送应用相关命令之前,必须先发送 CMD55 命令

返回的R1数据格式

返回的 R3 数据格式

返回的R7 数据格式

电压范围比较重要,具体内容如下:

判断SD卡版本:( SD1.0 和SD2.0(SD2.0才支持 CMD8 命令) )

发送CMD8有响应:SD2.0

无响应:发送 CMD55 + ACMD41

返回0 : SD1.0

返回错误: 则是MMC卡,发送CMD1返回0 ,MMC卡初始化成功,否则是错误卡。

SD2.0初始化

1、先对从机 SD 卡发送至少 74 个以上的同步时钟,在上电同步期间,片选 CS 引脚和 MOSI 引脚必须为高电平(MOSI 引脚除发送命令或数据外,其余时刻都为高电平)

2,拉低片选 CS 引脚,发送命令 CMD0(0x40)复位 SD 卡,等待返回数据

3,在接收返回信息期间片选 CS 为低电平,判断数据为复位完成信号 0x01,SD 卡返回响应数据的 8 个时钟周期后再拉高片选 CS 信号,SD 卡进入 SPI 模式。如果返回其他值,重新上一步。

4,拉低片选 CS 引脚,发送命令 CMD8(0x48)查询 SD 卡的版本号,等待返回数据。

5,SD 卡返回响应数据后,先等待 8 个时钟周期再拉高片选 CS 信号,此时判断返回的响应数据,如果为4'b0001,(即2.7V~3.6V), SD卡位2.0版本,否则上一步。

6、拉低片选 CS 引脚,发送命令 CMD55(0x77)告诉 SD 卡下一次发送的命令是应用相关命令,等待返回数据。

7、SD 卡返回响应数据后,先等待 8 个时钟周期再拉高片选 CS 信号,此时判断返回的响应数据。如果返

回的数据为空闲信号 0x01,开始进行下一步

8、拉低片选 CS 引脚,发送命令 ACMD41(0x69)查询 SD 卡是否初始化完成,等待返回数据。

9、SD 卡返回响应数据后,先等待 8 个时钟周期再拉高片选 CS 信号,此时判断返回的响应数据若为0x00,则初始化完成。否则第6步。

SD 卡在初始化的时候,SPI_CLK 的时钟频率不能超过 400KHz,在初始化完成之后,再将 SPI_CLK 的时钟频率切换至SD 卡的最大时钟频率。

SD卡写操作

  1. 拉低片选 CS 引脚,发送命令 CMD24(0x58)读取单个数据块,等待返回数据。

  1. 返回正确响应数据 0x00 后,等待至少 8 个时钟周期,开始发送数据头 0xfe;

3、 发送完数据头 0xfe 后,接下来开始发送 512 个字节的数据(要发送512字节的整数倍)

4、 数据发送完成后,发送 2 个字节的 CRC 校验数据。由于 SPI 模式下不对数据进行 CRC 校验,

直接发送两个字节的 0xff 即可;等待返回数据。

5、SD 卡返回响应数据(xxx0_0101)后会进入写忙状态(MISO 引脚为低电平),即此时不允许其它操作。当检测到 MISO 引脚为高电平时,SD 卡此时退出写忙状态;

6、拉高 CS 引脚,等待 8 个时钟周期后允许进行其它操作。

SD卡读操作

1、 拉低片选 CS 引脚,发送命令 CMD17(0x51)读取单个数据块,等待返回响应数据;

2、 SD 卡返回正确响应数据 0x00 后,准备开始解析 SD 卡返回的数据头 0xfe;

3、 解析到数据头 0xfe 后,接下来接收 SD 卡返回的 512 个字节的数据;

4、 数据解析完成后,接下来接收两个字节的 CRC 校验值。由于 SPI 模式下不对数据进行 CRC

校验,可直接忽略这两个字节;

6、 拉高片选 CS 引脚,等待 8 个时钟周期后允许进行其它操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SD卡读写实验(SPI模式) 的相关文章

  • 【PIPE】流水线设计中的基本模块

    大概分成以下几节 1 概述及协议 2 valid forward valid超前 3 bubble collapse 消除气爆 4 input output skid 不知中文怎么说 5 pipe halt 流水停顿 6 idle pres
  • FileZilla尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败。

    考虑是否在ubuntu下开启了FTP服务 执行以下命令开启 sudo apt get install vsftpd 不能远程登陆 mobaxterm等 unbutu 考虑是否开启了SSH 使用以下命令开启 sudo apt get inst
  • 【CV with Pytorch】第 7 章 :图像异常检测

    机器学习的研究使我们进入了研究各种模式和行为的过程 它使我们能够构建可以研究封闭环境的模型 预测能力通常遵循模型训练过程 这是我们在训练模型时需要经常问的一个重要问题 还有另一个问题需要回答 多少数据足以帮助模型理解分布 以便我们有一个好的
  • 【100%通过率 】【华为OD机试c++/python】日志限流【2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 某软件系统会在运行过程中持续产生日志 系统每天运行N单位时间 运行期间每单位时间产生的日志条数保行在数组 records中 records i
  • 0227:zotero文献管理/小绿鲸英文/CSDN做笔记

    搜索 下载 白嫖 翻译 文章 如何精准找到和方向相关的文献 谷歌学术 国内无法正常进入 两个镜像网站 https xueshu dailyheadlines cc https scholar lanfanshu cn 搜索技巧 关键词套双引
  • Adobe软件还行吗?

    前段时间 美国政府 准备通过诉讼阻止Adobe去年公布的 以200亿美元收购Figma的交易 理由是此举属于反竞争行为 新闻一出 Adobe股价旋即下跌 但跌幅并不像2022年刚公布这笔交易时那么迅猛 看起来 相较于收购成功 投资者们反而希
  • 使用 ChatGPT 从 JavaScript 代码生成 React 组件

    欢迎来到我们的教程 了解如何使用 ChatGPT 从 JavaScript 代码生成 React 组件 在本指南中 我们将探讨使用 ChatGPT 完成此任务的好处 并引导您完成分步过程 React 是一个流行的用于构建用户界面的 Java
  • 64 位 ALU 输出在 TestBench 波上显示高阻抗

    我必须制作一个 64 位 ALU 它接受 A 和 B 64 位输入 进位输入输入并输出 64 位结果以及 1 位进位输出 还有一个 5 位功能选择 FS 其中 FS 0 控制 B 是否反转 使用 2to1 多路复用器 F 1 对 A 执行相
  • 硬核 | 从零制作一个激光雷达需要多久?

    编辑 ADS智库 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 硬件交流 技术交流群 本文只做学术分享 如有侵权 联系删文 激光雷达 LiDAR 是激光探测及测距系统的简称 目前广泛应用在无
  • 时序约束理解

    异步配置信息 跨时钟域 配置信息一般set max delay按照3delay来约束 2 异步回读 rst clear信号 设置set false path 放松时序约束要求 不应分析设计中的逻辑路径 因为不关心点到点时序要求
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s
  • 使用 VHDL 实例化 FPGA 中的 RAM

    我试图按照中的指导实现双端口 RAM这篇优秀的博文 http danstrother com 2010 09 11 inferring rams in fpgas 然而 ModelSim 在编译时给出以下警告 Warning fifo ra
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • Vivado ILA的debug信息保存与读取

    保存 write hw ila data D Project FPGA ILA Debug Data 202401041115 ila upload hw ila data hw ila 1 读取 display hw ila data r
  • Linux驱动程序DMA传输到PC作为主机的PCIe卡

    我正在开发一个 DMA 例程 将数据从 PC 传输到 PCIe 卡上的 FPGA 我阅读了 DMA API txt 和 LDD3 ch 15 详细信息 但是 我不知道如何从 PC 到 PCIe 卡上的一致 iomem 块进行 DMA 传输
  • UIO 设备上的 mmap EINVAL 错误

    在尝试使用 UIO 而不是直接映射后 我在 Xilinx Zynq 上映射物理内存时遇到问题 dev mem 虽然计划是以普通用户身份运行应用程序 而不是root这仍在运行root 显然 第一个映射成功 其余映射到同一个文件描述符12 de
  • 您可以使用类 C 语言对 FPGA 进行编程吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在大学里 我用类似 C 的语言编写了 FPGA 不过 我也知道人们通常使用 Verilog 或 VHD
  • 从 OpenCV 代码到 FPGA 代码的转换是否比 Matlab 代码更容易? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想做一个关于图像处理的项目 我想知道如果我想在FPGA上实现这个项目 我应该在第一阶段选择Matla
  • 可以购买哪些 FPGA(现场可编程门阵列)在家中进行实验? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 什么是 FPGA 在哪里可以买到 它们要花多少钱 您需要什么样的系统来试验它们 如何对它们进行编程 如果这是正确的术语 您能否使用普通 M
  • 无符号和 std_logic_vector 之间的区别

    谁能告诉我以下书面陈述之间的区别 signal A unsigned 3 downto 0 signal B std logic vector 3 downto 0 Both std logic vector and unsigned ar

随机推荐

  • 华为OD机试真题(Java),最小步骤数(100%通过+复盘思路)

    一 题目描述 一个正整数数组 设为nums 最大为100个成员 求从第一个成员开始正好走到数组最后一个成员所使用的最小步骤数 要求 第一步 必须从第一元素起 且 1 lt 第一步步长
  • Java企业微信开发_01_接收消息服务器配置

    一 准备阶段 需要准备事项 1 一个能在公网上访问的项目 见 Java微信公众平台开发01本地服务器映射外网 http www cnblogs com shirui p 7308856 html 2 一个企业微信账号 去注册 https w
  • 链式存储结构-----栈

    链式存储结构实现栈 上一节我们说了关于线性表的链式存储结构的实现 今天的栈也是建立在线性表的基础上 栈的特性 先进后出 1 删除时 出栈 我们考虑时间复杂度时发现 删除时的头删的复杂度为O 1 而尾删的时间复杂度为O n 故而我们出栈选择从
  • 【操作系统】键盘敲入字母时,操作系统期间发生了什么?

    操作系统 键盘敲入字母时 操作系统期间发生了什么 参考资料 键盘敲入 A 字母时 操作系统期间发生了什么 操作系统 浅谈 Linux 中的中断机制 文章目录 操作系统 键盘敲入字母时 操作系统期间发生了什么 设备控制器 I O 控制方式 设
  • html 自定义简单的时间轴 timeline 并与 table 图表和 echarts 进度甘特图联动

    1 需求 最近有需求需要实现 table 图表与 eharts 柱状图的联动 完整的效果图如下所示 这里时间轴要实现的效果要基本如下图所示 该时间轴并不是要实现选中单独的某一个月份并查看单月的数据 而是要将当前数据的时间跨度控制在时间轴的跨
  • uniapp 电商app支付倒计时处理

    电商app支付倒计时 所有电商app支付页面都是有倒计时的 一来可以促进消费 二来可以减少恶意减库存的问题发生 因为创建订单的时候 除了预售的商品外 实际销售的商品是需要减库存的 一般的电商app倒计时都是30分钟或者45分钟的 如果在此页
  • 带调速功能的arduino摇头避障小车

    一 材料同上篇文章 二 接线同上篇文章 L298N红板有两个使能端口ENA和ENB 这两个端口默认是有跳线帽的 也就是接5V的 此时输出就是HIGH或者LOW 摘掉跳线帽 将外边端口分别接arduino的PWM接口就好 本文接的是3和11
  • 3.[人脸识别] python-opencv 人脸特征采集与录入

    目录 1 环境 2 描述 3 代码 4 效果 1 环境 1 python 3 6 6 64bit 2 python packages 1 opencv python 3 4 1 15 2 opencv contrib python 4 4
  • 李沐动手学深度学习V2-微调练习

    1 继续提高finetune net的学习率 模型的准确性如何变化 原实验参数 lr 5e 5 batch size 128 num epochs 5 lr 5e 4 lr 5e 6 2 2 在比较实验中进一步调整finetune net和
  • 2018.5.21 . XMLSpy激活的方法

    127 0 0 1 altova com XMLspy 127 0 0 1 www altova com XMLspy 127 0 0 1 link altova com XMLspy 追加加到 C WINDOWS system32 dri
  • Python爬虫

    一 什么是代理 二 代理服务器的作用 可以进行请求的响应和转发 三 在爬虫中为何要使用代理 如果我们使用爬虫对一个网站在一段时间内发起一个高频请求 该网站会检测出这个异常的现象 并将异常的请求 IP 获取 将 IP 加入到黑名单 然后改 I
  • [无线通信基础-14]:图解移动通信技术与应用发展-2-第一代移动模拟通信大哥大

    前言 第一代移动通信主要采用的是模拟通信技术和频分多址 FDMA 技术 模拟通信 analog communication 是利用正弦波的幅度 频率或相位的变化 或者利用脉冲的幅度 宽度或位置变化来模拟原始信号 以达到通信的目的 故称为模拟
  • PyTorch中的符号索引和函数索引用法

    Pytorch中很多函数都采用的是函数式索引的思路 而且使用函数式索引对代码可读性会有很大提升 张量的符号索引 张量也是有序序列 我们可以根据每个元素在系统内的顺序位置 来找出特定的元素 也就是索引 一维张量的索引 一维张量索引与Pytho
  • 基于MATLAB的二进制数字调制与解调信号的仿真——2ASK

    实现二进制数字调制与解调信号的仿真是我的MATLAB课程设计的一部分 我参考了网上的一些资料 并加入了一些自己的想法 代码已在本地MATLAB编译通过且能正常运行 2ASK 二进制振幅键控 i 10 10个码元 j 5000 t linsp
  • java线程分析工具

    下载网站 IBM Thread and Monitor Dump Analyzer for Java TMDA 效果图
  • java8新特性-总览

    转眼真正工作的时间也一年多了 说实话虽然老板对我是肯定的 但是我对自己还是很不满意所以学习吧骚年们 Java8新特性 Java8算是java语言的一个大版本还是很有必要学习的 包括函数式编程 新的JavaScript引擎 新的日期API 新
  • 【附带配置疑问解决】Keil5配置ST-Link仿真器下载程序的方法

    0 首先需要安装好ST Link驱动 方法参阅CSDN其他文章或自行百度 1 点击魔术棒 2 选择Debug 按下图下拉框选择ST Link后 点击Settings 3 Flash Download设置如下 4 Pack设置 要把Enabl
  • 【Linux】【Ubuntu】在VMware虚拟机中安装Ubuntu18.04(UEFI启动图文教程)

    在VMware虚拟机中安装Ubuntu18 04 以UEFI方式启动 VMware 版本 15 5 以UEFI启动的Ubuntu系统安装方式与 Linux Ubuntu 在VMware虚拟机中安装Ubuntu18 04 保姆级图文教程 中记
  • BeagleBone 实施 Yocto 项目

    特点 Yocto 项目生产工具和流程 支持为嵌入式软件创建 Linux 发行版 独立于架构 BeagleBone Black 是一个平台 允许用户根据自己的喜好快速轻松地执行安装和自定义 从 Yocto Project 构建系统的基本介绍开
  • SD卡读写实验(SPI模式)

    对于 SD 卡的 SPI 模式而言 采用的 SPI 的通信模式为模式 3 即 CPOL 1 CPHA 1 在 SD 卡 2 0 版 本协议中 SPI CLK 时钟频率可达 50Mhz SD 卡的 SPI 模式 只用到了 SDIO D3 SP