SD卡驱动相关介绍

上传人:tl****14 文档编号:111644255 上传时间:2019-11-03 格式:DOC 页数:18 大小:800.50KB
返回 下载 相关 举报
SD卡驱动相关介绍_第1页
第1页 / 共18页
SD卡驱动相关介绍_第2页
第2页 / 共18页
SD卡驱动相关介绍_第3页
第3页 / 共18页
SD卡驱动相关介绍_第4页
第4页 / 共18页
SD卡驱动相关介绍_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《SD卡驱动相关介绍》由会员分享,可在线阅读,更多相关《SD卡驱动相关介绍(18页珍藏版)》请在金锄头文库上搜索。

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

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

3、DE4)到Host Control 寄存器为1,其他方式下,设置为0.6:如果是SD内存卡,结束操作,如果是其他卡,继续第7步7:设置IENM(CCCR)位1,通过CMD52命令8:设置卡中断状态使能位为11.5 数据线超时设置为了检测数据线的超时错误,HOST Driver应该执行下面两个步骤1:计算一个检测超时分频值,把值写超时控制寄存器2:设置超时数据值到超时控制寄存器1.6 SD 数据交换执行这节主要描述产生时序和控制各种SD数据交换。SD数据交换被分为下面3中1:数据传输不用数据线2:数据传输用数据线仅表示忙信号3:数据传输用数据线用作数据传输第1和第2中方式传输被定义为数据传输控制

4、没有数据传输,第3中被定义为实际的数据传输1.7 SD 命令发送时序采用下面的步骤来设置超时设置1:检测当前状态寄存器的命令停止(CMD)。重复直到CMD为0。当CMD为1。HOST Driver不应该发送SD 命令2:如果HOST 发送的是SD 命令忙信号,执行第3步。如果不是忙信号,执行第5步3:如果HOST端发送一个停止命令,执行第5步,不是,则执行第4步4:检测命令停止BIT。重复这步直到命令停止位为05:设置合适的值到Argument 寄存器6:设置合适的值到命令寄存器7:执行命令完成序列1.7.1 命令发送时序的函数分析HOST对卡的命令发送过程,最后都会调用sdhci_send_

5、command()函数,此函数原型在drivers/mmc/host/sdhci.c中,函数的处理逻辑是按流程图中的处理过程,但其函数处理逻辑中还包括传输模式的设置(sdhci_set_transfer_mode()函数是用来设置HOST的传输模式),同时还包括数据操作的准备工作,处理函数是sdhci_prepare_data(),函数中实现了函数超时设置和DMA寄存器的相关配置,以及HOST CONTROL 寄存器的配置等。1.8 命令完成序列1:等待命令完成中断。如果命令中断发生,执行第2部2:写1到命令完成BIT清除这位3:读相应寄存器并且获得必要的信息4:判断是否用数据传输完成中断,如

6、果用了传输完成中断,执行第5步,否则执行第7步5:等待传输完成中断。如果传输中断发生,执行第6步。6:写1到传输完成BIT清除这位7:检测相应的数据是否有错误。如果有错误,执行第8步,没有错,执行第9步8:返回无错9:返回状态有错1.8.1 命令完成函数分析当命令中断发生时,调用中断处理函数sdhci_cmd_irq,通过终端标志位的判断,最终会调用sdhci_finish_command()函数来响应命令完成逻辑的处理,此函数在drivers/mmc/host/sdhci.c中。sdhci_finish_data此函数获取相应后的数据,并作出出错处理。函数的处理逻辑是按照流程图的出路过程,但

7、是增加了其他的处理过程,和实际的代码处理时不完全一致的。1.9 数据传输控制 数据传输可以用DMA方式和非DMA方式。有3中数据块的数据传输方式1:Single Block Transfer 块传输个数在传输前被HOST 端定义,传输块数量总是12:Mutiple Block Transfer 传输块数是1个或者多个3:Infinite Block Transfer 这个在数据传输前不被HOST定义,传输一直进行,直到停止传输,停止传输通过CMD12命令,而SDIO通过CMD522 SD/MMC寄存器描述2.1 备注本机只对比较重要的寄存器如何配置做出描述,不会全部描述数据手册中的内容。参考的

8、数据手册主要是6410数据手册中SD/MMC中的相关内容。2.2 SDMA SYSTEM ADDRESS REGISTER 寄存器地址R/W解释复位值SDMASYSAD00x7C200000R/WSDMA 系统地址寄存器,这3个寄存器包含DMA传输的系统内存地址。当HOST控制器停止DMA传输时,寄存器将指向下一个数据传输的地址。0x0SDMASYSAD10x7C300000R/WSDMASYSAD20x7C400000R/W2.3 BLOCK SIZE REGISTER 此寄存器用到配置块数据传输的大小。寄存器地址R/W解释复位值BLKSIZE00x7C200004R/WHOST DMA b

9、uffer边界值和传输块大小寄存器0x0BLKSIZE10x7C300004R/WBLKSIZE20x7C400004R/WBit位的值设定表NameBit解释初始化值BUFBOUND15保留0x014:12000b = 4K bytes 001b = 8K bytes 010b = 16K Bytes 011b = 32K Bytes 100b = 64K bytes 101b = 128K Bytes 110b = 256K Bytes111b = 512K Bytes BLKSIZE11:00200h = 512 Bytes 01FFh = 511 Bytes 0004h = 4 Byt

10、es 0003h = 3 Bytes 0002h = 2 Bytes 0001h = 1 Byte 0000h = No data transfer2.4 BLOCK COUNT REGISTER这个寄存器被用来配置块数量NameBit 解释复位值BLKCNT15:0必须使能Block Count EnableFFFFh = 65535 blocks 0002h = 2 blocks 0001h = 1 block 0000h = Stop Count 02.5 ARGUMENT REGISTER 这个寄存器包含SD命令的参数,也包含3个寄存器从ARGUMENT0到ARGUMENT2.2.6

11、TRANSFER MODE REGISTER传输模式寄存器,这个寄存器用来控制数据传输的操作,寄存器包含TRNMOD0,TRNMOD1,TRNMOD23种。NameBit解释初始化值15:10保留0CCSCON9:8命令完成信号控制00=没有CCS操作01=读写数据传输CCS使能10=没有数据传输11=禁止完成信号产生0MUL1SIN05Multi / Single Block Select 如果这位为0,没有必要设置Block Count 寄存器1 = Multiple Block 0 = Single Block RD1WT04Data Transfer Direction Select这

12、位定义数据线的传输方向1 = Read (Card to Host) 0 = Write (Host to Card)03保留0ENACMD122Auto CMD12 Enable多块数据传输需要CMD12命令停止数据交换当这位为1时,HOST控制器将在数据传输的最后一块完成时发送CMD12命令。1 = Enable 0 = Disable 0ENDMA0DMA Enablezhe1 = Enable 0 = Disable这位与命令寄存器和功能寄存器(Capabilities registe)相关02.7 COMMAND REGISTER这个寄存器包含SD命令参数,在写命令寄存器之前HOST

13、 Driver将检查数据线的命令停止位和命令线的数据停止位(这些BIT在当前状态寄存器中)。NameBit描述初始值15:14保留CMDIDX13:8命令索引号,这个在SDIO和SD标准协议中有定义CMDTYP7:6Command Type11b = Abort CMD12, CMD52 for writing “I/O Abort” in CCCR 10b = Resume CMD52 for writing “Function Select” in CCCR 01b = Suspend CMD52 for writing “Bus Suspend” in CCCR 00b = Normal

14、 Other commands DARAPRNT5Data Present Select1 = Data Present 0 = No Data Present这位设置为 1指示数据存在,并且将用数据线传输。ENCMDIDX4Command Index Check Enable这位设置为1,HOST将检查命令索引是否存在。没有将出错1=Enable 0 = DisableENCMDCRC3Command CRC Check Enable如果这位设置为1,HOST将检查CRC,如果出错,报告CRC命令错误。否则不检查1=Enable 0 = Disable2保留PSPTYP1:0Response Type Select 00 = No Response 01=Response Length 136 10=Response Length 48 11=Response Length 48 check Busy after response2.8 RESPONSE REGISTER这个寄存器用来存储SD 卡的响应数据。包括寄存器RSPREG0_0-RSPREG0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 化学工业

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号