I tried the gLCD_SSD1963 component in both 8-bit and 16-bit versions with a display
https://aliexpress.ru/item/100500796456 ... 1748698597
Initialization does not work with a standard FSMC connection to stm32f407vet6.
I used the C-code insert for initialization, корекцииcolor and geometry correction, and bus acceleration.
/ * 1. SWITCH FSMC STM32 TO 16-BIT MODE */
/ / Setting bit 4 (MWID=01) in the BCR1 register
FSMC_Bank1->BTCR[0] &= ~(0x3 << 4);
FSMC_Bank1->BTCR[0] |= (0x1 << 4);
/ / Setting BTR1 timings for 168MHz (accelerated for 16 bits)
// ADDSET=5, DATAST=15, BUSTURN=1
FSMC_Bank1->BTCR[1] = (5 << 0) | (15 << 8) | (1 << 16);
/ * 2. INITIALIZING SSD1963 (16-BIT INTERFACE) */
/ / Soft reset
FCD_04581_gLCD_SSD1963__LCD_Write_Reg(0x01);
delay_ms(10);
/ / Setting LCD MODE (Critical: 0x0C enables 16-bit bus)
FCD_04581_gLCD_SSD1963__LCD_Write_Reg(0xB0);
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x0C); // 16-bit interface, 24-bit internal
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x00); // TFT mode
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x03); // HDP High (799)
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x1F); // HDP Low
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x01); // VDP High (479)
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0xDF); // VDP Low
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x00); / / RGB order (change to 0x20 if BGR)
/ / Setting the pixel data format (565 RGB)
FCD_04581_gLCD_SSD1963__LCD_Write_Reg(0xF0);
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x03); // 16-bit 565 format
delay_ms(5);
/ * 3. HORIZONTAL TIMINGS (RETURN TO STANDARD) */
/ / At 16 bits, the tails disappear, using the standard 46 (0x2E)
FCD_04581_gLCD_SSD1963__LCD_Write_Reg(0xB4);
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x04); // HT High (1100)
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x4C); // HT Low
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x00); // HPS High
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x2E); // HPS Low (46)
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x08); // HPW (Pulse width)
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x00);
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x00);
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x00);
/* 4. VERTICAL TIMINGS */
FCD_04581_gLCD_SSD1963__LCD_Write_Reg(0xB6);
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x02); // VT High (525)
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x0D); // VT Low
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x00); // VPS High
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x10); // VPS Low (16)
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x08); // VPW
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x00); // FPS High
FCD_04581_gLCD_SSD1963__LCD_Write_Data(0x00); // FPS Low
It's working !!!
I'll give you an example...