一. 简介
本篇文章将介绍eMMC如何上电启动,并且初始化进入到我们所需要的模式当中去,同样只介绍相关的内容,一些无关却重要的知识点,可以自行查看手册。
FPGA驱动eMMC系列(一)-------简介
二. 上电启动
手册上面有对这部分的描述,可惜的是,这部分内容在手册的末尾,约278页,看完前面大部分,可能还是云里雾里。
欢迎关注 FPGA之旅
回复eMMC代码V1 获取完整工程,目前支持高速和HS200.HS400有点问题,可能是我PCB的问题。
手册上写明白了,一共分为如下几个步骤,下面就简单的说明一下
**2.**上电的时候,时钟频率不能超过400KHZ,可以设置为200KHZ
**3.**然后是延时1ms以及74个时钟周期,延时个1.5ms或者更久就可以了
**4.**重复发送CMD1命令,并且携带0xC0FF8080参数(容量一般是大于2G的),直到响应中的OCR寄存器为0xC0FF8080
上电启动,就这几点,时钟频率和延时需要注意
三. 分配设备地址RCA
在使用eMMC的时候,需要主机为分配eMMC分配地址,然后选择对应的eMMC设备,也就是说一个主机可以挂载多个eMMC存储器,有点像IIC。
所以在上电后,就需要分配地址。分配地址也很容易,只需要依次发送四个命令即可。
CMD2 : 广播,eMMC发送其CID的值给FPGA,
CMD3 : 携带16bit的RCA地址,发送给设备
CMD9: 携带16bit的RCA地址,发送给设备,如果设备的地址与接收到的一致,那么设备将会放回其CSD的值,用来确定CMD3是否分配地址成功
CMD7:携带16bit的RCA地址,选择该RCA地址的eMMC设备,完成后,就可以进行读写操作了
四. 模式选择
上电后,默认为兼容模式,且数据线为1bit。一般都不是我们所需要的,所以需要进行模式切换
模式切换以及数据位宽选择都是通过CMD6来实现的,CMD6命令非常重要的,需要好好研究一下,后面会详细讲解。
整个上电初始化的过程就是这样子的,完成后,就可以进行读写操作了。
命令发送过程如下 ,下节将介绍如何编写命令发送与接收响应的代码
公众号:FPGA之旅