#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();
}
//