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 속도를 올리는 방법으로 테스트 해봐야 할것 같다.
반응형