статья
материалы
Код: Выделить всё
LCD_FSMC_Config_low_speed();
// uint16_t HDP=799;
// uint16_t VDP=479;
uint16_t HDP=480-1;
uint16_t VDP=272-1;
WriteComm(0x00E2); //PLL multiplier, set PLL clock to 120M
WriteData(0x0023); //N=0x36 for 6.5M, 0x23 for 10M crystal
WriteData(0x0002);
WriteData(0x0054);
WriteComm(0x00E0); // PLL enable
WriteData(0x0001);
delay_ms(10);
WriteComm(0x00E0);
WriteData(0x0003); // now, use PLL output as system clock
delay_ms(10);
WriteComm(0x0001); // software reset
delay_ms(20);
WriteComm(0x00E6); //PLL setting for PCLK, depends on resolution
//Set LSHIFT freq, i.e. the DCLK with PLL freq 120MHz set previously
//Typical DCLK for TY700TFT800480 is 33.3MHz(datasheet), experiment shows 30MHz gives a stable result
//30MHz = 120MHz*(LCDC_FPR+1)/2^20
//LCDC_FPR = 262143 (0x3FFFF)
//Time per line = (DISP_HOR_RESOLUTION+DISP_HOR_PULSE_WIDTH+DISP_HOR_BACK_PORCH+DISP_HOR_FRONT_PORCH)/30 us = 1056/30 = 35.2us
// WriteData(0x03);
// WriteData(0xff);
// WriteData(0xff);
WriteData(0x0003);
WriteData(0x0033);
WriteData(0x0033);
//Set LSHIFT freq, i.e. the DCLK with PLL freq 120MHz set previously
//Typical DCLK for TY430TFT480272 is 9MHz
//9MHz = 120MHz*(LCDC_FPR+1)/2^20
//LCDC_FPR = 78642 (0x13332)
// WriteData(0x01);
// WriteData(0x33);
// WriteData(0x32);
WriteComm(0x00B0); //LCD SPECIFICATION
WriteData(0x0008); //18 bit TFT panel
WriteData(0x0000); //Hsync+Vsync +DE mode TFT mode
WriteData((HDP>>8)); //Set HDP
WriteData(HDP);
WriteData(VDP>>8); //Set VDP
WriteData(VDP);
WriteData(0x0000);
WriteComm(0x00B4);//HSYNC
WriteData(0x04); //Set HT
WriteData(0x1f);
WriteData(0x00); //Set HPS
WriteData(0xd2);
WriteData(0x00); //Set HPW
WriteData(0x00); //Set HPS
WriteData(0x00);
WriteData(0x00);
WriteComm(0x00B6); //VSYNC
WriteData(0x02); //Set VT
WriteData(0x0c);
WriteData(0x00); //Set VPS
WriteData(0x22);
WriteData(0x00); //Set VPW
WriteData(0x00); //Set FPS
WriteData(0x00);
WriteComm(0x00B8);
WriteData(0x000f); //GPIO is controlled by host GPIO[3:0]=output GPIO[0]=1 LCD ON GPIO[0]=1 LCD OFF
WriteData(0x0001); //GPIO0 normal
WriteComm(0x00BA);
WriteData(0x0001); //GPIO[0] out 1 --- LCD display on/off control PIN
WriteComm(0x0036); //rotation
WriteData(0x00C0);//RGB=BGR
WriteComm(0x003A); //Set the current pixel format for RGB image data
WriteData(0x0060);//18-bit/pixel
WriteComm(0x00F0); //Pixel Data Interface Format
WriteData(0x0003);//16-bit(565 format) data
WriteComm(0x00BC);
WriteData(0x0040);//contrast value
WriteData(0x0080);//brightness value
WriteData(0x0040);//saturation value
WriteData(0x0001);//Post Processor Enable
delay_ms(5);
WriteComm(0x0029); //display on
WriteComm(0x00BE); //set PWM for B/L
WriteData(0x0006);
WriteData(0x0080);
WriteData(0x0001);
WriteData(0x00f0);
WriteData(0x0000);
WriteData(0x0000);
WriteComm(0x00d0);
WriteData(0x000d);
LCD_FSMC_Config();Код: Выделить всё
// Настройка FSMC
FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime = 0x0f;
FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime = 0x01;
FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 0x0f;
FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration = 0x00;
FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 0x0f;
FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0x00;
FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_A;