OBJETIVO:
Se creará el driver para la lcd grafica 96x64 con interfaz de comunicación SPI. Se mostrará un mensaje de 7 líneas.
- Crear y configurar las unidades SAU1 y CSI21
- Inicializar los pines de LCD-CS y LCD-RS
- Incluimos todos los archivos de la librería gráfica en una carpeta
DESARROLLO:
PASOS:
2.- New/ C Project
- Del manual Renesas RL78G14 RDK User's Manual ubicamos los pines del LCD:
- Del YRDKRL78G14 schematic ubicamos el LCD okaya:
PASOS:
- Creación de un proyecto:
2.- New/ C Project
- Configurar proyecto:
2.- Seleccionar C/C++ Build / Settings / Linker / Device y establecer los siguientes parámetros:
OCD = 85
Option Byte = efffe8
Palomear: Use range of debug monitor area. Nota: No establecer ningún valor solo dejarlo en blanco.
Apply y después OK.
3.- Configuraremos el SPI por medio del modulo SAU1 y CSI21 a 1 Mhz en el archivo r_cg_serial_SPI.c
void R_SAU1_Create(void)
{
SAU1EN = 1U; /* supply SAU1
clock */
__nop();
__nop();
__nop();
__nop();
SPS1
= _0000_SAU_CK00_FCLK_0 | _0000_SAU_CK01_FCLK_0; // fMCK = 32 Mhz cuando SPS1 = 0
R_CSI21_Create();
}
void R_CSI21_Create(void)
{
ST1 |= _0002_SAU_CH1_STOP_TRG_ON; /* disable CSI21 */
CSIMK21 = 1U; /* disable INTCSI21 interrupt */
CSIIF21
= 0U; /* clear INTCSI21 interrupt flag
*/
/*
Set INTCSI21 low priority */
CSIPR121 = 1U;
CSIPR021 = 1U;
// al tener SPS1 = 0 da lo
mismo tener _8000_SAU_CLOCK_SELECT_CK01 que _0000_SAU_CLOCK_SELECT_CK00
SIR11 =
_0004_SAU_SIRMN_FECTMN | _0002_SAU_SIRMN_PECTMN | _0001_SAU_SIRMN_OVCTMN; /* clear error flag */
SMR11
= _0020_SAU_SMRMN_INITIALVALUE | _0000_SAU_CLOCK_SELECT_CK00 |
_0000_SAU_CLOCK_MODE_CKS |
_0000_SAU_TRIGGER_SOFTWARE | _0000_SAU_MODE_CSI |
_0000_SAU_TRANSFER_END;
SCR11
= _C000_SAU_RECEPTION_TRANSMISSION | _0000_SAU_TIMING_1 | _0000_SAU_MSB |
_0007_SAU_LENGTH_8;
//SDR11 = _6400_CSI21_DIVISOR;
SDR11
= 0x1E00; // 1 Mhz de velocidad SPI de acuerdo a la formula (Transfer clock
frequency) = {Operation clock (fMCK) frequency of target channel} ÷
(SDRmn[15:9] + 1) ÷ 2 [Hz]
SO1
|= _0200_SAU_CH1_CLOCK_OUTPUT_1; /*
CSI21 clock initial level */
SO1
&= ~_0002_SAU_CH1_DATA_OUTPUT_1;
/* CSI21 SO initial level */
SOE1
|= _0002_SAU_CH1_OUTPUT_ENABLE; /*
enable CSI21 output */
/* Set SI21 pin */
PM7 |= 0x02U;
/*
Set SO21 pin */
P7 |=
0x04U;
PM7
&= 0xFBU;
/*
Set SCK21 pin */
P7 |=
0x01U;
PM7
&= 0xFEU;
}
4.- Inicializamos la LCD con la función en main.c SR_LCD_GRAPH
5.- Las demás funciones e interrupciones están en el archivo r_cg_serial_SPI.c
- · R_CSI21_Start
- · R_CSI21_Send_Receive
- · r_csi21_interrupt
- · r_csi21_callback_receiveend
- · r_csi21_callback_sendend
- Agregar código, compilar y debug:
--> Practica #4
2.- Compilar con el icono del martillo, debug con el icono del insecto y correr software:
DEMOSTRACIÓN:
No hay comentarios.:
Publicar un comentario