基于SPI模式的SD卡驱动器及其控制方法与流程

文档序号:14911098发布日期:2018-07-10 23:26阅读:来源:国知局

技术特征:

1.一种基于SPI模式的SD卡驱动器,其特征在于,包括SD卡控制器模块、Fifo缓存模块、FAT32文件系统模块,所述SD卡控制器模块通过SPI总线与SD卡连接,SD卡控制器模块还通过Wishbone总线与FAT32文件系统模块连接,FAT32文件系统模块还与所述Fifo缓存模块连接。

2.根据权利要求1所述的基于SPI模式的SD卡驱动器,其特征在于,所述SD卡控制器模块包括Wishbone总线从机、SPI主机控制器、SD初始化控制器、命令发送响应控制器、读写数据控制器、数据传输控制器、读写数据缓存器、SPI主机接口,Wishbone总线从机与SPI主机控制器、读写数据缓存器连接,SPI主机控制器还与读写数据控制器、SD初始化控制器、数据传输控制器连接,SD初始化控制器经命令发送响应控制器与读写数据控制器连接,数据传输控制器经SPI主机接口与读写数据缓存器连接,SPI主机接口还与SD卡连接。

3.根据权利要求2所述的基于SPI模式的SD卡驱动器,其特征在于,所述Wishbone总线从机包括Wishbone从机控制器、Wishbone从机接口,Wishbone从机控制器与SPI主机控制器连接,Wishbone从机接口与读写数据缓存器连接,Wishbone从机控制器、Wishbone从机接口经Wishbone总线主机与FAT32文件系统模块连接。

4.一种基于权利要求3所述的基于SPI模式的SD卡驱动器的控制方法,其特征在于:实现如下:

(1)Fifo缓存模块的读、写入控制逻辑功能:

FAT32文件系统模块从SD卡控制器模块取出1024+512个字节的数据并同时写入到Fifo缓存模块中,此时Fifo缓存模块中无数据读出;停止写入数据到Fifo缓存模块,开始从Fifo缓存模块中读出512个字节的数据,FAT32文件系统模块在从SD卡控制器模块取出512个字节的数据同时写入到Fifo缓存模块中,此时Fifo缓存模块中有数据读出;

(2)FAT32文件系统模块和Wishbone总线读取SD卡中文件功能:

FAT32文件系统模块根据SD卡驱动器当前执行的功能和SD卡反馈的卡片信息向Wishbone总线主机发送命令参数,Wishbone总线主机将命令参数拆分成4个字节,Wishbone总线主机将命令字的第1个字节通过address地址接口发送到Wishbone总线从机,命令字的第2、3、4、5 字节为命令参数通过data_o数据接口发送到Wishbone总线从机;Wishbone总线从机根据address地址接口接收到的信息判断当前由Wishbone总线从机通过data_o数据接口发送到Wishbone总线主机的数据是SD卡控制器模块传输过来的SD卡反馈的卡片信息或者是SD卡各个扇区读出的存储数据;

Wishbone总线主机的Wishbone主机接口通过操作结束方式信号来了解SD卡控制器模块中的Wishbone从机接口的工作状态;操作结束方式信号为高电平时表示SD卡控制器模块中的Wishbone从机接口向Wishbone主机接口数据传输正常,反之则表示数据传输不正常;

Wishbone总线主机通过Wishbone总线接口信号中的地址信号控制Wishbone从机接口的数据传输状态和类型,通过Wishbone总线接口信号中的选通信号和写使能信号控制Wishbone从机接口数据传输的起始和终止;

(3)SD卡控制器模块基于SPI通讯模式下的包括SD卡的复位、初始化、读单块、写单块、读多块、写多块操作功能:

1)Wishbone总线从机

Wishbone从机接口负责与SD卡控制器模块中各个模块进行数据和命令交互,并将SD卡控制器模块的状态作为响应传递回Wishbone总线主机;当处于数据读取状态时,Wishbone从机控制器通过判断主机地址类型,选择从SPI主机控制器读取数据并传输给wishbone主机接口或者将数据从读写数据Fifo缓存模块中取出并传输给wishbone主机接口;当处于数据写入状态时,Wishbone从机控制器将数据从Wishbone主机接口中取出并传输给读写数据缓存器;

2)SPI主机控制器

系统上电复位后首先由SPI主机控制器通过控制寄存器和状态寄存器向SD卡初始化控制器模块发送使能信号,使SD卡完成初始化;SPI主机控制器在接收到SD卡完成初始化的反馈信号后,向读写数据控制器发送读或写请求;

3)SD初始化控制器

SD初始化控制器在接收到SPI主机控制器发送的使能信号后开始工作,产生复位命令CMD0,通过命令发送响应控制器发送给SD卡,在有效时间内收到正确的响应,复位完成;然后产生初始化命令CMD1,通过命令发送响应控制器发送给SD卡,在有效时间内收到正确的响应,初始化完成,SD卡进入SPI模式;

4)命令发送响应控制器

命令发送响应控制器在接收到SPI主机控制器发送的使能信号后开始工作;将命令拼接成SD卡协议中规定的6字节格式,发送给SD卡;对于收到的反馈,判断是否是SD卡的响应以及是否响应超时;

5)读写数据控制器

读写数据控制器在接收到SPI主机发送的读或写使能信号后开始进入相应的状态;若收到写使能信号,产生单块写命令CMD24,通过命令发送响应控制器发送给SD卡;若在有效时间内收到正确的响应,则产生数据起始令牌,与512字节数据、2字节的CRC一起写入读写数据缓存器;若在有效时间内收到的响应最后五位为00101,则SD卡成功接收数据;在SD卡忙状态时判断SD卡是否写超时,超过250ms仍处于忙状态则写错误;若收到读使能信号,产生单块读命令CMD17,通过命令发送响应控制器发送给SD卡;若在有效时间内收到正确的响应,则开始接收数据起始令牌;若在100ms内未收到数据起始令牌,则读超时,读SD卡错误;若接收到数据起始令牌,则将之后接收到的512字节数据写入读写数据缓存器;

6)数据传输控制器

数据传输控制器是控制读写数据缓存器的模块;若收到命令发送响应控制器的使能信号时,接收命令发送响应控制器发送的6字节命令,并逐一发送给SPI主机接口;若收到读写数据控制器的写使能信号,则读取读写数据缓存器Tx_FIFO中的512字节数据并将其发送给SPI主机接口;在数据传输的开始之前以及结束之后,发送8位高电平信号给SPI主机接口,维持时钟并且保持MOSI为高;在接收数据及响应时,通过Fifo缓存模块内数据状态标志位信号来控制数据的接收过程;

7)读写数据缓存器

读写数据缓存器是缓存读写数据的存储器,负责存储要写入SD卡的512字节数据以及从SD卡读出的512字节数据;

8)SPI主机接口

SPI主机接口是与SD卡直接通信的模块;通过两个移位寄存器,将读写数据缓存器输出的并行数据转换为串行数据传输给SD卡,将SD卡输出的串行数据转换为并行数据存入读写数据缓存器;同时给SD卡提供时钟信号。

5.根据权利要求4所述的基于SPI模式的SD卡驱动器的控制方法,其特征在于:所述卡片信息,即:从根目录数据中解析出当前文件占用的字节数;用启动区中的数据计算出根目录和FAT1的起始地址,用根目录起始地址对应的内容得到第一个簇在数据区的地址;用FAT1起始地址对应的内容得到第二个簇在数据区的地址和第三个簇在FAT1中的地址。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1