SD卡驱动相关介绍.doc

SD卡驱动相关介绍.doc

ID:61513036

大小:745.50 KB

页数:18页

时间:2021-02-09

SD卡驱动相关介绍.doc_第1页
SD卡驱动相关介绍.doc_第2页
SD卡驱动相关介绍.doc_第3页
SD卡驱动相关介绍.doc_第4页
SD卡驱动相关介绍.doc_第5页
资源描述:

《SD卡驱动相关介绍.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1SD/MMCHOSTCONTROLER1.1SD中断检测时序SD中断检测时序主要是配置好正常中断状态使能寄存器和正常中断信号使能寄存器相关的bit位。主要是卡插入状态使能(ENSTACARDNS),卡插入信号使能(ENSIGCARDNS),卡移除状态使能(ENSTACARDREM),卡移除信号使能(ENSIGCARDREM)1.1SD时钟提供时序SD时钟提供按下面的操作进行:A:发送一个SD命令B:检测在4bit模式下SD卡产生的中断。对于停止SD时钟的提供,只要设置SD时钟使能位为0,该寄存器位在时钟控制寄存器1.1.1时钟改变的函数逻辑

2、SD时钟的改变时通过sdhci_s3c_change_clock()函数来处理,其中主要对时钟控制寄存器和超时控制寄存器进行配置,最后通过sdhci_change_clock()函数来处理SD时钟设置,其中包括分频值的计算,以及时钟控制寄存器的配置等。1.1SD总线电压控制时序1.1改变总线宽度时序1:设置卡中断状态使能位为0,屏蔽不正确的中断,当改变总线宽度时2:如果是SD内存卡,执行第4部,如果是其他的卡,执行第3步3:设置CCCR中的IENM为0,通过CMD52命令4:改变SD卡的位模式。改变SD内存卡总线的宽度(ACMD6),SDIO

3、卡的总线宽度设置通过CCCR设置5:如果你想改变成4位传输模式,设置数据传输宽度(WIDE4)到HostControl寄存器为1,其他方式下,设置为0.6:如果是SD内存卡,结束操作,如果是其他卡,继续第7步7:设置IENM(CCCR)位1,通过CMD52命令8:设置卡中断状态使能位为11.1数据线超时设置为了检测数据线的超时错误,HOSTDriver应该执行下面两个步骤1:计算一个检测超时分频值,把值写超时控制寄存器2:设置超时数据值到超时控制寄存器1.2SD数据交换执行这节主要描述产生时序和控制各种SD数据交换。SD数据交换被分为下面3中

4、1:数据传输不用数据线2:数据传输用数据线仅表示忙信号3:数据传输用数据线用作数据传输第1和第2中方式传输被定义为数据传输控制没有数据传输,第3中被定义为实际的数据传输1.1SD命令发送时序采用下面的步骤来设置超时设置1:检测当前状态寄存器的命令停止(CMD)。重复直到CMD为0。当CMD为1。HOSTDriver不应该发送SD命令2:如果HOST发送的是SD命令忙信号,执行第3步。如果不是忙信号,执行第5步3:如果HOST端发送一个停止命令,执行第5步,不是,则执行第4步4:检测命令停止BIT。重复这步直到命令停止位为05:设置合适的值到A

5、rgument寄存器6:设置合适的值到命令寄存器7:执行命令完成序列1.1.1命令发送时序的函数分析HOST对卡的命令发送过程,最后都会调用sdhci_send_command()函数,此函数原型在drivers/mmc/host/sdhci.c中,函数的处理逻辑是按流程图中的处理过程,但其函数处理逻辑中还包括传输模式的设置(sdhci_set_transfer_mode()函数是用来设置HOST的传输模式),同时还包括数据操作的准备工作,处理函数是sdhci_prepare_data(),函数中实现了函数超时设置和DMA寄存器的相关配置,以

6、及HOSTCONTROL寄存器的配置等。1.1命令完成序列1:等待命令完成中断。如果命令中断发生,执行第2部2:写1到命令完成BIT清除这位3:读相应寄存器并且获得必要的信息4:判断是否用数据传输完成中断,如果用了传输完成中断,执行第5步,否则执行第7步5:等待传输完成中断。如果传输中断发生,执行第6步。6:写1到传输完成BIT清除这位7:检测相应的数据是否有错误。如果有错误,执行第8步,没有错,执行第9步8:返回无错9:返回状态有错1.1.1命令完成函数分析当命令中断发生时,调用中断处理函数sdhci_cmd_irq,通过终端标志位的判断,

7、最终会调用sdhci_finish_command()函数来响应命令完成逻辑的处理,此函数在drivers/mmc/host/sdhci.c中。sdhci_finish_data此函数获取相应后的数据,并作出出错处理。函数的处理逻辑是按照流程图的出路过程,但是增加了其他的处理过程,和实际的代码处理时不完全一致的。1.2数据传输控制数据传输可以用DMA方式和非DMA方式。有3中数据块的数据传输方式1:SingleBlockTransfer块传输个数在传输前被HOST端定义,传输块数量总是12:MutipleBlockTransfer传输块数是1

8、个或者多个3:InfiniteBlockTransfer这个在数据传输前不被HOST定义,传输一直进行,直到停止传输,停止传输通过CMD12命令,而SDIO通过CM

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。