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:
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:
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:
--> Practica #14
3.- Archivos generados en la memoria microSD:
RESULTADOS:
No hay comentarios.:
Publicar un comentario