Registrador de datos con ARM 9 (kit Friendly ARM Mini 2440)

2

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:

  1. Reciba los datos en formato SDLC (compatible con TTL).

  2. 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.

    
pregunta Srishti

0 respuestas

Lea otras preguntas en las etiquetas