본문 바로가기

[ST_MICRO]/STM32G4

[STM32G4 SM EVM] STM32CubeIDE TFT LCD(COM26T2844) 테스트

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

STM32G431는 GPIO 속도도 빠르기 때문에 LCD 테스트 해 보면 좋을 것 같다.

 

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

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


STM32CubeIDE 를 이용하여  TFT_LCD 모듈(COM26T2844) 를 위한 핀맵을 설정하고 기본 코드를 구동하면 정상 동작한다.

#define LCD_LAT_BIT						BIT14
#define LCD_LAT_PORT					GPIOC
#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						BIT15
#define LCD_EN_PORT						GPIOA
#define LCD_ENABLE()					cbi(LCD_EN_PORT, LCD_EN_BIT);
#define LCD_DISABLE()					sbi(LCD_EN_PORT, LCD_EN_BIT)


#define LCD_RS_BIT						BIT8
#define LCD_RS_PORT						GPIOB
#define LCD_RS_OFF()					cbi(LCD_RS_PORT, LCD_RS_BIT)
#define LCD_RS_ON()						sbi(LCD_RS_PORT, LCD_RS_BIT)

#define LCD_WR_BIT						BIT8
#define LCD_WR_PORT						GPIOA
#define LCD_WR_OFF()					cbi(LCD_WR_PORT, LCD_WR_BIT);
#define LCD_WR_ON()						sbi(LCD_WR_PORT, LCD_WR_BIT);


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

 

 

기존 코드로 잘동작하는 코드를 옵티마이즈 옵션을 적용 하니 정상 동작을 하지 않는다.
 
STM32G 시리즈가 GPIO토글 속도 비교에서 확인한 것 처럼 하드웨어적 페리구조가 향상되었다고 하는데 ... 그 문제 인가?
좀 더 자세하게 살펴 보자.
 

 

우선 LCD의 데이이터 시트를 확인하면 Write시 타이밍을 보면 45ns 이상은 확보 되어야 한다고 한다.
정상 동작시 파형을 확인해 보자 34ns 정도로 출력 된다.
 

 
이때 한프레임 출력 속도는 47.7ns(21fps) 정도로 측정된다.

 

 

옵티마이즈 후 10ns로 너무 짧아졌다. 그래서 정상 동작을 하지 않은것 같다.

 

 

 


Write 신호 다음에 딜레이를 넣어 보자
#define NOP_1   asm volatile("NOP")
#define NOP_2  NOP_1; NOP_1
#define NOP_4  NOP_2; NOP_2


#define lcd_delay()			NOP_4

#define LCD_WR_BIT			BIT8
#define LCD_WR_PORT			GPIOA
#define LCD_WR_OFF()		cbi(LCD_WR_PORT, LCD_WR_BIT);lcd_delay()
#define LCD_WR_ON()			sbi(LCD_WR_PORT, LCD_WR_BIT);

 

Write 신호를 40ns 정도로 지연을 주니 정상 동작 한다.

 
그때 프레임 속도는 13.6ns(73fps) 정도로 측정이 된다.

 

딜레이 값을 출이면 12.6ms (80fps) 까지도 출력 가능하긴 하다.

 

 

반응형