FPGA基于SDIO-4线模式读写SD卡、TF卡、SDNAND

项目背景:在以FPGA做项目时尤其是图像、视频类项目时,对存储器的使用可谓是必不可少,其中作为高速缓存的动态存储器例如SDRAM、HyperRam、DDR3、DDR4等。这些易失性存储器使用的频率是最高的,但同时有些非易失性存储器也常常会使用到,一般对于存储参数类的小容量存储器会使用eeprom(iic接口)、flash(spi)接口等。但是如果要用大容量的而且对读写速率还有一定要求的应用场景呢??根据以往的项目经验在这个场合下会使用EMMC、SD卡等存储器。

        本文就着重介绍下FPGA基于SDIO-4线模式实现SD2.0的协议来读写SD卡。本文主要介绍FPGA在不使用文件系统的方式对SD卡进行基于物理地址的读写。网上基于SD2.0的协议介绍也比较多,在此就不太详细的介绍协议细节,主要介绍FPGA读写SD卡需要的具体内容。

weixin:    vx_is_666666

1、SD卡的类型

        常见的SD卡按类型分为

                标准容量卡(<=2GB):                存储地址的单位是以字节为单位

                高容量卡    (>2GB <=32GB)    存储地址的单位是块(512Byte)为单位

2、SD的初始化

 系统上电,发送 74 个时钟,等待 sd 卡内部初始化

 发送 cmd0,复位 sd 卡

 发送 cmd8,如果 sd 卡有响应,则 sd 卡属于 sdhc 类型,并且工作电压正常,初始化工程。如 果 sd 卡无响应,则 sd 卡可能属于 sdsc 类型,或者工作电压不正常,或者当前卡不属于 sd 卡,初始化失败。

 发送 cmd55 和 acmd41

 发送 cmd2,获取 sd 卡的 CID 序列。

 发送 cmd3,获取 sd 卡的 RCA 地址。

 发送 cmd7,选中 sd 卡。

 发送 cmd55+acmd6,设置总线宽度。 

3、SD的写数据

 发送 cmd16                                  复位设置块的大小

 发送 cmd55+acmd23                   预擦除

 发送 cmd25                                  连续写的命令

 发送数据(N*block_num)

 发送 cmd12                                  制停止数据传输,数据写结束

 发送 cmd13                                  查询卡是否恢复ready状态

4、SD的读数据

 发送 cmd16                                   复位设置块的大小

 发送 cmd18                                  连续读的命令

 发送 cmd12                                   强制停止数据传输,数据写结束

5、时序波形

weixin:    vx_is_666666

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F4基于SDIO线读写SD卡需要使用FATFS文件系统。要实现这个功能,首先需要配置STM32F4的SDIO接口以及相应的GPIO引脚。接下来,我们可以按照以下步骤进行读写SD卡: 1. 初始化SDIO接口:初始化SDIO控制器,并设置时钟和数据传输属性。 2. 初始化GPIO引脚:配置SDIO通信需要使用的GPIO引脚,包括CMD线、CLK线、以及数据线(D0-D3)。 3. 初始化SD卡:使用SDIO发送SD卡初始化命令,以便与SD卡进行通信。这个过程包括等待SD卡响应、发送上电命令、以及读取SD卡的OCR(操作条件寄存器)。 4. 检查SD卡状态:通过发送CMD13命令,读取SD卡状态信息。这个过程可以确保SD卡正常工作并准备好读取或写入数据。 5. 挂载文件系统:使用FATFS库中的函数,将SD卡上的文件系统挂载到指定的逻辑驱动器。 6. 打开文件:使用FATFS库中的函数,打开指定的文件。 7. 读取或写入数据:使用FATFS库中的函数,读取或写入数据到SD卡上的文件。 8. 关闭文件:使用FATFS库中的函数,关闭文件。 9. 卸载文件系统:使用FATFS库中的函数,卸载SD卡上的文件系统。 需要注意的是,在进行读写操作时,需要确保SD卡已经插入并且正确连接到SDIO接口上。此外,还需要根据SD卡的规格以及相应的存储格式,进行适当的读写操作。 以上就是基于SDIO线读写SD卡的基本步骤。通过使用FATFS库,我们可以很方便地实现对SD卡读写操作,以便进行数据存储和读取。希望这个回答能够对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值