[ST_MICRO]/STM32F43x2015.03.01 23:30

STM32F439 LCD EVM - TFT LCD Test

STM32F439 LCD EVM - TFT LCD Test





STM32F429, STM32F439의 가장 큰 장점으로 TFT-LCD 컨트롤러가 내장되어 있어 1024x768 해상도의 TFT-LCD를 별도의 제어기 없이 연결할 수 있다. 물론 큰 LCD를 연결하려면 메모리 때문에 SDRAM을 연결해야 하는 부담이 있다.
여기서 조금 아쉬운점이 있는데 LCD메모리도 포함 시켜서 만들면 훨신더 경쟁력이 있지 않았을까? (adStar의 경우 TFT-LCD 컨트롤러 및 SDRAM이 한칩에 있어 가격이나 사이즈면에서 상당히 편리하다.)

24-bit RGB Parallel Pixel Output; 8 bits-per-pixel (RGB888)
- 2 display layers with dedicated FIFO (64x32-bit)
- Color Look-Up Table (CLUT) up to 256 color (256x24-bit) per layer
- Supports up to XGA (1024x768) resolution
- Programmable timings for different display panels
- Programmable Background color
- Programmable polarity for HSync, VSync and Data Enable
- Up to 8 Input color formats selectable per layer
- ARGB8888, RGB888, RGB565, ARGB1555, ARGB4444,
- L8 (8-bit Luminance or CLUT), AL44 (4-bit alpha + 4-bit luminance), AL88 (8-bit alpha + 8-bit luminance)




STM32F4 LTDC 핀맵







STM32F439  TFT-LCD 초기화 코드

uint8_t BSP_LCD_Init(void)

    /* LTDC Configuration ----------------------------------------------------*/

    LtdcHandler.Instance = LTDC;

    

    /* Configure horizontal synchronization width */

    LtdcHandler.Init.HorizontalSync = HSYNC;

    /* Configure vertical synchronization height */

    LtdcHandler.Init.VerticalSync = VSYNC;

    /* Configure accumulated horizontal back porch */

    LtdcHandler.Init.AccumulatedHBP = HBP;

    /* Configure accumulated vertical back porch */

    LtdcHandler.Init.AccumulatedVBP = VBP;

    /* Configure accumulated active width */

    LtdcHandler.Init.AccumulatedActiveW = ACTIVE_W-2;

    /* Configure accumulated active height */

    LtdcHandler.Init.AccumulatedActiveH = ACTIVE_H;

    /* Configure total width */

    LtdcHandler.Init.TotalWidth = TOTAL_WIDTH;

    /* Configure total height */

    LtdcHandler.Init.TotalHeigh = TOTAL_HEIGHT;


    

    /* Configure R,G,B component values for LCD background color */

    LtdcHandler.Init.Backcolor.Red= 0;

    LtdcHandler.Init.Backcolor.Blue= 0;

    LtdcHandler.Init.Backcolor.Green= 0;

    

    /* LCD clock configuration */

    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LTDC;

    PeriphClkInitStruct.PLLSAI.PLLSAIN = _PLLSAIN_CLK;

    PeriphClkInitStruct.PLLSAI.PLLSAIR = PLLSAIR_DIV;

    PeriphClkInitStruct.PLLSAIDivR = RCC_PLLSAIDIVR_2;

    HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct); 

    

    /* Polarity */

    LtdcHandler.Init.HSPolarity = LTDC_HSPOLARITY_AL;

    LtdcHandler.Init.VSPolarity = LTDC_VSPOLARITY_AL;

    LtdcHandler.Init.DEPolarity = LTDC_DEPOLARITY_AL;

    LtdcHandler.Init.PCPolarity = LTDC_PCPOLARITY_IPC;

    

    MspInit();

    HAL_LTDC_Init(&LtdcHandler); 

    


    /* Initialize the SDRAM */

    BSP_SDRAM_Init();


    /* Initialize the font */

    BSP_LCD_SetFont(&LCD_DEFAULT_FONT);


return LCD_OK;

}  






STM32F439 EVM TFT-LCD커넥터 핀맵






기존 7" TFT-LCD 모듈 커넥터 연결하여 다양한 LCD 테스트 가능하다.










STM32F439 TFT LCD 제어 예제

아래는 간단히 LCD 초기화 하고 LCD에 Text 표시하는 예제이다.


#if _USE_TFTLCD_
    LCD_BackLightInit();  
    
    //LCD초기화
    BSP_LCD_Init();

    /* Layer2 Init */
    BSP_LCD_LayerDefaultInit(1, LCD_FRAME_BUFFER_LAYER1);
    /* Set Foreground Layer */
    BSP_LCD_SelectLayer(1);
    /* Clear the LCD */
    BSP_LCD_Clear(LCD_COLOR_GREEN);  
    BSP_LCD_SetColorKeying(1, LCD_COLOR_RED);
    BSP_LCD_SetLayerVisible(1, DISABLE);

    /* Layer1 Init */
    BSP_LCD_LayerDefaultInit(0, LCD_FRAME_BUFFER_LAYER0);

    // Set Foreground Layer
    BSP_LCD_SelectLayer(0);

    // Enable The LCD 
    BSP_LCD_DisplayOn();

    // Clear the LCD 
    BSP_LCD_Clear(LCD_COLOR_BLUE);
    
    BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);


    BSP_LCD_DrawRect(0,0, LCD_WIDTH-1, LCD_HEIGHT-1);
    BSP_LCD_DisplayStringAtLine(0, "STM32F429- EtherCat Test");
#endif


코드 다운로드 하고 테스트 해보면 아래와 같이 TFT-LCD에 출력 되는것을 확인 할수 있다. STM32F439에서 TFT-LCD출력을 위한 기본 셋팅은 구성되었으므로 앞으로 여러가지 테스트 예제를 작성해 가면서 테스트 해보자.





STM32F439 TFT LCD 제어 테스트 예제 동영상

SD Card에 있는 BMP파일을읽어 TFT LCD에 출력하는 동영상









Posted by nexp

댓글을 달아 주세요