2012-11-02 5:17 AM
I have a problem with the initialization of the display AGG240128A05-FHW-R
I do not know what could be wrong. Maybe someone has an idea? code:&sharpinclude ''GLCD_240x128.h''
&sharpinclude ''STM32F10x.h'' /* GPIO_SetBits(DrivePort_B, BM1); //DelayLCD(0xFF); GPIO_SetBits(DrivePort_B, BM0); //DelayLCD(0xFF); */ //---------------------------------------------------------------------------------------------------------- void GLCD_Init(void){ //Display initialisaton volatile unsigned long int i; GPIO_ResetBits(DrivePort_B, RES); //RES=0 GLCD_delay(100); GPIO_SetBits(DrivePort_B, RES); //RES=1 GLCD_delay(100); //CD=0 wysylanie komend GPIO_ResetBits(DrivePort_B, CS); GPIO_ResetBits(DrivePort_B, CD); // SET MR TC GLCD_SPI_Transmit(0x26); // set LCD mapping GLCD_SPI_Transmit(0x3d); // set bias ratio GLCD_SPI_Transmit(0xec); // set gain & potentiometer I bajt GLCD_SPI_Transmit(0x81); // set gain & potentiometer II bajt GLCD_SPI_Transmit(0x72); // start line number GLCD_SPI_Transmit(0x40); // display enable GLCD_SPI_Transmit(0xaf); // all pixels ON - aby zobaczyc reakcje GLCD_SPI_Transmit(0xa5); /* GLCD_SPI_Transmit(0XE2); //GLCD_delay(30); GLCD_SPI_Transmit(0XEb); //GLCD_delay(30); GLCD_SPI_Transmit(0X24); //GLCD_delay(30); GLCD_SPI_Transmit(0X2E); //GLCD_delay(30); GLCD_SPI_Transmit(0XC4); //GLCD_delay(30); GLCD_SPI_Transmit(0X89); //GLCD_delay(30); GLCD_SPI_Transmit(0X81); //GLCD_delay(30); GLCD_SPI_Transmit(0X20); //GLCD_delay(30); GLCD_SPI_Transmit(0X40); //GLCD_delay(30); GLCD_SPI_Transmit(0X30); //GLCD_delay(30); GLCD_SPI_Transmit(0X22); //GLCD_delay(30); GLCD_SPI_Transmit(0XAF); //GLCD_delay(30); GLCD_SPI_Transmit(0xa5); //GLCD_delay(30); */ } //---------------------------------------------------------------------------------------------------------- void GLCD_SPI_Transmit(char cData) { GPIO_SetBits(DrivePort_B, CS); //CS=1 (ENABLE) /* Loop while DR register in not empty */ while( SPI_I2S_GetFlagStatus( GLCD_SPI, SPI_I2S_FLAG_TXE ) == RESET ); /* Send byte through the SPIx peripheral */ SPI_I2S_SendData( GLCD_SPI, cData ); /* Zgodnie z karta katalogowa najpierw trzeba sprawdzic czy bufor nadawczy */ /* jest pusty a dopiero potem sprawdzac czy SPI skonczylo nadawanie */ /* Loop while DR register in not empty */ while( SPI_I2S_GetFlagStatus( GLCD_SPI, SPI_I2S_FLAG_TXE ) == RESET ); /* Loop while SPI is not busy */ while( SPI_I2S_GetFlagStatus( GLCD_SPI, SPI_I2S_FLAG_BSY ) == SET ); GPIO_ResetBits(DrivePort_B, CS); //CS=0 (DISABLE) } //---------------------------------------------------------------------------------------------------------- void GLCD_HwConfiguration(void) { GPIO_InitTypeDef GPIO_InitStructure; //Konfiguracja GPIO SPI_InitTypeDef SPI_InitStructure;//Konfiguracja interfejsu SPI //Enable clocks //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //GPIO A Clock //RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); //SPI Clock //GPIO config GPIO_InitStructure.GPIO_Pin = CLK | DIN ; //SPI: SCK, MISO GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(DrivePort_A, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = CS | CD | RES; //SPI: CS, CD, RES GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(DrivePort_B, &GPIO_InitStructure); //SPI1 Configuration SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;//transmisja jednokierunkowa do MCU SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//Tryb pracy SPI, mikrokontroler jako slave SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//8-bit ramka danych SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//Stan Sygnalu taktujacego przy braku transmisji SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//Aktywne zbocze sygnalu taktujacego SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//Sprzetowa obsluga lini NSS(CS) SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;//Prescaler, Szybkosc transmisji SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//Pierwszy bit w danych najbardziej znaczacy albo LSB // SPI_InitStructure.SPI_CRCPolynomial = 7;//Konfiguracja wielomianu do obliczenia CRC SPI_Init(GLCD_SPI, &SPI_InitStructure);//Inicjalizacja SPI SPI_Cmd(GLCD_SPI, ENABLE); //SPI1 Enable } //---------------------------------------------------------------------------------------------------------- void GLCD_delay(unsigned int t) { unsigned int i,j; for(i=0;i<t;i++) for(j=0;j<104;j++); } //---------------------------------------------------------------------------------------------------------- logic analyzer: #spi-uc16082014-10-26 7:50 AM
Hi there
do you by any chance have your complete code for the lcd uc1608 spi s8 (i am interested in viewing the way you write to the lcd) thank youWe’re moving the ST Community to a new platform to give you a better and more reliable community experience.