본문 바로가기

ESPRESSIF/ESP32-S3

[ESP32S3-SM] TFT-LCD 테스트

 

 

 

ESP32S3-SM 보드는 SM Type EVM 형태의 표준 핀맵으로 제작되었고 확장 테스트 보드에서 기존에 제작 해 두었던 여러가지 보드를 테스트 할 수 있다.

확장 테스트 보드의 LCD에는 8bit 방식으로 연결되어 있다.

8비트 방식을 16비트 방식으로 변환 해 주는 LCD_CONV 테스트 보드에 연결하여 테스트 했다.


TFT_LCD 모듈(COM26T2844) 를 위한 핀맵을 설정하고 기본 코드 수정해 주어야 한다.

#define LED_BIT         18
#define lcd_delay()
#define Delay(x)        delay(x)

#define sbi(Port, Value)        (GPIO.out_w1ts = (1<<Value))
#define cbi(Port, Value)        (GPIO.out_w1tc = (1<<Value))

#define sbi1(Port, Value)        GPIO.out1_w1ts.val = ((uint32_t)1 << (Value - 32))
#define cbi1(Port, Value)        GPIO.out1_w1tc.val = ((uint32_t)1 << (Value - 32))

#define Led1Off()         sbi(0, BIT13)
#define Led1On()          cbi(0, BIT13)

#define PORTA             (GPIO.out)
#define GPIO0             0
#define GPIO1             1

#define LCD_XLINE_SIZE            240
#define LCD_YLINE_SIZE            400

#define LCD_LAT_BIT           14
#define LCD_LAT_PORT          
#define LCD_LAT_ON()          sbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_LAT_OFF()         cbi(LCD_LAT_PORT, LCD_LAT_BIT)
#define LCD_DATA_LATCH()        LCD_LAT_ON();LCD_LAT_OFF();

#define LCD_EN_BIT            36
#define LCD_EN_PORT           
#define LCD_ENABLE()          cbi1(LCD_EN_PORT, LCD_EN_BIT);
#define LCD_DISABLE()         sbi1(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RS_BIT            35
#define LCD_RS_PORT           
#define LCD_RS_OFF()          cbi1(LCD_RS_PORT, LCD_RS_BIT)
#define LCD_RS_ON()           sbi1(LCD_RS_PORT, LCD_RS_BIT)

#define LCD_WR_BIT            34
#define LCD_WR_PORT           
#define LCD_WR_OFF()          cbi1(LCD_WR_PORT, LCD_WR_BIT);lcd_delay()
#define LCD_WR_ON()           sbi1(LCD_WR_PORT, LCD_WR_BIT);lcd_delay()

#define _LCD_DAT_OUT(Data)        PORTA = (PORTA&0xFFFFFF00) | (Data>>8);\
                                      LCD_DATA_LATCH();\
                                  PORTA = (PORTA&0xFFFFFF00) | (Data&0xFF);


//-------------------------------------------------------------------------
//Write Command 
void Lcd_Cmd(unsigned int Data)     
{
  LCD_ENABLE();
  LCD_RS_OFF();

  _LCD_DAT_OUT(Data);
  LCD_WR_OFF();
  LCD_WR_ON();
  
//  LCD_DISABLE();  
  LCD_RS_ON();  
}

//-------------------------------------------------------------------------
//Write Data 
void Lcd_Data(unsigned int Data)    
{
  _LCD_DAT_OUT(Data);
  LCD_WR_OFF();
  LCD_WR_ON();
}
 

 

MCU 성능 측정에 있어 GPIO 토글 속도를 측정하는 이유는 FTFLCD와  같은 GPIO로 제어 하는 주변 장치를 사용할 때  주요 성능 지표가 되기 때문이다.


 ESP32-S3의 경우 GPIO 성능 측정 결과 62ns 정도로 느린데 TFTLCD Write 신호의 적정 타이밍은 40ns 이므로 최대 성능을 사용할 수 가 없다.

ESP32-S3에서 Wr 신호를 측정해 보면 60ns 정도로 측정이 된다.
 
 
 
이 경우 프레임 출력 속도는 54ms (18fps) 로 측정이 된다.
 

[STM32G4 SM EVM] STM32CubeIDE TFT LCD(COM26T2844 테스트와 비교 하면 상당히 느린것을 확인 할 수 있다.

 

LCD 속도를 높이기 위해서는 DMA와 I2S 기능을 이용해서 GPIO 속도를 올리는 방법으로 테스트 해봐야 할것 같다.

 

 

 

반응형