您好,欢迎访问三七文档
一eMMC的结构设备状态与工作模式和总线模式的关系eMMC主机的功能方框图内部总线RST_n控制逻辑RST_nCLK发送控制逻辑CLKCMD发送接收控制逻辑CMDDAT0状态检查控制逻辑CRC7生成/校验控制逻辑DAT1-7发送接收控制逻辑CRC16生成/校验控制逻辑(16单元)DAT0DAT1-7mlbus时钟及复位控制模块命令事务模块DAT0忙状态监测模块数据事务模块系统RAMeMMC_coreCLKCMDDATsys_clksys_rst_n二eMMC的内部寄存器寄存器宽度(字节)描述操作的命令CID16128位的设备识别寄存器,包括一个特有的设备的识别号码CMD2RCA216位的相对地址寄存器,在卡的定义阶段由主机赋值,用于之后阶段设备的识别,默认的值0x0001CMD3DSR216位的驱动寄存器,可用于为扩展的操作条件提高总线的性能,默认值为0X404。CMD4CSD16设备的专用数据寄存器,包括:数据的格式、错误修正的类型、最大数据访问的时间、数据传输的速度、是否有DSR寄存器等CMD9CMD27OCR432位的设备工作条件寄存器,存储电压值、访问模式、状态位等信息CMD1EXT_CSD512512字节的设备的扩展专用数据寄存器(192字节可以编程),可以设置设备的各种工作配置,可有SWITCH命令编程CMD6三命令和应答命令:1命令的类型有四种命令的类型:1)无应答的广播命令(bc)2)有应答的广播命令(bcr)3)DAT上无数据传输的点对点命令(ac)4)DAT上有数据传输的点对点命令(adtc)2命令的格式所有的命令都是固定的长度48位,格式如下表所示所有命令都是以0开始的,紧接着是传输的方向(主机发出的就为1,设备发出的就为0),接下来的6位是命令的索引,这是一组二进制码(0~63),设备就是对这六位译码,区分是哪种命令,还有一些命令需要arg值(比如地址),这一段的长度为32位,所有的命令都会被CRC7保护着,所以CRC保护的是之前的40位,最后以1结束。命令的应答应答也是由CMD传输的,由左边的位开始传输,应答位的长度根据应答的类型而定。应答是以0开始的,紧接着是传输的方向(设备=0),接下来的值根据类型不一样也不一样,除了R3以外都会被CRC7保护着,每条命令都是以1结束的。一共有五种类型的命令应答形式:R1,R1b,R2,R3,R4,R5R1:该应答的长度为48位,45:40显示的是命令的索引,39:38是32位的设备状态。R1b:和R1的区别只是在DAT0上存在忙信号的传输。R2:(CID、CSD寄存器)该应答的长度为136位,CID的内容会作为CMD2和CMD10的应答发送给主机,CSD的内容会作为CMD9的应答发送给主机,仅仅只有CID和CSD的[127:1]被传输,最后一位被应答的结束位所代替。R3:(OCR寄存器)该应答的长度为48位,OCR寄存器的值会作为CMD1的应答发送给主机。R4:(FastIO)该应答位的长度48位,ARG部分包括RCA的值、寄存器的值、寄存器的值,如果操作成功,状态位就会被置位。R5:(中断请求)该应答的长度为48位,如果应答是主机自己发送的,那么RCA的值为0x0000。3命令和应答的时序:无论是单倍数据率模式还是双倍数据率模式,主机的命令和设备的应答都是在时钟的上升沿采样的。设备的识别及设备的操作条件的时序设备的识别(CMD2)和设备的操作条件(CMD1)工作在open-drain模式下,设备给主机的应答是在NID个时钟周期后开始的。如果在经过NID+1个时钟周期仍然没收到应答的话,主机就需要做超时报告(NID=5)给RCA赋值的时序给RCA赋值(CMD3)也是工作在open-drain模式下,从主机发完命令道设备应答之间最小的延迟时间为NCR个时钟周期。(NCR=2-64)数据传输模式下命令及应答的时序:在设备接收到RCA后就会打开数据传输模式,该模式是工作在push-pull模式下的。在发送完命令之后紧接着有两位的Z(高阻),这是给总线定义方向留的时间,之后是被应答器件设为P位,除了CMD1,2,3以外,所有的应答时序都与这个图有关。(NCR=2-64)R1b的应答:有些命令,比如说CMD6,在R1应答的时候需要BUSY信号,在命令传输完两个时钟周期后,BUSY信号开始,DAT0线被拉低,DATA1-7上的值无关。(NST=2,HS200:2-4)最后一条设备的应答--下一条是主机的命令:主机在接收到设备最后一条应答之后,在经过至少NRC个时钟周期之后主机就可以开始下一条命令传输,这个时序图与所有的主机命令都有关。(NRC=8)最后一条主机命令--下一条是主机命令在主机发送完最后一条命令后,在经过至少NCC个时钟周期之后主机就可以发送最后一条命令。(NCC=8)一种CMD命令发送控制模型命令索引寄存器6-bit命令Wire:HIGHLOW32-bit6-bit命令参数寄存器32-bit7-bitHIGHCRC7生成控制模块启动和停止(计数)控制时钟发送控制应答接收模块控制状态寄存器应答(命令)参数寄存器32-bit命令索引寄存器6-bit应答控制状态寄存器(8-bit)发送使能应答格式应答格式:0:长度48-bit1:长度136-bit延迟模式:0:NCR–最小2时钟周期,最大64时钟周期1:NID–最小5时钟周期,最大5时钟周期CRC状态忙状态接收使能超时接收完成延迟模式命令及应答的状态转换图IdleSed_count=0Wait_count=0Rev_count=0pre_count=0Sed_cmdSed_count=sed_count+1IfSed_count=39crc_done=1IfSed_count=47sed_done=1Wait_repIRQ_en=0:Rep_time_type=0:ifwait_count=64overtime=1Rep_time_type=1:ifwait_count=5overtime=1Rev_repRep_len_type=0:ifrev_count=38crc_done=1ifrev_count=46rev_done=1Rep_len_type=1:ifrev_count=126crc_done=1ifrev_count=134rev_done=1Ifcrc_reg=0crc_satae=1Elsecrc_state=0Start=1Rep_en=0,sed_done=1Rep_en=1,sed_done=1Cmd=0Over_time=1Rev_done=1Pre_idlepre_count=pre_count+1pre_count=7DAT0!=0IRQ_en=1,start=1四EMMC的工作模式eMMC有五种工作模式:1)引导操作模式2)设备的识别模式3)中断模式4)数据传输模式5)非活动模式引导操作模式:Pre-idlestateBOOT_PARTITION_ENABLEbitsetPre-bootstateCMDlinelowfor74ormoreclockcycles,orCMD0witharg=0xFFFFFFFABootstateCMDsignalhighorCMD0witharg=0x00000000IdlestateCMDlinelowforlessthan74clockcyclesexceptCMD1andCMD0witharg=0xFFFFFFFACMD1Power-onBootsequencenotsupportedorBOOT_PARTITION)ENABLEbitclearInactivestateCMD15CMD0witharg=0x00000000FromallstateExcept(ina)CardisbusyorhostomittedVoltagerangeBootmodeCMD0witharg=0xF0F0F0F0FromallstateExcept(ina)Rst_nsignalRST_nsignalFromallstateExcept(ina)在上电或软硬件复位后,在CMD1发送之前,如果保持CMD线为低不少于74个时钟周期,设备就识别出启动了引导操作模式,内部就会开始准备引导数据。主机就会从EXT_CSD[179]字节的[5:3]选择的引导区来读取引导数据,在将CMD线拉低1秒以后,设备就通过DAT线开始发送第一个引导数据给主机,主机必须保持CMD线为低直到读完所有的BOOT数据(push-pull模式)。设备的识别模式;IdlestatePower-onCMD0witharg=0x00000000FromallstateExcept(ina)CMD1CardisbusyorhostOmittedvoltagerangeInactivestateNon-compatiblevoltagerangecard,orifhostcannotuseSectorAccessModeincard2GBReadystateCMD2CardlossesbusIdentificationstateCardwinbusCMD3Stand-bystateCMD40Wait-IRQstateAnystartbitdetectedonthebusData-transfermodeInterruptmodeCard-identificationmodeData-tranfermodeFromallstateexceptSleepstate(slp)indata-transfermodeCMD15设备的识别过程:主机首先发送CMD1来获取设备的操作条件,对于不兼容的设备会进入非活动状态,之后主机发送广播命令CMD2来获取所有设备的CID号,所有没有定义的设备(处于ReadyState的设备)会同时发送他们的CID号,但是只会有一个设备成功的将CID号完全的发送给主机(设备可以监测发到总线上的设备号),其他设备会依然停留在ReadyState状态等待下一个识别周期。而被选中的设备会进入设备的识别状态,之后主机会发送CMD3命令来给这些设备赋一个相对地址,以用于将来的数据传输,完成赋值后,设备就进入到Stand-by状态,同时会将输出驱动由open-drain变为push-pull。主机会重复这样的过程,直到没有设备应答CMD2为止(等待应答的时间为NID=5个时钟周期)。中断模式Stand-byStateWait-IRQStateCMD40“0”sentCMD4,910,39CardIRQecentoccurred,sendresponseCMD3CMD15CMD0witharg=0x00000000Orarg=0xF0F0F0F0CardidentificationmodeNOIRQfromthiscard,startbitdetectedonbusDatatransfermodeInterruptmodeIRQfromthiscard.IfhostsendsSimultaneouslyitloosesalreadyafterSecondbitofresponseDatatransfermodeFromallstateexceptSleepStateindata-transfermodeFromallstateinData-transfermodeRSTsignalFromallstateExcept(ina)CMD13NOstatetransitioninData-transfermode主机通过CMD40使设备进入Wait-IRQ状态,设备就会等待内部的中断时间发生,一旦发生,设备就会给主机一个应答(open-drain),返回Stand-by状态,同时主机也会等待命令线上的起始位(0),一旦收到起始位,设备也会放弃中断模式,并进入Stand-by状态;主机也可以自己给自己发送一个CMD40应答,使设备回到Stand-by状态,发送的应答RCA=0x0000,D
本文标题:EMMC协议
链接地址:https://www.777doc.com/doc-5068953 .html