STM32 (Cortex-M4)

STM32 media 보드 - TFT LCD 제어 PART2

gigax 2025. 3. 31. 16:50

◎ LCD 드라이버에 동작 방식을 파악해 보겠습니다.

먼저 데이터 시트에 내용을 참고 하겠습니다.
1. Description
Embedded 768KB display RAM provides user a flexible solution for display buffer of almost application.
2. Features

Embedded 768KB DDRAM.

위의 글을 참고해 보면 내장된 DDRAM 을 이용 하여 디스플레이 버퍼에 접근한다는 내용 입니다. RA8875 에 내장된 DDRAM을 STM32에서 연동 하기 위해서 바로 FSMC(Flexible Static Memory Control) 라는 기능을 사용 하면 됩니다.

위 그림을 보면 디스플레이 RAM에 데이터를 쓸 때는 데이터 버스 모드 설정에 따라 DB[15:0](데이터 버스의 전체 16비트)가 사용된다는 내용이 있습니다. 저는 8080 병렬 모드로 D0~D15 까지 포트를 구성하여 데이터 통신을 하는 방식으로 선택 했습니다. 이렇게 구성하면 STM32에 내장되어 있는 그래픽 데이터를 RA8875 디스플레이 메모리에 직접 접근을 하는 겁니다.
코드를 통해 더 자세한 내용을 정리해 보겠습니다.
우선은 FSMC 에 대한 설정을 진행해야 합니다.
다시 회로도를 봐야 합니다.

이 회로도에서 먼저 중요하게 봐야 하는 부분은 FSMC_NE4_A , FSMC_A18 입니다.
FSMC_NE4_A 가 의미하는것은 FSMC 바운드리 어드레스 영역에서 Bank 4 (정확하게는 Bank1 영역에 Bank4) 를 설정하겠다는 의미 입니다. FSMC_A18 은 아래의 그림을 보면 알수 있습니다.

회로도의 구성상 PORTD 13 에 A18 영역에 Register 를 선택한 것입니다.
이 부분을 참고해서 설정을 진행 하면 됩니다.


● BANK 4 영역을 활성화 하기 때문에 NE4 를 선택 합니다.

● Memory type은 LCD Interface 를 설정하면 자동으로 stm32f4xx 내부에 있는 메모리(SRAM) 를 활성화 합니다.
● LCD Register Select 는 A18을 선택 합니다.

● Data 는 지난번 글에서 말했듯이 8080 병렬모드 16비트 데이터 전송 입니다. 

● 나머지 선택은 모두 disable 시키는데 어차피 LCD Interface를 선택 하면 선택 할수 없어서 기본이 disable 상태 입니다.

이제 그다음은 FSMC가 RA8875 에 SRAM 영역에 접근 할수 있는 환경을 구성 했으므로 마지막으로 타이밍 설정을 진행 해야 합니다.
다음 내용은 Part3 에서 계속 작성 하겠습니다.