0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32入门学习笔记之SD卡基础读写实验2

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 15:09 次阅读

20.2.6 SDIO命令寄存器SDIO_CMD

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- CE_ATACMD nIEN ENCMDcomp1 SDIOSuspend CPSMEN WAITPEND WAITINT WAITRESP CMDINDEX

Bit 14:CE-ATA命令

如果设置该位,CPSM转至CMD61

Bit 13:不使能中断

如果未设置该位,则使能CE-ATA设备的中断

Bit 12:使能CMD完成

如果设置该位,则使能命令完成信号

Bit 11:SDIO暂停命令

如果设置该位,则将要发送的命令是一个暂停命令(只能用于SDIO卡)

Bit 10:命令通道状态机使能位

如果设置该位,则使能CPSM

Bit 9:CPSM等待数据传输结束(CmdPend内部信号)

如果设置该位,则CPSM在开始发送一个命令之前等待数据传输结束

Bit 8:CPSM等待中断请求

如果设置该位,则CPSM关闭命令超时控制并等待中断请求

Bit 7~Bit 6:等待响应位

00:无响应,期待CMDSENT标志

01:短响应,期待CMDREND或CCRCFAIL标志

10:无响应,期待CMDSENT标志

11:长响应,期待CMDREND或CCRCFAIL标志

Bit 5~Bit 0:命令索引,作为命令的一部分发送到卡中

20.2.7 SDIO数据定时器:SDIO_DTIMER

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DATATIME[31:16]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DATATIME[15:0]

Bit 31~Bit 0:数据超时时间,以卡总线时钟周期为单位的数据超时时间

20.2.8 SDIO数据长度寄存器:SDIO_DLEN

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- DATALENGTH[24:16]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DATALENGTH[15:0]

Bit 24~Bit 0:数据长度,要传输的数据字节数目

20.2.9 SDIO数据控制寄存器:SDIO_DCTRL

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- SDIOEN RWMOD RWSTOP RWSTART DBLOCKSIZE DMAEN DTMODE DTDIR DTEN

Bit 11:SDIO使能功能

如果设置了该位,则DPSM执行SDIO卡特定的操作

Bit 10:读等待模式

0:停止SDIO_CK控制读等待

1:使用SDIO_D2控制读等待

Bit 9:读等待停止

0:如果设置了RWSTART,执行读等待

1:如果设置了RWSTART,停止读等待

Bit 8:读等待开始

设置该位开始读等待操作

Bit 7~Bit 4:数据块长度,当选择了块数据传输模式,该域定义数据块长度

0000:块长度=1字节

0001:块长度=2字节

0010:块长度=4字节

0011:块长度=8字节

0100:块长度=16字节

0101:块长度=32字节

0110:块长度=64字节

0111:块长度=128字节

1000:块长度=256字节

1001:块长度=512字节

1010:块长度=1024字节

1011:块长度=2048字节

1100:块长度=4096字节

1101:块长度=8192字节

1110:块长度=16384字节

1111:保留

Bit 3:DMA使能位

0:关闭DMA

   1:使能DMA

Bit 2:数据传输模式

0:块数据传输

   1:流数据传输

Bit 1:数据传输方向

0:控制器至卡

   1:卡至控制器

Bit 0:数据传输使能位

如果设置该位为1,则开始数据传输。根据DTSIR方向位,DPSM进入Wait_S或Wait_R状态,如果在传输的一开始就设置了RWSTART位,则DPSM进入读等待状态。不需要在数据传输结束后清除使能位,但必须更改SDIO_DCTRL以允许新的数据传输。

20.2.10 SDIO状态寄存器:SDIO_STA

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- CEATAEND SDIOIT RXDAVL TXDAVL RXFIFOE TXFIFOE RXFIFOF TXFIFOF
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RXFIFOHF TXFIFOHF RXACT TXACT CMDACT DBCKEND STBITERR DATAEND CMDSENT CMDREND RXOVERR TXUNDERR DTMEOUT CTIMEOUT DCRCFAIL CCRCFAIL

Bit 23:在CMD61接收到CE-ATA命令完成信号

Bit 22:收到SDIO中断

Bit 21:在接收FIFO中的数据可用

Bit 20:在发送FIFO中的数据可用

Bit 19:接收FIFO空

Bit 18:发送FIFO空

若使用了硬件流控制,当FIFO包含2个字时,TXFIFOE信号变为有效。

Bit 17:接收FIFO满

若使用了硬件流控制,当FIFO还差2个字满时,RXFIFOF信号变为有效。

Bit 16:发送FIFO满

Bit 15:接收FIFO半满,FIFO中至少还有8个字

Bit 14:发送FIFO半空,FIFO中至少还可以写入8个字。

Bit 13:正在接收数据

Bit 12:正在发送数据

Bit 11:正在传输命令

Bit 10:已发送/接收数据块(CRC检测成功)

Bit 9:在宽总线模式,没有在所有数据信号上检测到起始位

Bit 8:数据结束(数据计数器,SDIO_DCOUNT=0)

Bit 7:命令已发送(不需要响应)

Bit 6:已接收到响应(CRC检测成功)

Bit 5:接收FIFO上溢错误

Bit 4:发送FIFO下溢错误

Bit 3:数据超时

Bit 2:命令响应超时

命令超时时间是一个固定的值,为64个SDIO_CK时钟周期。

Bit 1:已发送/接收数据块(CRC检测失败)

Bit 0:已收到命令响应(CRC检测失败)

注:状态寄存器可以用来查询SDIO控制器的当前状态。比如SDIO_STA的位2表示命令响应超时,说明SDIO的命令响应出了问题。我们通过设置SDIO_ICR的位2则可以清除这个超时标志,而设置SDIO_MASK的位2,则可以开启命令响应超时中断,设置为0关闭。

20.2.11 SDIO数据FIFO寄存器:SDIO_FIFO

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
FIFODATA[31:16]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
FIFODATA[15:0]

Bit 31~Bit 0:接收或发送FIFO数据

FIFO数据占据32个32位的字,地址为:SDIO基址+0x80至SDIO基址+0xFC

数据FIFO寄存器包括接收和发送FIFO,他们由一组连续的32个地址上的32个寄存器组成,CPU可以使用FIFO读写多个操作数。例如我们要从SD卡读数据,就必须读SDIO_FIFO寄存器,要写数据到SD卡,则要写SDIO_FIFO寄存器。SDIO将这32个地址分为16个一组,发送接收各占一半。而我们每次读写的时候,最多就是读取发送FIFO或写入接收FIFO的一半大小的数据,也就是8个字(32个字节),在操作SDIO_FIFO(不论读出还是写入)必须是以4字节对齐的内存进行操作,否则将导致出错。

20.3 SD卡初始化

20.3.1 卡上电流

图片

20.3.2 卡初始化流程

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44521

    浏览量

    633104
  • 存储器
    +关注

    关注

    38

    文章

    7453

    浏览量

    163608
  • SD卡
    +关注

    关注

    2

    文章

    560

    浏览量

    63808
  • SDIO
    +关注

    关注

    2

    文章

    72

    浏览量

    19294
收藏 人收藏

    评论

    相关推荐

    【紫光同创国产FPGA教程】【第八章】SD读写实验

    SD是现在嵌入式设备重要的存储模块,内部集成了nand flash控制器,方便了主机的的管理。本实验主要是练习对sd的扇区进行
    的头像 发表于 02-05 11:35 8287次阅读
    【紫光同创国产FPGA教程】【第八章】<b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>读写实验</b>

    【GD32F470紫藤派开发板使用手册】第十二讲 SDIO-SD读写实验

    通过本实验主要学习以下内容: •SDIO操作原理 •SD读写实
    的头像 发表于 05-18 09:36 1303次阅读
    【GD32F470紫藤派开发板使用手册】第十二讲 SDIO-<b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>读写实验</b>

    arduino学习笔记18 - SD读写实验

    本次实验使用arduino驱动SD,在SD中进行文件读写。需要说明的是arduino的
    发表于 10-24 10:09

    接触式IC读写实验

    接触式IC读写实验 一. 实验目的了解接触式IC 的知识,
    发表于 09-22 17:20 4704次阅读
    接触式IC<b class='flag-5'>卡</b><b class='flag-5'>读写实验</b>

    STM32开发板_SD学习

    资料包括《SD读写规范》和《SD接口规范》以及《SD
    发表于 06-08 17:29 15次下载

    ARM基础应用实验06_SD读写

    ARM嵌入式应用程序架构设计实例精讲--ARM基础应用实验06SD读写
    发表于 07-08 11:08 0次下载

    ARM基础应用实验_SD读写

    电子专业单片机相关知识学习教材资料——ARM基础应用实验06SD读写
    发表于 09-13 17:23 0次下载

    STM32CubeMX生成一个SD读写程序

    本文档内容介绍了一个STM32CubeMX生成一个SD读写程序,由于本程序是直接操作SD的物
    发表于 01-08 11:23 57次下载

    STM32入门学习笔记SD基础读写实验1

    SD是嵌入式系统中最常见的存储器,不仅容量可以做的很大,并且接口通用,支持SPI/SDIO驱动,尺寸可供选择,能满足不同应用的要求。STM32F1系列自带了标准的4位SDIO接口,最高通信速度可达24MHz,最高每秒能传输12
    的头像 发表于 02-16 15:09 2875次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>SD</b><b class='flag-5'>卡</b>基础<b class='flag-5'>读写实验</b>1

    STM32入门学习笔记SD基础读写实验3

    SD是嵌入式系统中最常见的存储器,不仅容量可以做的很大,并且接口通用,支持SPI/SDIO驱动,尺寸可供选择,能满足不同应用的要求。STM32F1系列自带了标准的4位SDIO接口,最高通信速度可达24MHz,最高每秒能传输12
    的头像 发表于 02-16 15:09 1491次阅读

    STM32入门学习笔记SD基础读写实验4

    SD是嵌入式系统中最常见的存储器,不仅容量可以做的很大,并且接口通用,支持SPI/SDIO驱动,尺寸可供选择,能满足不同应用的要求。STM32F1系列自带了标准的4位SDIO接口,最高通信速度可达24MHz,最高每秒能传输12
    的头像 发表于 02-16 15:09 1429次阅读

    SD基础读写实验

    SD是嵌入式系统中最常见的存储器,不仅容量可以做的很大,并且接口通用,支持SPI/SDIO驱动,尺寸可供选择,能满足不同应用的要求。
    的头像 发表于 03-01 14:46 1454次阅读
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>基础<b class='flag-5'>读写实验</b>

    基于FPGA的SD的数据读写实现(SD NAND FLASH)

    文章目录1、存储芯片分类2、NORFlash与NANDFlash的区别3、什么是SD?4、什么是SDNAND?5、SDNAND的控制时序6、FPGA实现SDNAND读写6.1、设计思
    的头像 发表于 12-16 17:50 1387次阅读
    基于FPGA的<b class='flag-5'>SD</b><b class='flag-5'>卡</b>的数据<b class='flag-5'>读写实</b>现(<b class='flag-5'>SD</b> NAND FLASH)

    浅谈STM32SD

    STM32SD
    的头像 发表于 10-19 18:28 1794次阅读
    浅谈<b class='flag-5'>STM32</b><b class='flag-5'>之</b><b class='flag-5'>SD</b><b class='flag-5'>卡</b>

    【GD32F303红枫派开发板使用手册】第二十三讲 SDIO-SD读写实验

    通过本实验主要学习以下内容: •SDIO操作原理 •SD读写实
    的头像 发表于 06-23 10:49 552次阅读
    【GD32F303红枫派开发板使用手册】第二十三讲 SDIO-<b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>读写实验</b>