miércoles, 11 de enero de 2017

PRACTICA # 14 MEMORIA EXTERNA MICRO SD

OBJETIVO:
       Haremos uso de la librería FastFs de la página http://elm-chan.org/fsw/ff/00index_e.html para adaptarla al MCU R5F562N8. La tarjeta de evaluación YRDKRX62N cuenta con un socket para una micro SD. Grabaremos 2 archivos dentro de la SD con formato Fat16.
  •  Integraremos la librería FatFs
  •  Crearemos la interfaz SPI junto con el manejo de la interrupción 
  •  Montaremos una unidad en la SD, y trabajaremos con las funciones abrir, escribir y cerrar

DESARROLLO:
  •  Del YRDKRX62N schematic se muestra los pines y el circuito de la micro SD:


PASOS:
  •  Creación de un proyecto:
1.- Abrir el software e2studio
2.- New/ C Project / Renesas RXC ToolChain


3.- Seleccionar el target R5F562N8, debug hardware Segger jLink, después next


4.- Seleccionar C/C++ Source file y por ultimo Finish.


5.- La estructura de archivos se muestra a continuación:

En la carpeta FatFs posee el driver para el acceso y control de la memoria. El archivo mmc_rspi.c es la interfaz para las funciones enviar y recibir de la comunicación spi.

6.- El código main se establece como sigue:

FATFS fs[1]; /* Work area (file system object) for logical drives */
FIL fsrc; /* file objects */
//BYTE buffer[11] = "123456789\r";   /* buffer of information to write to file */
char *text1 = "Microcarsil - 2017\r\n";
char *text2 = "Practica #14 TARJETA SD\r\n"; /* buffer of information to write to file */
FRESULT res; /* FatFs function common result code */
UINT br = 9; /* write 9 bytes to file */
UINT bw; /* actual file read/write count */

void main(void)
{
            int i = 0;
            set_ipl(0);              // enable interrupts
            SR_Oscilador();          //  F = 96 Mhz
            SR_TIMER_0();            // Inicializa el Timer 0 en cascada para 16 bits
            SR_INIT_PORTS();         // Inicializa los puertos entrada y salida

            LED4 = ~LED4; /* And off we go */

            /* HW init */
            //SPI_Init();

            LED5 = ~LED5; /* Next step completed */

            /* Mount drive 0 */
            res = f_mount(0, &fs[0]);
            LED6 = ~LED6; /* Things are going well */

            /* Open source file on the drive 0 */
            res = f_open(&fsrc, "0:datos1.dat", FA_CREATE_ALWAYS | FA_WRITE);
            LED7 = ~LED7; /* Things are going pretty good */

            /* Write to file */
            for (i = 0; i < 1000; i++)
            {
                        res = f_write(&fsrc, text1, strlen(text1), &bw);// Write data to the file
                        LED8 = ~LED8; /* Do something so we can see it */
            }

            /* Close open file */
            f_close(&fsrc);

            /* Let's open another file at o: */
            res = f_open(&fsrc, "0:datos2.dat", FA_CREATE_ALWAYS | FA_WRITE);
            LED9 = ~LED9; /* Things are going pretty good */

            /* Write to file */
            for (i = 0; i < 1000; i++)
            {
                        res = f_write(&fsrc, text2, strlen(text2), &bw);// Write data to the file
                        LED9 = ~LED9; /* Do something so we can see it */
            }

            /* Close open file */
            f_close(&fsrc);

            /* Unmount drive 0 */
            f_mount(0, 0);

            while (1)
            {
                        __nop();
            }
}


  •  Agregar código, compilar y debug:
1.- Bajar el código de:

2.- Compilar con el icono del martillo y debug con el icono del insecto:


3.- Archivos generados en la memoria microSD:


RESULTADOS:

No hay comentarios.:

Publicar un comentario