历史上的今天
返回首页

历史上的今天

今天是:2025年04月07日(星期一)

正在发生

2018年04月07日 | MMC与PIC单片机接口电路和代码设计

2018-04-07 来源:eefocus

1 概述

Sandisc公司推出的大大容量串行Flash存储器产品——MultiMediaCard(MMC),通常叫作多媒体卡。它的体积比SmartMedia还要小,不怕冲击,可反复读写记录30万次,驱动电压2.7~3.6V,可变时钟频率范围为0~20MHz,目前常见的容量为64MB/128MB。ATP EleCTRionICs公司已经率先推出了1GB的高容量MMC。除了体积小、寿命长、容量大等特性外,还具备存储区纠错能力;低功耗;5ms内没有接收到命令字后,自动转入休眠状态;支持热插拔等优点。MMC可以格式化为FAT文件系统,便于上位机读写。

2 MMC简介

2.1 引脚排列及功能

根据存储容量的不同,MMC有SMDB和SDMJ两种构成技术。SMDB即二进制NAND技术(Binary NAND),16MB和32MB容量的MMC卡采用此技术。目前常用的64MB和128MB的MMC采用SDMJ,即MLC(Multi Level Cell)NAND技术。各容量的MMC卡,其外形尺寸及引脚排列相同,如图1所示。

MMC读写接口可以在MMC和SPI两种通信 协议下工作。MMC是由MMCA协会开发的高性能三线制通信协议,即CMD、CLK、DAT线,最大可寻址64000张MMC卡,单个物理地址可叠放30张卡,支持顺序读写及单/多数据块读写操作,是MMC卡默认的通信协议。SPI协议为可选协议,工作效率不及MMC协议;但SPI协议简单易用,兼容性好,便于和单片机连接使用。本设计采用SPI通信协议,下文将详细介绍。

2.2 内部逻辑结构

MMC卡的内部逻辑结构可分为四部分:MMC/SPI接口、单芯片控制器、数据闪存模块、控制线和数据线。MMC/SPI接口实现与主控制器的通信。

单芯片控制器完成接口协议、数据存储检索、纠错码算法、故障诊断处理、电源管理和时钟控制功能。数据内存模块可以实现整个存储空间内的单字节访剩??皇羌虻サ淖终罅校??潜环殖闪硕嘀纸峁埂?12个字节构成1个扇区(sector)。根据MMC卡容量的不同,16或32个扇区构成1个擦除族(erase group)。32个擦除族构成1个写保护族(write protect group)。此设计使MMC操作灵活,使用方便。控制线和数据线实现数据存储区的访问,其内部逻辑结构如图2所示。

3 MMC/SPI通信协议

MMC卡上电后,默认进入MMC模式。如果转入SPI模式下工作,需进行模式切换。SPI模式设定流程如图3所示。

如需从SPI模式转入MMC模式,只能切断电源,重新上电,进入默认MMC模式。从实际应用角度出发,SPI模式设计简单,操作方便,但数据传输速率逊于MMC模式。基于设计要求,笔者采用了SPI通信协议。

     4 存储器读写接口

4.1 SPI接口及操作模式

SPI接口是一种通用同步串行接口总线,字长为8位,用来与外部设备进行通信。SPI接口利用CLK、DataIn和DataOut三根线进行数据的读写。其中,CLK为时钟信号,有外部控制器提供;Datain和DataOut为数据输入和输出线。CS是MMC片选信号线,在整个SPI操作过程中,必须保持低电平有效信号。

SPI接口共有四种操作模式,分别为0、1、2和3。SPI操作模式决定了设备接收和发送数据时的时钟相位和极性,即决定了时钟信号的上升和下降沿与数据流动方向之间的关系,如图4所示。本设计采用模式3。

4.2 MMC卡命令及答复信号

所有MMC卡命令字长度均为6个字节,传输从高位开始,且包含一个CRC校验字。

命令字索引采用二进制编码。比如CMD0的索引位是000000,CMD39的索引位是100111。MMC卡命令字分为10个命令组,每组由多个命令字组成,完成MMC卡功能设定。SPI模式下的Sandisc MMC卡支持其中的6个命令组,可实现基本设定、数据块读、数据块写、擦除、写保护、MMC卡锁定功能。

MMC卡有多种应答信号格式,传输从高位开始。SPI模式下,存在5种应答信号格式,分别为R1、R2、R3、Busy、R1b。

接收到每个命令后,MMC卡都发送一个格式为R1的应答信号,卡状态查询命令字CMD13除外。此应答信号占1字节,最高位为0,低7位为错误标志。若某位为1,表示存在相应错误。


Busy应答信号长度为多个字节。各位都为0,表示卡正忙。存在非零位表明卡已经准备好接收下一命令。



R2格式应答信号长度为2字节,用于答复卡状态查询命令字CMD13。首字节格式同R1,第2个字节表示的错误类型。

R3格式应答信号长度为5字节,答复卡内OCR豁口读命令CMD58。首字节格式同R1,其余4字节为OCR豁口内容。

R1b格式应答信号包括两部分,R1格式部分和Busy格式可选附加部分。

4.3 MMC在SPI模式下的传输时序

MMC在SPI协议下读写时序如图5所示。主控制器发送读/写命令,当收到OUT传输互上正确的应答信号后,OUT/IN传输线开始读/写操作。

5 MMC卡与单片机接口实例

5.1 硬件电路设计

图6为笔者采用Sandisc公司容量为32MB的MMC卡
设计的便携式数据采集系统的一部分。单片机采用美国MICroChip公司推出的PIC16F73B。单片机的工作频率为4MHz,采用Port C的硬件SPI接口进行MMC卡的读写操作。

5.2 软件设计

访问MMC卡存储单元前,需要设定访问块长度。默认长度为512字节。本设计是通过写缓存芯片FM24CL64,达到512字节后转入主存MMC的(硬件电路图应作相应的修改),所以读写长度不再设定。MMC格式化为FAT文件系统的结构后,数据以文件的形式为上位机所读取。

MMC接口部分软件设计流程如图7所示。

5.3 MMC卡SPI初始化与写子程序

因为MMC可以在两种协议下工作,且默认为MMC操作模式,所以必须经过初始化才能在SPI模式下工作。初始化和写子程序代码见www.dpj.com.cn。


推荐阅读

史海拾趣

Advanced Components Industries Inc公司的发展小趣事

随着环保意识的日益增强,ACI积极响应国家号召,致力于绿色电子产品的研发和生产。公司投入大量资源研发环保材料和技术,推出了一系列符合环保标准的产品。

这些绿色电子产品在市场上受到了广泛欢迎。消费者越来越关注产品的环保性能,ACI的产品正好满足了这一需求。同时,公司的环保理念也得到了社会各界的认可和支持,进一步提升了公司的品牌形象。

光磊(GL)公司的发展小趣事

在国内市场取得一定成绩后,ACI开始寻求国际合作,以进一步拓宽市场。公司与国际知名电子企业建立了战略合作关系,共同研发新产品,开拓新市场。这些合作不仅提升了ACI的技术水平,还为其带来了更多的国际订单。

通过国际合作,ACI的产品逐渐进入国际市场,公司的影响力不断扩大。同时,ACI也积极参与国际电子行业的交流活动,与同行分享经验,学习先进技术,不断提升自身实力。

DRI Relays Inc公司的发展小趣事

品质是企业的生命线。为了提升产品质量和客户满意度,DRI Relays Inc公司不断加强品质管理。公司建立了严格的质量检测体系,对原材料、生产过程和成品进行全面检测。同时,公司还注重员工素质的提升,定期开展培训和技能竞赛等活动,提高员工的技能水平和质量意识。这些措施有效地保证了公司产品的稳定性和可靠性,赢得了客户的信任和好评。

Fluke公司的发展小趣事

随着全球环保意识的提高,DRI Relays Inc公司积极响应环保号召,践行绿色环保理念。公司采用环保材料和节能技术,减少生产过程中的能源消耗和废弃物排放。同时,公司还注重产品的回收和再利用,为客户提供环保解决方案。这些举措不仅提升了公司的社会形象,还为公司带来了更多的商业机会和发展空间。

光大芯业公司的发展小趣事

面对全球经济的不确定性和市场竞争的加剧,光大芯业始终保持着清醒的头脑和坚定的信念。他们积极应对各种挑战,通过优化管理、提升效率、降低成本等措施,不断提高自身的竞争力。同时,公司还加大了对新技术、新产品的研发投入,以保持在市场上的领先地位。正是这种不断进取的精神和坚定的信念,让光大芯业在电子行业中不断发展壮大。

千志电子(CCO)公司的发展小趣事

为了进一步拓展业务版图,千志电子开始进军国际市场。2006年,千志电子在香港设立了千志电子(香港)有限公司,将其作为国际服务据点重心之一。这一举措使千志电子能够更好地了解国际市场需求和趋势,加强与国外客户的联系和合作。同时,千志电子还积极参加国际展览和论坛,展示其优质产品和先进技术,提高了品牌知名度和国际影响力。

问答坊 | AI 解惑

真正的U盘加密+文档同步+计算机锁定=无敌U盘伴侣

这是一款完全免费的软件,程序体积小巧,不到100KB,可以在U盘或电脑上运行。界面也绝对够“魅惑”,她还是一款绿色软件,就可以完全解决掉你上面将面临的问题!! --------------------------------------------------------- 应用举例: A、随 ...…

查看全部问答>

报告:iPad、平板电脑将蚕食鲸吞Wintel笔记本?

机遇与挑战: 平板电脑销售大跃进Windows操作系统与英特尔芯片笔记本受冲击更多消费者转而使用Google操作系统 市场数据: 今年平板电脑销售量至少1,500万台 根据Barclays Capital发布的研究报告,采用Windows操作系统与英特尔芯片的笔记本 ...…

查看全部问答>

我有资源要上传,可是好慢~~~

我有资源要上传,可是好慢~~~ 为什么上传个1M的资源,那么慢. 用了几个小时也没完,最后提示验证码出错了~~~晕~~~…

查看全部问答>

这个[excluded from build]是什么意思?

用PB5写了个简单的IIC驱动程序. 编译OK. 并且在内核中已经有了编译出来的iic.dll文件. 但是在PB的FileView栏中Driver -> IIC的后面有[excluded from build]. 这个[excluded from build]是什么意思? …

查看全部问答>

【简单的VC编译DDK的一些小问题,顶者皆分】

问题一:在VC中C/C++的preprocessor设置:WIN32=100,_X86_=1,WINVER=0x500,DBG=1 其中WIN32 = 100是啥意思? 问题二: Base address:0x10000 Entry-point sysmbol:DriverEntry Statck Reverse:0x400000,缺省是1MB,但为什么要设成4MB? Commit:0 ...…

查看全部问答>

Flash的问题

    请教各位,关于CE下,开发Flash播放器的问题。     之前在用VC开发PC版的Flash播放器,可以使用ShockWaveFlash这个现成的组件,轻松实现。但可惜的是CE5中无法使用。 据说以后CE7就会集成Flash引擎。 但是现在必须在CE5. ...…

查看全部问答>

哪有串口\usb通讯或工业控制方面的软件开发培训,vc vb dephi等皆可,要求时间较长,能学彻底的。

哪有串口\\usb通讯或工业控制方面的软件开发培训,vc vb dephi等皆可,要求时间较长,能学彻底的。 …

查看全部问答>

那位用51和PCD3311做过自动拨号报警器,能帮帮我吗

做个4路防盗报警器要用到自动拨号。。。。     拨号芯片用那个好?PCD3311可以吗?     能给点资料或建议吗          谢谢!…

查看全部问答>

请教USB

                                 请问ST32F10X系列关于USB硬体有没有推荐线路?是否需要隔离或者驱动?…

查看全部问答>