Shams313
Shams313

Reputation: 61

How to setup STM32 F407VET6 Black board FSMC with SSD1963 LCD Driver

I have a Custom display which has SSD1963 Driver Ic, I have tried a lot but couldn,t interface this IC with STM32F407VET6 FSMC peripheral. I'm running the MCU at 168Mhz

My Current Setting From CubeIDE,

  hsram1.Instance = FSMC_NORSRAM_DEVICE;
  hsram1.Extended = FSMC_NORSRAM_EXTENDED_DEVICE;
  /* hsram1.Init */
  hsram1.Init.NSBank = FSMC_NORSRAM_BANK1;
  hsram1.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE;
  hsram1.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM;
  hsram1.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16;
  hsram1.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE;
  hsram1.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
  hsram1.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
  hsram1.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
  hsram1.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;
  hsram1.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
  hsram1.Init.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE;
  hsram1.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE;
  hsram1.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE;
  hsram1.Init.PageSize = FSMC_PAGE_SIZE_NONE;
  /* Timing */
  Timing.AddressSetupTime = 1;
  Timing.AddressHoldTime = 1;
  Timing.DataSetupTime = 1;
  Timing.BusTurnAroundDuration = 1;
  Timing.CLKDivision = 1;
  Timing.DataLatency = 0;
  Timing.AccessMode = FSMC_ACCESS_MODE_B;
  /* ExtTiming */

Display Pin Ref enter image description here

Board Pin Diagram, enter image description here

SSD1963 reference for 8080 Interface enter image description here

FSMC Application note from stm32 enter image description here

display Init function,

void Lcd_Init(void)
{
HAL_GPIO_WritePin(TFT_RESET_GPIO_Port, TFT_RESET_Pin, GPIO_PIN_SET);
HAL_Delay (100);
HAL_GPIO_WritePin(TFT_RESET_GPIO_Port, TFT_RESET_Pin, GPIO_PIN_RESET);
HAL_Delay (100);
HAL_GPIO_WritePin(TFT_RESET_GPIO_Port, TFT_RESET_Pin, GPIO_PIN_SET);

LCD_Write_COM(0xE2);        //PLL multiplier, set PLL clock to 120M
LCD_Write_DATA(0x36);       //N=0x36 for 6.5M, 0x23 for 10M crystal
LCD_Write_DATA(0x02);
LCD_Write_DATA(0x04);
LCD_Write_COM(0xE0);        // PLL enable
LCD_Write_DATA(0x01);
HAL_Delay(10);
LCD_Write_COM(0xE0);
LCD_Write_DATA(0x03);
HAL_Delay(10);
LCD_Write_COM(0x01);        // software reset
HAL_Delay(100);
LCD_Write_COM(0xE6);        //PLL setting for PCLK, depends on resolution
LCD_Write_DATA(0x04);
LCD_Write_DATA(0x93);
LCD_Write_DATA(0xE0);

LCD_Write_COM(0xB0);        //LCD SPECIFICATION
LCD_Write_DATA(0x00);       // 0x24
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x03);       //Set HDP   799
LCD_Write_DATA(0x1F);
LCD_Write_DATA(0x01);       //Set VDP   479
LCD_Write_DATA(0xDF);
LCD_Write_DATA(0x00);

LCD_Write_COM(0xB4);        //HSYNC
LCD_Write_DATA(0x03);       //Set HT    928
LCD_Write_DATA(0xA0);
LCD_Write_DATA(0x00);       //Set HPS   46
LCD_Write_DATA(0x2E);
LCD_Write_DATA(0x30);       //Set HPW   48
LCD_Write_DATA(0x00);       //Set LPS   15
LCD_Write_DATA(0x0F);
LCD_Write_DATA(0x00);
LCD_Write_COM(0xB6);        //VSYNC
LCD_Write_DATA(0x02);       //Set VT    525
LCD_Write_DATA(0x0D);
LCD_Write_DATA(0x00);       //Set VPS   16
LCD_Write_DATA(0x10);
LCD_Write_DATA(0x10);       //Set VPW   16
LCD_Write_DATA(0x00);       //Set FPS   8
LCD_Write_DATA(0x08);

LCD_Write_COM(0xBA);
LCD_Write_DATA(0x05);       //GPIO[3:0] out 1

LCD_Write_COM(0xB8);
LCD_Write_DATA(0x07);       //GPIO3=input, GPIO[2:0]=output
LCD_Write_DATA(0x01);       //GPIO0 normal

//LCD_Write_COM(0x36);      //rotation
//LCD_Write_DATA(0x21);     // -- Set to 0x22 to rotate 180 degrees 0x21

LCD_Write_COM(0xba);        //rotation
LCD_Write_DATA(0x01);       // -- Set to 0x22 to rotate 180 degrees 0x21
LCD_Write_COM(0xF0);        //pixel data interface
LCD_Write_DATA(0x03);
HAL_Delay(10);
//Lcd_SetArea(0, 0, 799, 479);

//Lcd_Write_Cmd(0x2a);    //SET column address
//Lcd_Write_Data(0x00); //SET start column address=0
//Lcd_Write_Data(0x00);
//Lcd_Write_Data(0x03); //SET end column address=799
//Lcd_Write_Data(0x1f);
//
//Lcd_Write_Cmd(0x2b);;     //SET page address
//Lcd_Write_Data(0x00);//SET start page address=0
//Lcd_Write_Data(0x00);
//Lcd_Write_Data(0x01);//SET end page address=479
//Lcd_Write_Data(0xdf);  //1f

LCD_Write_COM(0x29);        //display on

LCD_Write_COM(0xBE);        //set PWM for B/L
LCD_Write_DATA(0x06);
LCD_Write_DATA(0xF0);
LCD_Write_DATA(0x01);
LCD_Write_DATA(0xF0);
LCD_Write_DATA(0x00);
LCD_Write_DATA(0x00);
LCD_Write_COM(0xD0);
LCD_Write_DATA(0x0D);
LCD_Write_COM(0x2C);
}

I don't see any response from the LCD. I cant even browse the SRAM memory in SSD1963.If any have correct setting please let me know.

Upvotes: 0

Views: 95

Answers (0)

Related Questions