引言
多媒体卡MMC的特点是闪存功耗低,密度高,体积小,可靠性高,可擦除,可重写,容量大;内部控制电路,可以使用在手机、数码相机、MP3、PDA等多种数字设备上,可反复记录30万次,现在市场上的主流容量有128MB-2GB。
SPI最早是由摩托罗拉公司提出的一种串行总线接口,支持MCU与外设的双工、同步串行通信。由于其简单的接口设计,只用4根线即可完成所有的通信工作,因此被大部分的MCU芯片所支持。利用被广泛支持的SPI总线来进行MMC卡的读写,可解决没有MMC控制器的问题。
1MMC卡
1.1MMC卡的简介
MMC卡的面积为24mm×32mm,厚度为1
.4mm,MMC卡的工作电压为2.7-3.6V,时钟频率范围为0-20MHz,为了支持广泛的应用,MMC卡接口简单(为7引脚),具有最大的可扩展性和可配置性。其中3脚为电源供应,数据操作通过4脚的串行总线完成。作为SPI设备,MMC卡的SPI通道由以下4个信号组成:CS的反(片选),CLK(时钟),DateIn(主机到卡的数据信号)和DateOut(卡到主机的数据信号)。CS的反是MMC卡的片选信号线,在整个SPI操作过程中,必须保持低电平有效;CLK便于同步,DateIn不但传输数据,还发送命令;DateOut除了发送数据外,还传送应答信号。
1.2MMC卡的SPI协议
MMC存储卡有MMC和SPI两种工作模式。MMC卡上电后即进入MMC模式;当片选(CS)线被拉低时发送Reset(CMD0)指令会使MMC卡进入SPI模式,如果需要从SPI模式转入MMC模式,只能切断电源重新上电。
SPI协议是以主从方式工作的,这种模式通常有一个主设备和一个(或多个)从设备,SPI接口是一种通用同步串行接口总线,字长为8位,用来与外部设备进行通信。该接口在工作时,主设备通过提供移位时钟和从使能信号来控制信息的流动,主设备的每次开始传送任务时,都先将片选(CS的反)线置低以激活MMC卡,使其进入工作状态。
MMC卡的SPI协议的特点主要有:被选中的卡总是对来自于设备的指令有所响应的,当卡遇到错误时,会返回一个出错响应来代替期望的数据,指令的响应是一个8位或16位的结构,只支持单块读写操作,块的大小可以大到一个扇区(512字节),小到1个字节。
2硬件电路设计
MMC卡既可以采用MMC总线访问,也可以采用SPI总线访问,大部分微处理器都有SPI接口而没有MMC总线接口,如果采用I/O口模拟MMC总线,不但增加了软件的开销,而且对大多数微处理器来说,模拟MMC总线远不如真正的MMC总线速度快,这将大大降低总线数据传输的速度。
基于以上考虑,可以采用LPC2200微处理器的SPI接口,设计访问MMC的硬件接口电路,LPC2200是系统的核心控制器,它的主要作用是将数据发送至MMC卡内存储。MMC卡的数据写入是以块为单位的,一块为512字节,所以当RAM中存放了512字节数据时,LPC2200便将其一次性写入MMC卡中。LPC2200微处理器与MMC卡卡座接口电路如图1所示,连接引脚如表1所示。
MMC接口电路
连接引脚如表1所示
3SPI模式下MMC卡的读写实现
3.1MMC卡初始化
在对MMC卡读写之前要进行初始化操作,这是确保MMC卡能在SPI模式下进行正常数据读写的前提,MMC卡上电后默认进入MMC模式,等待至少74个时钟周期后,片选信号置低,发送CMD0,CMD0的命令索引位
是000000,即发送命令字040、0x0、0x0、0x0、0x0、095。如果收到应答信号01H,则表示出错。然后向MMC卡发送CMD1,CMD1命令索引位是000001。因此进入闲置状态后CRC校验默认关闭,故CRC校验位可取任意值。受到正确的应答信号00H之后,MMC卡即进入SPI模式;如果收到应答信号不是00H,则重发CMD1直到收到正确的应答。初始化过程如图2所示。
MMC初始化过程
3.2MMC卡块读写
初始化完成后,可使用默认的读写长度(512字节)进行MMC卡的读写;也可用CMD16来设置MMC卡的块读取长度,可以是1-512字节之间的任意值。但是对MMC卡的写过程则要求块长度必须为512字节。MMC卡读写数据时使用的是绝对地址,即从0开始编号的32位地址,这里使用块号来进行读写,块号是从0开始编号的,且每块的大小为一扇区(即512字节),故开始都必须将扇区号转换成绝对地址。
(1)读取数据块
向MMC卡发送CMD17,收到有效应答信号000后,开始接收数据,数据由数据起始令牌和数据块组成,其中起始令牌值为0FE。当收起起始令牌后,随后接收数据块,读操作如图3所示。
MMC读操作
(2)写入数据块
向MMC卡发送CMD24,收到有效应答信号000后,开始发送数据。数据同样由数据起始令牌(0FE)和数据块组成。写操作如图4所示。
MMC写操作
4小结
SPI总线接口简单易用、兼容性好,使用SPI接口实现对MMC卡的读写操作是非常简单有效的。用SPI接口可以实现每秒约1MB的读写速度,而用MMC接口则可以达到每秒约3MB的读写速度。虽然读写速度降低了一些,但是已经可以基本满足读写速度的要求。
Festo CPV-14-VI 18210
BECKHOFF KL3202
Riegler MV 2218G
S7 300 DSC-T 27 19 97 5
MP Sensor Pico 26001870
ZANDER FS3
SCHMALZ 10.06.02.00049
BOSCH 0 821 400 285
ABB AF09Z-30-10-21 24-60
SCHUNK P186 - KOPF für 6XG1/8" SWK 040-041-071-100-150
CPE14-M1BH-5L-QS-8
Festo MN1H-2-3/4-MS
NJ8-18GM50-E2-3G-3D
Siemens 3RT1034-1AL24
Siemens 6ES7 132-1BL00-0XB0
WIELAND 83.040.0000.0
F5775
PKZM4-25
Siemens 6ES5 102-8MA0
NZM3-XKV70
Siemens 3RT1325-1BB40
QXA2000
SMC VT315-025G
A1271
Balluff BNS 819-99-D-11
Festo KMP3-9P-08-18
BECKHOFF BK 5110
Buschjost 8253200.8001
Omron E3T-ST12
Omron SRT2-ID16T
PULS SL30.300
S7-400 ETH DSC I-T 2731102
GLV 18-8-H-1715/92
XSDH603629
ICE2040-FB0A
AI 991
SIEMENS 6EP1 334-2AA00
SIEMENS 6ES7 321-1BL01-0AA0
SIEMENS Simatic S5 6ES5-0LB11 + 6ES5 308-3UA12
SIEMENS Simatic S5 6ES5 421 8MA12
Toolcraft ST-80A
Siemens 3RK1400-0CD01-0AA3
CE025C04S00N10
Z2S 6A1-64
CPV18-M1H-2X2-GLS-1/4 185886
SIEMENS 6ES5 441-8MA11
Siemens 6EP1353-0AA00 SITOP Stromversorgung
Siemens Simatic S7 6ES7 307-1KA01-0AA0
Siemens 6ES7 322-1BL00-0AA0
PR4850-MS2-HP3201-230V
SACB-10/3-L-M16-M8 NEU
Schleicher HBG K6
SMC EVT317V-5DZ-02F-Q
ADVUP-40-A-P-A-12Z1-24Z2
Omron SRT2-OD16T
Phoenix Interbus IBS S7 400 DSC/ I-T 2719962
Siemens Simatic S7 6ES7400-1JA01-0AA0
KL4032
AKN 18-XX
LP2 K0601 BD3
LC2 K1201 B7
SMC CXSM15-10
SIEMENS 6ES5 942-7UA13
Siemens 3TF4822-0AN2
SIEMENS Simatic S5 6ES5 441-8MA11
HESCH HE 093
X20PS2100
BCL 34 R1 F 100
Z2S 6A2-64
Festo JMEH-5/2-1/8-B 173431
PULS ML50.100
ICP con I-7510-CR
Siemens 6SC6100-0NA01
ADN-16-80-I-P-A-20K8 536218
ADN-16-20-I-P-A-35K8 536218
QX80
Block GLC 230/24-1
ifm efector300 SL5105
ifm efector200 OGT500
BECKHOFF KL4002
ES2008-0000
12310A
GD1-PS3
Danfoss Control Panel LCP 102 130B1107
Siemens 3RV1431- 4AA10
LC1D38
KFD2-ST2-Ex2
IA0004
ifm efector 200 OGH281
FANUC A03B-0801-C101
WAGO 750-530
KEYENCE FU-77V
ADVUL-32-25-P-A 156878
AIRPEL USA E9D0.5NT1T3
CKD LCR-6-10-S5D
OMRON S8PS-10024CD
TWDNOZ485T
Murr 4.6 9000-41034-0100600
STIEBER CLUTCH GFK 30
R106564040
INDA 330-00039-0
SCA 8900.0002
Ferrocontrol FB-OUT16
Ferrocontrol FB-IN16-1
Festo FR-8-1/2 6411
Riegler MV 1217G
SIEMENS 6ES7 323-1BH01-0AA0
VIPA 207-1BA00 Netzteil PS 207/2
SIEMENS 6GK7 443-5FX01-0XE0
SIEMENS 6EP1436-2BA00
Siemens 3RV1041-4JA10
SIEMENS Simatic S5 6ES5 931-8MD11 E-Stand 3
SBA Art.-Nr:751-2410
DAHMS BCD4.10.130
OSM-0025-2GA-12
Siemens C79040-A420-C37-01-87
LS / LG PLC G7E-RY08A ( G7ERY08A )
LS / LG PLC G7F-RD2A ( G7FRD2A )
Horn S 100.0300.E2 TF43
ZKL 1218K
DESTACO 267-S
Traco Power TCL 060-124
SIEMENS 6ES7 131-1BL01-0XB0
Rittal SV 9342.710
857 25D 72114 644115.0
ML9962.81 Zeitrelais AC50/60HZ220-240V
Siemens 6EP1334-2BA00
Siemens Simatic S7 6ES7321-1BL00-0AA0 E-04
igus TRC.60.087.0
Festo CDN-40-80-PPV-S2 193661
2 STüCK PCE 235-6
OP393 6ES5 982-3UA11
6FX1121 - 4BA01
TP4-2131A024M
Siemens Hilfschütz 3TH83 94-0BB4
Siemens Hilfschütz 3TH83 55-0BB4
Siemens 3RT1036-1AP00
Siemens 3RT1034-1AB00
SIEMENS 6FX1132 1BB01
Siemens 3RF2320-1AA02
MSM206-402
CKD LCR-6-10-B
KEYENCE FU-79
Siemens C98040-A1052-P1-04-86 C98043-A1052-L103
CJ1W-PA202
DSP502M
Festo LFR-D-MIDI + PEV-1/4-B-M12-SA
4IK25GN-SWM
Siemens 6ES5 777-0BB00
MURR Elektronik 27022 MPV12
T-91-S 522-B14
ABZFE-R0050-10-1X/M-B
Siemens 6ES7 222-1HF22-0XA0
Weld Fase CAI-94V-0 CS 269A
Siemens 3TK2802-0AL2
Riegler MV 1216G
LP2 K1210 BD3
SIEMENS 6ES7 323-1BH01-0AA0
AI 832.11
WAGO Feldbuskoppler PROFIBUS DP ECO 750-343
AC1212
VIPA 101-4FH50
SIEMENS 6ES7 421-1BL00-0AA0
U1681
SIEMENS 4AV2600-2AB
Siemens 3RH1122-2BB40
OSRAM OPTOTRONIC OT 65/220-240/24
NTK5/24
Siemens C79458-L2201-A1
SIEMENS 6EP1321-1SH02
Yaskawa JZSP-CSM02-05
SPG S9I40
W0053641099
Weller 0052641099
Siemens 3RT2026-1NP30
SIEMENS 6ES7 133-1BL01-0XB0
Riegler 243.03 NW 7,2 x G 1/2"
01XM2004XG15S
02XM2004XG15O
Siemens Simatic S7 6ES7291-8BA20-0XA0
Siemens 3RB1246-1PM10
STAR /REXROTH 0632-002-00 D80
Rittal SV SV3439.000
Festo MUP-63
SPLO-250X55-NBR-50
TP3-2131A024M
SIEMENS 6FX1132 1BB01
SIEMENS Simatic S5 6ES5 306-7LA11
Siemens 6ES7212-1BA01-0XB0 E:01
Siemens Simatic S7 6ES7 360-3AA01-0AA0
Netzteil ULMER TMSG 3/1
BLOCK HFE 100-230/8
FS5751-49-52
DSNU-16-15-P-A-MA