Aprendiendo a programar la Mini-STM32 con LCD

Lugar dedicado a el diseño y realización de circuitos eléctricos, electrónicos, localización de componentes, aparatos de medida y otros.
Responder
Mensaje
Autor
RUFINOGLEZ
Mensajes: 3
Registrado: Vie Dic 16, 2011 8:49 pm
País: SPAIN
Ciudad: MADRID

Aprendiendo a programar la Mini-STM32 con LCD

#1 Mensaje por RUFINOGLEZ »

Hola a todos. Ya he hecho mis pinitos con la placa HY-MiniSTM32V, abriendo los puertos UART, manejando el reloj calendario, la SD-Card, luz del display, etc. etc. Tengo otra placa más completa que lleva el micro STM32F103ZET6 en la que hago funcionar los mismos programas que en la anterior, obviamente cambiando las referencias a los I/Os que son diferentes, pero la pantalla LCD no hay forma de que funcione. La placa del display es la HY32B que tiene varios I/Os diferentes a la Mini lo cual ya contemplo en la función "LCD_CtrlLinesConfig()", pero eso no es suficiente porque ahí solo se configuran los correspondientes I/Os. Tiene que haber otro sitio en alguno de los múltiples archivos donde se especifique a qué corresponde cada pin. Todos los pines son importantes, pero hay dos que si el programa de control no sabe cuales son el display nunca funcionará: CS y RS y precisamente estos dos son diferentes, en la Mini son PD7 y PD11 y en la Red-Bull son PG12 y PF0 respectivamente.
Insisto en que tiene que haber un sitio donde se le diga al control qué pines corresponde a cada cosa, es cuestión de que alguien lo sepa porque por más que he buscado no lo he encontrado.

/*******************************************************************************
* Function Name : LCD_CtrlLinesConfig
* Description : Configures LCD Control lines (FSMC Pins) in alternate function
Push-Pull mode.
*******************************************************************************/
static void LCD_CtrlLinesConfig(void){
GPIO_InitTypeDef GPIO_InitStructure;

/* Enable FSMC, GPIOD, GPIOE and AFIO clocks */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);


#ifdef HY_Mini
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);

/* PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9),
PE.13(D10), PE.14(D11), PE.15(D12) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);

/* PD.00(D2), PD.01(D3), PD.04(RD), PD.5(WR), PD.7(CS), PD.8(D13), PD.9(D14),
PD.10(D15), PD.11(RS) PD.14(D0) PD.15(D1) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 |
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 |
GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);

/////
#else //HY_Maxi
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |
RCC_APB2Periph_AFIO, ENABLE);
/* Set PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.08(D13), PD.09(D14),
PD.10(D15), PD.14(D0), PD.15(D1) as alternate function push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);

/* Set PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10),
PE.14(D11), PE.15(D12) as alternate function push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_Init(GPIOE, &GPIO_InitStructure);

/* Set PF.00(A0 (RS)) as alternate function push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_Init(GPIOF, &GPIO_InitStructure);

/* Set PG.12(NE4 (LCD/CS)) as alternate function push pull - CE3(LCD /CS) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_Init(GPIOG, &GPIO_InitStructure);
#endif




}

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados