0% found this document useful (0 votes)
15 views6 pages

GPIO Configuration for LCD48800 Driver

The document contains C code for initializing and controlling an LCD display using SPI communication. It defines GPIO pins and functions for reading and writing data to the display, including initialization routines and command sequences. The code also includes a delay function and macros for manipulating GPIO states.

Uploaded by

hienlong10082017
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views6 pages

GPIO Configuration for LCD48800 Driver

The document contains C code for initializing and controlling an LCD display using SPI communication. It defines GPIO pins and functions for reading and writing data to the display, including initialization routines and command sequences. The code also includes a delay function and macros for manipulating GPIO states.

Uploaded by

hienlong10082017
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

#define HAL_RCC_GPIO_EM_SCK_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()

#define EM_SCK_GPIO_PIN GPIO_PIN_6


#define EM_SCK_GPIO_PORT GPIOB

#define HAL_RCC_GPIO_EM_SDA_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()


#define EM_SDA_GPIO_PIN GPIO_PIN_7
#define EM_SDA_GPIO_PORT GPIOB

#define HAL_RCC_GPIO_EM_CS_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()


#define EM_CS_GPIO_PIN GPIO_PIN_0
#define EM_CS_GPIO_PORT GPIOA

#define HAL_RCC_GPIO_EM_RST_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()


#define EM_RST_GPIO_PIN GPIO_PIN_0
#define EM_RST_GPIO_PORT GPIOC

#define mSPI_SCK_LOW() (EM_SCK_GPIO_PORT-


>BSRR=(uint32_t)EM_SCK_GPIO_PIN<<16U)
#define mSPI_SCK_HI() (EM_SCK_GPIO_PORT-
>BSRR=(uint32_t)EM_SCK_GPIO_PIN)

#define mSPI_SDA_LOW() (EM_SDA_GPIO_PORT-


>BSRR=(uint32_t)EM_SDA_GPIO_PIN<<16U)
#define mSPI_SDA_HI() (EM_SDA_GPIO_PORT-
>BSRR=(uint32_t)EM_SDA_GPIO_PIN)

#define mSPI_CS_LOW() (EM_CS_GPIO_PORT-


>BSRR=(uint32_t)EM_CS_GPIO_PIN<<16U)
#define mSPI_CS_HI() (EM_CS_GPIO_PORT-
>BSRR=(uint32_t)EM_CS_GPIO_PIN)

#define mSPI_RST_LOW() (EM_RST_GPIO_PORT-


>BSRR=(uint32_t)EM_RST_GPIO_PIN<<16U)
#define mSPI_RST_HI() (EM_RST_GPIO_PORT-
>BSRR=(uint32_t)EM_RST_GPIO_PIN)

#define LCD_WRITE_COMMAND false


#define LCD_WRITE_DATA true

void
delay_us(uint32_t us){

uint32_t u=us*10000U;
while(u--);
}
//

static void
EMSPI9BitWrite(bool DCsel,uint8_t data){

mSPI_CS_LOW();
delay_us(2);
//PRIMO BIT, DATA O COMMAND ******
mSPI_SCK_LOW();
delay_us(8);

if(DCsel)
{mSPI_SDA_HI();}
else
{mSPI_SDA_LOW();}//

delay_us(8);
mSPI_SCK_HI();

//CICLO DEGLI ALTRI BIT *********


for(uint8_t i=0;i<8U;i++){

delay_us(8);
mSPI_SCK_LOW();
//MSB FIRST + RISING EDGE, MODE0
if(data&0x80)
{mSPI_SDA_HI();}
else
{mSPI_SDA_LOW();}

delay_us(8);
mSPI_SCK_HI();

data<<=1;
}//

mSPI_SCK_LOW();
mSPI_CS_HI();
delay_us(2);
}
//

static void
LCD48800InitGPIOMomentum(void){

GPIO_InitTypeDef GPIO_InitStruct={0};

HAL_RCC_GPIO_EM_RST_CLK_ENABLE();
HAL_RCC_GPIO_EM_SCK_CLK_ENABLE();
HAL_RCC_GPIO_EM_SDA_CLK_ENABLE();
HAL_RCC_GPIO_EM_CS_CLK_ENABLE();

GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed=GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Pull=GPIO_PULLUP;

GPIO_InitStruct.Pin=EM_RST_GPIO_PIN;
HAL_GPIO_Init(EM_RST_GPIO_PORT,&GPIO_InitStruct);

GPIO_InitStruct.Pin=EM_SCK_GPIO_PIN;
HAL_GPIO_Init(EM_SCK_GPIO_PORT,&GPIO_InitStruct);
GPIO_InitStruct.Pin=EM_SDA_GPIO_PIN;
HAL_GPIO_Init(EM_SDA_GPIO_PORT,&GPIO_InitStruct);

GPIO_InitStruct.Pin=EM_CS_GPIO_PIN;
HAL_GPIO_Init(EM_CS_GPIO_PORT,&GPIO_InitStruct);

mSPI_SCK_LOW();
mSPI_SDA_LOW();
mSPI_CS_HI();

mSPI_RST_LOW();
SysDelay(50U);
mSPI_RST_HI();
SysDelay(150U);

}
//

//static void
//LCD48800DeinitGPIOMomentum(void){
//
// HAL_GPIO_DeInit(EM_SDA_GPIO_PORT,EM_SDA_GPIO_PIN);
// HAL_GPIO_DeInit(EM_SCK_GPIO_PORT,EM_SCK_GPIO_PIN);
// mSPI_CS_HI();
//}
////

void
LCD48800init(void){

LCD48800InitGPIOMomentum();
SysDelay(10U);
EMSPI9BitWrite(LCD_WRITE_COMMAND,0x01);
SysDelay(120U);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xF0);
EMSPI9BitWrite(LCD_WRITE_DATA,0x5A);
EMSPI9BitWrite(LCD_WRITE_DATA,0x5A);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xF1);
EMSPI9BitWrite(LCD_WRITE_DATA,0xA5);
EMSPI9BitWrite(LCD_WRITE_DATA,0xA5);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xB0);
EMSPI9BitWrite(LCD_WRITE_DATA,0x98);
EMSPI9BitWrite(LCD_WRITE_DATA,0x76);
EMSPI9BitWrite(LCD_WRITE_DATA,0xED);
EMSPI9BitWrite(LCD_WRITE_DATA,0xED);
EMSPI9BitWrite(LCD_WRITE_DATA,0x44);
EMSPI9BitWrite(LCD_WRITE_DATA,0x44);
EMSPI9BitWrite(LCD_WRITE_DATA,0x44);
EMSPI9BitWrite(LCD_WRITE_DATA,0x44);
EMSPI9BitWrite(LCD_WRITE_DATA,0x60);
EMSPI9BitWrite(LCD_WRITE_DATA,0x04);
EMSPI9BitWrite(LCD_WRITE_DATA,0x30);
EMSPI9BitWrite(LCD_WRITE_DATA,0x04);
EMSPI9BitWrite(LCD_WRITE_DATA,0x00);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xB1);
EMSPI9BitWrite(LCD_WRITE_DATA,0x54);
EMSPI9BitWrite(LCD_WRITE_DATA,0x80);
EMSPI9BitWrite(LCD_WRITE_DATA,0x02);
EMSPI9BitWrite(LCD_WRITE_DATA,0x85);
EMSPI9BitWrite(LCD_WRITE_DATA,0x60);
EMSPI9BitWrite(LCD_WRITE_DATA,0x04);
EMSPI9BitWrite(LCD_WRITE_DATA,0x30);
EMSPI9BitWrite(LCD_WRITE_DATA,0x04);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xB3);
EMSPI9BitWrite(LCD_WRITE_DATA,0x1C);
EMSPI9BitWrite(LCD_WRITE_DATA,0x1D);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x04);
EMSPI9BitWrite(LCD_WRITE_DATA,0x06);
EMSPI9BitWrite(LCD_WRITE_DATA,0x0E);
EMSPI9BitWrite(LCD_WRITE_DATA,0x0C);
EMSPI9BitWrite(LCD_WRITE_DATA,0x12);
EMSPI9BitWrite(LCD_WRITE_DATA,0x10);
EMSPI9BitWrite(LCD_WRITE_DATA,0x08);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xB4);
EMSPI9BitWrite(LCD_WRITE_DATA,0x1C);
EMSPI9BitWrite(LCD_WRITE_DATA,0x1D);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x05);
EMSPI9BitWrite(LCD_WRITE_DATA,0x07);
EMSPI9BitWrite(LCD_WRITE_DATA,0x0F);
EMSPI9BitWrite(LCD_WRITE_DATA,0x0D);
EMSPI9BitWrite(LCD_WRITE_DATA,0x13);
EMSPI9BitWrite(LCD_WRITE_DATA,0x11);
EMSPI9BitWrite(LCD_WRITE_DATA,0x09);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);
EMSPI9BitWrite(LCD_WRITE_DATA,0x03);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xB6);
EMSPI9BitWrite(LCD_WRITE_DATA,0x16);
EMSPI9BitWrite(LCD_WRITE_DATA,0xE7);
EMSPI9BitWrite(LCD_WRITE_DATA,0x04);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xBC);
EMSPI9BitWrite(LCD_WRITE_DATA,0xD1);
EMSPI9BitWrite(LCD_WRITE_DATA,0x11);
EMSPI9BitWrite(LCD_WRITE_DATA,0x55);
EMSPI9BitWrite(LCD_WRITE_DATA,0x55);
EMSPI9BitWrite(LCD_WRITE_DATA,0x5E);
EMSPI9BitWrite(LCD_WRITE_DATA,0x2F);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xB8);
EMSPI9BitWrite(LCD_WRITE_DATA,0x23);
EMSPI9BitWrite(LCD_WRITE_DATA,0x41);
EMSPI9BitWrite(LCD_WRITE_DATA,0x01);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xB7);
EMSPI9BitWrite(LCD_WRITE_DATA,0x01);
EMSPI9BitWrite(LCD_WRITE_DATA,0x0D);
EMSPI9BitWrite(LCD_WRITE_DATA,0x11);
EMSPI9BitWrite(LCD_WRITE_DATA,0x05);
EMSPI9BitWrite(LCD_WRITE_DATA,0x09);
EMSPI9BitWrite(LCD_WRITE_DATA,0x19);
EMSPI9BitWrite(LCD_WRITE_DATA,0x1D);
EMSPI9BitWrite(LCD_WRITE_DATA,0x21);
EMSPI9BitWrite(LCD_WRITE_DATA,0x15);
EMSPI9BitWrite(LCD_WRITE_DATA,0x22);
EMSPI9BitWrite(LCD_WRITE_DATA,0x21);
EMSPI9BitWrite(LCD_WRITE_DATA,0x00);
EMSPI9BitWrite(LCD_WRITE_DATA,0x00);
EMSPI9BitWrite(LCD_WRITE_DATA,0x00);
EMSPI9BitWrite(LCD_WRITE_DATA,0x00);
EMSPI9BitWrite(LCD_WRITE_DATA,0x02);
EMSPI9BitWrite(LCD_WRITE_DATA,0x40);
EMSPI9BitWrite(LCD_WRITE_DATA,0xFF);
EMSPI9BitWrite(LCD_WRITE_DATA,0x3C);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xC1);
EMSPI9BitWrite(LCD_WRITE_DATA,0x13);
EMSPI9BitWrite(LCD_WRITE_DATA,0x08);
EMSPI9BitWrite(LCD_WRITE_DATA,0x04);
EMSPI9BitWrite(LCD_WRITE_DATA,0x0C);
EMSPI9BitWrite(LCD_WRITE_DATA,0x10);
EMSPI9BitWrite(LCD_WRITE_DATA,0x04);
EMSPI9BitWrite(LCD_WRITE_DATA,0x02);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xC2);
EMSPI9BitWrite(LCD_WRITE_DATA,0x81);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xC3);
EMSPI9BitWrite(LCD_WRITE_DATA,0x22);
EMSPI9BitWrite(LCD_WRITE_DATA,0x11);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xC7);
EMSPI9BitWrite(LCD_WRITE_DATA,0x04);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xC8);
EMSPI9BitWrite(LCD_WRITE_DATA,0x7C);
EMSPI9BitWrite(LCD_WRITE_DATA,0x45);
EMSPI9BitWrite(LCD_WRITE_DATA,0x33);
EMSPI9BitWrite(LCD_WRITE_DATA,0x26);
EMSPI9BitWrite(LCD_WRITE_DATA,0x22);
EMSPI9BitWrite(LCD_WRITE_DATA,0x14);
EMSPI9BitWrite(LCD_WRITE_DATA,0x1A);
EMSPI9BitWrite(LCD_WRITE_DATA,0x06);
EMSPI9BitWrite(LCD_WRITE_DATA,0x21);
EMSPI9BitWrite(LCD_WRITE_DATA,0x21);
EMSPI9BitWrite(LCD_WRITE_DATA,0x21);
EMSPI9BitWrite(LCD_WRITE_DATA,0x41);
EMSPI9BitWrite(LCD_WRITE_DATA,0x31);
EMSPI9BitWrite(LCD_WRITE_DATA,0x3A);
EMSPI9BitWrite(LCD_WRITE_DATA,0x2F);
EMSPI9BitWrite(LCD_WRITE_DATA,0x2F);
EMSPI9BitWrite(LCD_WRITE_DATA,0x22);
EMSPI9BitWrite(LCD_WRITE_DATA,0x14);
EMSPI9BitWrite(LCD_WRITE_DATA,0x06);
EMSPI9BitWrite(LCD_WRITE_DATA,0x7C);
EMSPI9BitWrite(LCD_WRITE_DATA,0x45);
EMSPI9BitWrite(LCD_WRITE_DATA,0x33);
EMSPI9BitWrite(LCD_WRITE_DATA,0x26);
EMSPI9BitWrite(LCD_WRITE_DATA,0x22);
EMSPI9BitWrite(LCD_WRITE_DATA,0x14);
EMSPI9BitWrite(LCD_WRITE_DATA,0x1A);
EMSPI9BitWrite(LCD_WRITE_DATA,0x06);
EMSPI9BitWrite(LCD_WRITE_DATA,0x21);
EMSPI9BitWrite(LCD_WRITE_DATA,0x21);
EMSPI9BitWrite(LCD_WRITE_DATA,0x21);
EMSPI9BitWrite(LCD_WRITE_DATA,0x41);
EMSPI9BitWrite(LCD_WRITE_DATA,0x31);
EMSPI9BitWrite(LCD_WRITE_DATA,0x3A);
EMSPI9BitWrite(LCD_WRITE_DATA,0x2F);
EMSPI9BitWrite(LCD_WRITE_DATA,0x2F);
EMSPI9BitWrite(LCD_WRITE_DATA,0x22);
EMSPI9BitWrite(LCD_WRITE_DATA,0x14);
EMSPI9BitWrite(LCD_WRITE_DATA,0x06);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xD0);
EMSPI9BitWrite(LCD_WRITE_DATA,0x07);
EMSPI9BitWrite(LCD_WRITE_DATA,0xFF);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0xD2);
EMSPI9BitWrite(LCD_WRITE_DATA,0x63);
EMSPI9BitWrite(LCD_WRITE_DATA,0x0B);
EMSPI9BitWrite(LCD_WRITE_DATA,0x08);
EMSPI9BitWrite(LCD_WRITE_DATA,0x08);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0x36);
EMSPI9BitWrite(LCD_WRITE_DATA,0x00);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0x11);
SysDelay(120U);

EMSPI9BitWrite(LCD_WRITE_COMMAND,0x29);
SysDelay(20U);

// EMSPI9BitWrite(LCD_WRITE_COMMAND,0x3A);
// EMSPI9BitWrite(LCD_WRITE_DATA,0x77);
//LCD48800DeinitGPIOMomentum();

}
//

You might also like