He estado trabajando en este kit durante el último mes y he simulado algunos programas básicos usando Keil (no OS solo usando C). Me asignaron un proyecto para hacer un registrador de datos que almacena los datos en formato SDLC (protocolo de enlace de datos síncrono) en la tarjeta SD.
Por lo tanto, mi proyecto tiene 2 partes muy sencillas:
-
Reciba los datos en formato SDLC (compatible con TTL).
-
Almacenar en la tarjeta SD.
He buscado en los foros tanto de Keil como de Mini 2440 pero todavía no tengo ni idea acerca de la interfaz de una interfaz de tarjeta SD usando la C simple. Todo el mundo parece estar sugiriendo algo más que C. He leído los manuales y otro PDF sobre la interfaz que usa tanto el SPI como el modo de bus SD y cualquier cosa que pudiera hacer fuera de ella. escrito en un código que se proporciona a continuación:
#include <S3C2440.H>
#include<stdio.h>
void sd_card_init(void);
void spi_delay(void);
int main()
{
//pclk is 12MHZ
GPECON=0x0a800000; //clk mosi miso 13 12 11
GPGCON=0x00000030;//ss 2
SPCON0=0x18;//set the clk & enable the master
SPPRE0=0x0e;//set the clk at 400 khz
SPPIN0=0x01;//derive the mosi level
sd_card_init();
return 0;
}
//**************************************************************
void sd_card_init()
{
unsigned char x;
unsigned int cmd0[]={0x40 ,0x00 , 0x00, 0x00 ,0x00 ,0x95};
unsigned int cmd55[]={0x77 ,0x00 , 0x00, 0x00 ,0x00 ,0x95};
unsigned int cmd41[]={0x69 ,0x00 , 0x00, 0x00 ,0x00 ,0x95};
GPEDAT|=0x1000;
//mosi=1;
GPGDAT=GPGDAT|0x0004;
//cs=1;
spi_delay();
//********************RESET COMMAND************************
GPGDAT=GPGDAT|0xFFFB;
//cs=0;
for(x=0;x<6;x++)
SPTDAT0=cmd0[x];
//**********************check if card is ready or not.******************
while((SPRDAT0==0x01)||(SPSTAT0&0x01==0))
{
for(x=0;x<6;x++)
SPTDAT0=cmd55[x];
for(x=0;x<6;x++)
SPTDAT0=cmd41[x];
}
}
void spi_delay()
{
unsigned char i,j; //wait for 74 clk cycles or more
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
}
Este es mi código que estoy intentando simular en Keil para SPI. Incluso he probado esto usando un osciloscopio, pero ni siquiera pude encontrar el reloj, así que si hay algo más que hacer, por favor dígaselo. Estoy en gran necesidad de sus comentarios y ayuda.