32F429IDISCOVERY TFT-LCD에 다양한 색 출력하기 - 1

2019. 7. 17. 22:46임베디드/32F429IDISCOVERY

다음은 TFT 구조다. TFT는 간단히 말해서 Thin Film Transistor의 약자로, 스위칭 소자다

 

 

1. Backlight - 가장 뒤에서 빛을 비추는 조명역할을 한다

2. TFT Araay - TFT는 스위칭 소자로, 액정에 신호전압을 인가하고 차단하는 역할을 한다

3. Liquid Crystal - 액체와 고체의 두가지 특성을 다 가지고 있는 물질로, 빛을 통과시키거나 차단하는 역할을 한다

4. Color Filter - RGB로 구성되어서 색상을 만드는 역할을 한다

 

32F32F429IDISCOVERY 보드에서 사용하는 TFT-LCD는 SF-TC240T-9370-B-T로, 240x320 TFT 패널과 ILI9341 드라이버 IC로 구성되어 있다. CLCD처럼 드라이버에 대해서 잘 알아야만 성공적으로 제어할 수 있다

 

 

http://www.newhavendisplay.com/app_notes/ILI9341.pdf는 ILI9341의 문서 내용이다

 

 

총 172,800바이트의 그래픽 데이터를 담고 있으며, 규격은 240RGBx320이 된다. 병렬 데이터 인터페이스와 SPI 인터페이스를 지원한다. 그리고 대략적인 기능과 하드웨어 규격도 설명되어 있다

 

 

그리고 핀에 대한 설명

 

 

 

 

 

4-wire 8bit SPI 통신을 사용할 것인데, SCL, SDA, D/CX, CSX핀을 사용한다. 여기서는 SPI라고해서 병렬 인터페이스와 비교해 빠르고 느리고를 논하는 것은 무의미하다. 왜냐하면 실제 연결된 이후에 대부분의 데이터 통신은 RGB 인터페이스에서 이뤄지기 때문이다

 

 

 

기본적인 SCL, SDA, CSX에 하나 더 데이터와 명령어를 구분하는 핀도 포함되어 있다. 데이터 버스 핀 중 사용하지 않는 핀들은 그라운드로 연결하라고 되어있다. 

 

 

RGB 인터페이스도 MCU 인터페이스처럼 여러가지 모드를 지원하는데, 이번 예제에서는 DE 신호에 의해서 제어되는 DE 모드로 동작시킬 것이다. 그리고 예제에서는 18비트 RGB 인터페이스를 사용하려고 한다

 

 

 

[+추가] RGB565란 적색이 5비트, 녹색이 6비트, 청색이 5비트로 한 픽셀의 색상을 나타내며 총 2바이트로 사용되는 색상체계다. 0xF800(적색), 0x07E0(녹색), 0x001F(청색)을 뜻한다

 

 

따라서 240*320 픽셀의 경우, 프레임 버퍼의 0부터 [(240*320)/2-1]까지 0xF800값을 넣고, 나머지 [(240*320)/2]부터 [(240*320-1]까지 0x001F를 넣는다면 위와 같은 그림을 표현할 수 있다

 

VSYNC : 프레임 수직 동기화 신호로 디스플레이의 새로운 프레임을 받았을 때 동작

DOTCLK : RGB 인터페이스 동작을 위한 DOT 클럭 신호

ENABLE : RGB 인터페이스 동작을 위한 데이터 인에이블 신호

HSYNC : 라인 수평 동기화 신호 (프레임의 새로운 라인을 받을 때)

VSYNC : 프레임 수직 동기화 신호 (디스플레이의 새로운 프레임을 받을 때)

 

위와 같은 파형을 MCU에서 TFT-LCD에 제공을 해야 한다. 이것은 GPIO로 만들어서 사용할 수 없고, TFT-LCD가 내장되어 있는 MCU를 사용해야만 한다. 아래의 그림과 같이 STM32F4 시리즈의 문서를 보면 TFT-LCD 컨트롤러가 따로 내장되어 있는 것을 알 수 있다

 

 

 

위의 Block Diagram에서도 볼 수 있듯이, 따로 제공되는 핀들이 있다. 이를 연결한 후 위의 Timing 신호처럼 출력을 하도록 설정하면 된다

 

 

1. DOTCLK의 상승 에지에 동기해서 VSYNC, HSYNC, DE, D[17:0]이 입력되어야 하고, DOTCLK는 멈춤없이 항상 입력되어야 한다

2. VSYNC는 새로운 프레임이 입력될 때 사용된다. VSYNC 신호가 LOW면서, DOTCLK가 상승 에지일 때 VSYNC의 상태를 읽게 된다

3. 마찬가지로 HSYNC는 프레임의 새로운 LINE이 입력될 때 사용된다. 똑같이 HSYNC 신호가 LOW면서, DOTCLK가 상승 에지에서 동작하게 된다

4. DE 모드에서 DE는 RGB 정보를 받을 때 사용된다. DE는 HIGH인 상태에서 DOTCLK가 상승 에지일 때 읽어오게 된다