LTDC/Parallel RGB
TFT 컨트롤러가 장착된 MCU(예: STM32F429, STM32F746, STM32H7)의 경우, TouchGFX Generator는 프레임 버퍼 메모리에서 디스플레이로 픽셀을 전송하도록 LTDC를 구성하는 HAL의 부분을 생성할 수 있습니다. 생성된 코드는 올바른 프레임 버퍼 전송을 개시하고, LTDC에서 VSYNC 인터럽트가 발생하면 OSWrappers::signalVSync()
를 호출하여 TouchGFX Engine 메인 루프의 차단을 해제합니다.
디스플레이 인터페이스
개발자가 LTDC에 대한 전체 드라이브를 직접 구현해야 하는 "Custom" 디스플레이 인터페이스와 달리, TouchGFX Generator는 LTDC 구성을 지원하기 위해 TouchGFX HAL에 필요한 모든 코드를 생성할 수 있습니다.
TouchGFX Generator를 통해 "Parallel RGB(LTDC)"를 선택 가능한 옵션으로 만들려면 STM32CubeMX 범주 목록의 Multimedia 그룹에서 LTDC가 활성화되어 있어야 합니다.
LTDC가 활성화되면 TouchGFX Generator의 Display 섹션을 통해 Parallel RGB(LTDC) 옵션이 활성화됩니다.
STM32CubeMX를 통해 LTDC를 활성화한 후에도 다음을 위해서는 몇 가지 작업이 필요합니다:
- 연결된 디스플레이 사양과 일치하도록 LTDC(GPIO 및 타이밍) 구성
- 원하는 TouchGFX 애플리케이션 사양과 일치하도록 LTDC 구성
TouchGFX Generator는 STM32CubeMX에서 다양한 구성을 읽어와서 경고, 권장 사항, 오류 등 일명 종속성이라고 하는 요소의 목록을 제공합니다. 아래 그림은 어떤 MCU(이 예에서는 F429 사용)에서든 CubeMX에서 LTDC를 처음 활성화할 때 존재하는 종속성의 목록이 나와 있습니다:
Note
종속성 | 설명 |
---|---|
계층 수 | TouchGFX는 단일 계층만 활용할 수 있습니다. TouchGFX 애플리케이션은 2개의 계층이 활성화된 상태에서 작동할 수 있지만, 이 경우 LTDC에서 구성 오류가 발생할 수 있음을 사용자에게 알리는 경고가 발행됩니다. LTDC 블록에서 계층 수를 변경하십시오. |
창 위치 | 기본적으로 LTDC 계층에서 Horizontal 및 Vertical 창 위치는 각각 0입니다. 창의 Horizontal 및 Vertical 끝 값은 디스플레이 치수와 동일하게 설정해야 합니다. |
Alpha Constant는 0 | LTDC 계층의 알파 상수(alpha constant)는 0으로 기본 설정되어 있습니다. 애플리케이션에서 항상 전역 알파를 유지할 의도가 아니라면 0 이상으로 설정해야 하고 되도록이면 255로 설정하는 것이 좋습니다. |
Multimedia 섹션에서 LTDC 주변 장치를 활성화한 이후에 Parallel RGB(LTDC) 디스플레이 인터페이스를 실제로 선택해야 한다는 점에 유의하십시오.
아래 그림은 TouchGFX Generator 인터페이스에서 Dependencies 그룹이 사라지는 원인이 될 수 있다는 경고 조건을 충족하는 LTDC 구성을 보여줍니다.
STM32CubeMX에서 설정 읽기
TouchGFX Generator를 통해 디스플레이 인터페이스로 Parallel RGB(LTDC)를 선택하면 프레임 버퍼의 width 와 height가 LTDC 구성 horizontal start/stop 및 vertical start/stop에서 상속됩니다.
디스플레이 및 애플리케이션 크기에 따라 Layer 0의 크기를 정의하면 Dependency 창의 새 엔트리가 나타납니다.
Framebuffer Image Width 및 Image Height가 실제 원하는 창의 크기와 일치하는지 확인하면 경고 조건을 충족하게 됩니다.
Caution
TouchGFX 드라이버/VSYNC 신호
Parallel RGB(LTDC)가 디스플레이 인터페이스로 선택되면 개발자는 LTDC Application Tick Driver 또는 TouchGFX 드라이버에 대한 액세스 권한을 획득하게 됩니다.
아래 코드는 LTDC 구성에 따라 생성된 LTDC 인터럽트에 대한 인터럽트 핸들러(STM32F7) 입니다. 생성된 핸들러는 TouchGFX Engine 메인 루프의 차단을 자동으로 해제합니다.
extern "C"
irq void LTDC_IRQHandler(void)
{
if (LTDC->ISR & 1)
{
LTDC->ICR = 1;
if (LTDC->LIPCR == (LTDC->AWCR & 0x7FF) - 1)
{
//entering active area
OSWrappers::signalVSync();
}
}
}
Note
LTDC 프레임 버퍼 구성
생성된 TouchGFX HAL은 런타임 시 LTDC 계층 색상 프레임 버퍼 시작 주소를 자동으로 구성하기 때문에 LTDC 구성에서 값을 설정하면 안 됩니다.
결론
TouchGFX Generator를 통해 Parallel RGB(LTDC) 디스플레이 인터페이스 옵션을 활성화하면 필요한 모든 HAL 코드를 생성할 수 있습니다.
- STM32CubeMX LTDC 구성에 따라 TouchGFX 애플리케이션의 너비, 높이 및 픽셀 형식을 설정합니다. LTDC 계층의 width 와 height는 TouchGFX Designer에서 캔버스 크기에 영향을 미치며, LTDC 픽셀 형식은 필요한 TouchGFX 프레임 버퍼 드라이버를 비롯해 생성된 자산의 형식에 영향을 미칩니다.
- LTDC 애플리케이션 틱 소스를 선택해서 TouchGFX Engine 메인 루프를 구동하도록 핸들러를 생성할 수 있습니다. 일반적으로 LTDC 구성에서 개발자는 제공된 Application Tick Driver를 항상 사용합니다.