目录

1 eMMC简介

1.1eMMC的外观图与引脚说明图

1.2eMMC的定义

1.3eMMC的基础操作

2 eMMC5.1协议

2.1 eMMC5.1协议文档的获取

2.2 eMMC的初始化

2.3 eMMC的读写

3 本专栏教程的目标

3.1 内容核心

3.2 教程安排

1 eMMC简介
通俗点说,eMMC就是一个存储芯片,就像SD卡一样,用于存取数据。从普通开发者角度看,只要遵循eMMC协议,就可以对eMMC芯片进行读写操作。(拓展:SD卡、UFS芯片、eMMC芯片、U盘都是类似的功能,从使用角度看,只是接口不同、通信协议不同,本教程只涉及目前最新的eMMC芯片,遵循eMMC5.1协议。)

1.1eMMC的外观图与引脚说明图
下图(图一)是网上搜索到的一款国产eMMC芯片(eMMC采用BGA封装):


图一 eMMC芯片外观
而关于其引脚定义,笔者也在网上找到一个图(图二):

图二 eMMC引脚定义图

其中,RFU 引脚暂无作用(RFU是 “Reserved for Future Use” 的缩写)

而关于其他引脚的作用,见下图图三(具体作用后续会详细描述):

注:图三出自eMMC5.1协议文档 第5.3章 (e•MMC Device Overview)


图三 eMMC引脚说明

特别说明的是DS引脚,也就是Data Strobe引脚,原文档描述为:

Data Strobe : This signal is generated by the device and used for output in HS400 mode.
The frequency of this signal follows the frequency of CLK. For data output each cycle of this signal
directs two bits transfer(2x) on the data - one bit for positive edge and the other bit for negative edge.
For CRC status response output and CMD response output (enabled only HS400 enhanced strobe
mode), the CRC status and CMD Response are latched on the positive edge only, and don't care on
the negative edge.
 
简单点说,就是这个引脚只有在HS400的速度模式下才被使用,后续讲到给eMMC调速度模式的时候会详述。目前只需要知道eMMC的速度模式分为SDR50、HS200、HS400,共三种。常用的速度为SDR50模式的26M、52M;HS200模式下的200M;HS400模式下的400M;更详细的如下图图四所示:

图四 eMMC总线速度模式

关于eMMC总线的连线图如下图图五所示:
注:图五出自eMMC5.1协议文档 第10 章 (The e •MMC bus)

图五 eMMC总线连线图
 
1.2eMMC的定义
eMMC ,即:Embedded Multi Media Card 的缩写。由一个嵌入式存储解决方案组成,带有MMC接口、快闪存储器设备及主控制器。所有都在一个小型的BGA 封装。接口速度最高可达每秒400MBytes,其接口电压可以是1.8V或者是3.3V。(一般VCCQ 1.8V,VCC 3.3V)

注:eMMC的电压要求如下图图六所示,图六源自协议10.3.3章,其中,The VCCQ must be defined at equal to or less than VCC,也就是VCCQ的电压不可以比VCC大:


图六 eMMC电压要求
1.3eMMC的基础操作
对于一般的开发者,eMMC的基础操作包括:初始化操作(CMD0+CMD1+CMD2+CMD3+CMD7)、(多种速率的)读写操作、写保护操作、分区操作。

在此后的章节中将详细展开叙述。本篇为开篇简介与概览,故而只是简单介绍。

2 eMMC5.1协议
2.1 eMMC5.1协议文档的获取
如下链接,无需C币:

eMMC5.1协议文档(目录中重点章节已高亮)

2.2 eMMC的初始化
eMMC上电后,需要先初始化,才能进行后续的读写操作。

初始化的命令序列为:CMD0 发一次、CMD1发多次(直到返回值首位为1)、CMD2、CMD3、CMD7

以上的命令序列发送成功后,eMMC便进入了transfer模式,可进行读写等操作。

2.3 eMMC的读写
eMMC进入了transfer模式后,也就是初始化序列发送成功后,eMMC上盘成功,可进行读写操作。

普通的读写方式有两种:

(1)主控芯片先通过命令指定起始地址,再通过命令指定要传输的块数,然后发送数据;

(2)主控芯片先通过命令指定起始地址,开始发送数据,发完数据再发命令通知eMMC芯片结束读写操作。

后续章节将详细描述。

3 本专栏教程的目标
目标为:从普通开发者角度,描述清楚eMMC的常用功能,使得读者能对eMMC有一个较为全面的了解,并具备一些基本的开发能力。

3.1 内容核心
(1)eMMC芯片的引脚说明;

(2)eMMC芯片的初始化;

(3)eMMC芯片的读写操作;

(4)eMMC芯片的速度模式调整;

(5)eMMC芯片的分区操作;

(6)eMMC芯片的写保护操作。

3.2 教程安排
本教程篇幅计划15篇,其中:

第1-3篇为基础篇,涉及内容为本教程全部内容的简单描述,供入门与了解使用;

第4-5篇为初始化相关内容的专讲;

第6-8篇为读写操作的专讲,包括普通读写与打包读写;

第9-11篇为三种速度模式的专讲(SDR50、HS200、HS400);

第12-13篇为分区操作相关内容;

第13-14篇为写保护操作的相关内容;

第15篇为几个常用寄存器的专讲与全教程的总结

第16-17篇(如果有时间写的话)为命令队列 (CMDQ) 的相关内容

————————————————
版权声明:本文为CSDN博主「eMMC码农」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/mm13420109325/article/details/111772169

eMMC5.1入门教程【1】eMMC简介与协议概览,有引脚详细定义很多是NC,参照STM32的FLASH写保护机制,emmc也有因为他是FLASH 的升级版本相关推荐

  1. eMMC5.1入门教程【1】eMMC简介与协议概览

    目录 1 eMMC简介 1.1eMMC的外观图与引脚说明图 1.2eMMC的定义 1.3eMMC的基础操作 2 eMMC5.1协议 2.1 eMMC5.1协议文档的获取 2.2 eMMC的初始化 2. ...

  2. [转]【Unity3D入门教程】Unity3D简介、安装和程序发布

    <Unity3D入门教程>会带领零基础的初学者,一步步学会使用Unity3D来开发简单的应用程序,走近游戏开发的世界.本系列教程虽然不会面面俱到地深入到全部的知识点,但是会涉及到所有入门阶 ...

  3. 【Protocol Buffer】Protocol Buffer入门教程(一):简介和安装

    00. 目录 文章目录 00. 目录 01. Protocol Buffer简介 02. Protocol Buffer优缺点 03. Protocol Buffer安装 04. Protocol B ...

  4. protobuf入门教程(一):简介和安装

    1.1 简介 1.1.1 什么是protobuf protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台.google 提供了多种语言的实现: ...

  5. eMMC5.1入门教程【2】协议杂谈

    前言 接下来主要分析一下第1章中分享的eMMC5.1协议文档,读者可到第一章提供的链接中下载相关文档. 1 一些常用命令及其作用 协议 6.10 Commands的目录结构如下图(图一)所示: 图一 ...

  6. odoo 开发入门教程系列-安全-简介

    安全-简介 前一章中我们已经创建了第一个打算用于存储业务数据的表.在odoo这样的一个商业应用中,第一个考虑的问题就是谁(Odoo 用户(或者组用户))可以访问数据.odoo为指定用户组用户提供了一个 ...

  7. Python入门教程详解

    Python入门教程 目录 1. 简介 2. 安装 3. 基本语法 4. 数据类型 5. 条件语句 6. 循环 7. 函数 8. 模块 9. 异常处理 10. 文件输入输出 1. 简介 Python是 ...

  8. Visual Studio Code 入门教程

    一.入门教程 1.1 简介   Visual Studio Code ,简称 VSCode.它是一款由微软开发且跨平台的轻量级但功能强大的免费源代码编辑器.该软件支持语法高亮.代码自动补全.代码重构. ...

  9. Docker新手入门教程

    Docker新手入门教程 1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接 ...

最新文章

  1. 百度“知识增强的跨模态语义理解技术”获国家技术发明奖
  2. java存储整数_关于数组:Java:存储大量整数的最佳数据类型是什么?
  3. Window server 补丁修复及补丁回滚
  4. Activiti学习——Activiti与Spring集成
  5. 018_Spring+ActiveMQ(消息中间件)
  6. 电饼锅的样式图片价格_进口珐琅铸铁锅专场,精致小厨娘们来康康!
  7. python集合数据结构_Python数据结构-集合
  8. java并发编程面试
  9. jboss mysql驱动目录_找不到mysql.jdbc.Driver – MySQL,JBoss
  10. java的三大特征详解
  11. 有关二叉树的相关实现:建树,遍历(递归与非递归实现)
  12. 为什么浏览器的用户代理字符串以 Mozilla 开头?
  13. uni-app 文件下载
  14. 李大狗:从 Logo, Basic 到区块链 - Mixin Network 开发者访谈系列 第二期
  15. 0基础如何用几分钟学会视频剪辑
  16. 折页损失函数代码实现
  17. php 分数相同怎么排名,怎么算出成绩排名_学校班级成绩排名计算方法
  18. iOS中 Realm的学习与使用 韩俊强的博客
  19. 不要浪费一场好危机(丘吉尔)
  20. 早期股权分配不是有钱就能搞定的!

热门文章

  1. android 绘制5格电量,Android 怎么把状态栏信号格改为5格
  2. 在vue中如何判断滚动条到达底部
  3. 【自然语言处理】 知识融入方法
  4. 微信营销十三招(干货)
  5. 大话STM32F103系统架构
  6. M3U文件上传服务器,m3u文件
  7. iup界面库的复古界面问题 改成适应windows风格 windows10风格
  8. matlab画雷克子波
  9. 计算机毕业设计Java健康生活运动咨询系统(源码+系统+mysql数据库+lw文档)
  10. 在文字转换成语音怎么弄?这篇文章教会你