Академический Документы
Профессиональный Документы
Культура Документы
Objetivo: Disear un sistema que permita ilustrar las operaciones de lectura y escritura en
una memoria SD/MMC.
Se definen las siguientes actividades a realizar en el circuito que cumplir el objetivo
planteado:
-
Selector de
Lectura/Escritura
Mdulo SPI
SDO
LCD
SDI
Microcontrolador Master
SCk
SDI SS SDO
Memoria
SD/MMC
SELECTOR DE LECTURA/ESCRITURA
Este bloque no es ms que una seal digital implementada mediante un switch. En la figura
2 se observa a switch con la etiqueta Escritura/Lectura y la referencia SW, nombre
correspondiente a la variable booleana con la que se decidir entre las operaciones de
escritura (SW = 0) y lectura (SW = 1).
VDD
R1
2.4k
SW1
Ecritura/Lectura
MEMORIA SD/MMC
Nombre
Descripcin
CD/DAT3
Detencin de la tarjeta
CMD
Comando
Vss
GND
Vdd
Alimentacin
Clk
Reloj
Vss
GND
DAT0
Lnea de datos
DAT1
Lnea de datos
DAT2
Lnea de datos
Nombre
Descripcin
CS
Seleccin
DI
Entrada de satos
Vss
GND
Vcc
Alimentacin
Clk
Reloj
Vss
GND
D0
Salida de datos
RSV
Reservado
RSV
Reservado
0
Cdigo
31
0
Cdigo
CRC 1
En este trabajo se har uso del breve subconjunto de comandos descritos en la tabla 4.
Tabla 4 Comandos para operar con la memoria SD en modo SPI
Comando
Bytes
Descripcin
Respuesta
esperada
CMD0
Reset
CMD1
Inicializacin
CDM16
Configuracin de bloques
CMD24
Escritura
CMD17
Lectura
0 - FE
ISIS Proteus posee un mdulo para simular a las memorias SD/MMC, identificado como
MMC. La figura 5 corresponde a este mdulo.
DI
DO
CLK
Card
Multimedia
CS
DI
DO
CLK
CS
Card
Multimedia
La figura 6 permite observar que entre otras cosas se puede fijar el tamao de la memoria
(8 MB en este caso) y asociar un archivo (SD.IMA) contentivo de su informacin, el cual
puede explorarse mediante un editor hexadecimal. Para este trabajo se usar la aplicacin
WinHex, de la cual puede descargarse gratuitamente una versin de prueba completamente
funcional ( http://winhex.uptodown.com/ ), cuya nica limitacin es un tamao mximo de
20 KB para los archivos que requieran guardarse. La figura 7 muestra el aspecto de la
aplicacin y el archivo SD.IMA asociado al mdulo MMC de Proteus.
LCD1
Rd=1/Wr=0
D0
D1
D2
D3
D4
D5
D6
D7
SW1
7
8
9
10
11
12
13
14
B3
B4
VSS
B2
U1
B5
RS
RW
E
B1
4
5
6
VSS
VDD
VEE
1k
1
2
3
CS
20 MHz
R8
2
3
4
5
6
7
14
13
B0
+5V
B[0..5]
B2 33
B3 34
B4 35
B5 36
B0 37
B1 38
39
40
50%
Vdd
RA0/AN0/C1INRC0/T1OSO/T13CKI
RA1/AN1/C2INRC1/T1OSI/CCP2B
RA2/AN2/C2IN+/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/C1IN+/VREF+
RC3/SCK/SCL
RA4/T0CKI/C1OUT
RC4/SDI/SDA
RA5/AN4/SS/HLVDIN/C2OUT
RC5/SDO
RA6/OSC2/CLKO
RC6/TX/CK
RA7/OSC1/CLKI
RC7/RX/DT
RB0/AN12/FLT0/INT0
RB1/AN10/INT1
RB2/AN8/INT2
RB3/AN9/CCP2A
RB4/KBI0/AN11
RB5/KBI1/PGM
RB6/KBI2/PGC
RB7/KBI3/PGD
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5/P1B
RD6/PSP6/P1C
RD7/PSP7/P1D
RE0/RD/AN5
RE1/WR/AN6
RE2/CS/AN7
RE3/MCLR/VPP
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
RN1
1
2
3
4
5
6
7
8
8
9
10
1
16
15
14
13
12
11
10
9
1k
1
2
3
4
5
6
7
8
ON
PIC18F4520
+5V
DSW1
DIPSW_8
OFF
+5V
16
15
14
13
12
11
10
9
VSS
DI
DO
CLK
+5V
LM032L
10k
Universidad de Carabobo
VSS
Facultad de Ingenieria
Escuela de Elctrica
Diseo Digital
Init
CDM1: SPI_Write(0x41),
SPI_Write(0x00), SPI_Write(0x00),
SPI_Write(0x00), SPI_Write(0x00),
SPI_Write(0xFF),
Configuracin:
PORTA: LCD, LsB PORTB: Entrada digital,
Chip_Select (RB14)
InicializacinLCD,
SPI como Master
Chip_Select: Off
Esperar respuesta de la SD
No
Resp=0
Si
Chip_Select: On
Mostrar CMD1 Ok
CDM0: SPI_Write(0x40),
SPI_Write(0x00), SPI_Write(0x00),
SPI_Write(0x00), SPI_Write(0x00),
SPI_Write(0x95),
CDM16: SPI_Write(0x50),
SPI_Write(0x00), SPI_Write(0x00),
SPI_Write(0x02), SPI_Write(0x00),
SPI_Write(0xFF),
Esperar respuesta de la SD
Esperar respuesta de la SD
No
No
Resp=0
Resp=1
Si
Si
Mostrar CMD16 Ok
Mostrar CMD0 Ok
Main
Lectura
Escritura
Rutina Init
CDM17: SPI_Write(0x51),
SPI_Write(0x00), SPI_Write(0x00),
SPI_Write(0x00), SPI_Write(0x00),
SPI_Write(0xFF),
SW
Esperar respuesta de la SD
No
Resp=0
CDM24: SPI_Write(0x58),
SPI_Write(0x00), SPI_Write(0x00),
SPI_Write(0x04), SPI_Write(0x00),
SPI_Write(0xFF),
Esperar respuesta de la SD
Mostrar CMD24
Fall
No
Resp=0
Si
Si
SPI_Write(0xFE)
Esperar Token de la SD
No
Dato
PortB
Resp=FE
i=512
Si
Mostrar Token Ok
SPI_Write(Dato)
CRC, CRC
Pausa
CRC, CRC,
Mostrar take[i]
i=512
Esperar respuesta de la SD
Desde i=0 a 511
i<512
Mostrar Escritura Fallo
take[i]
No
Resp=05
SPI_Read(buffer),
Si
Mostrar Escritura Ok