본문 바로가기

[ST_MICRO]/STM32G4

[STM32G4 SM] STM32G431 TFT LCD (COM26T2844) BMP 파일 출력 테스트

STM32CubeIDE를 이용하여 테스트 했던 TFT LCD제어 에서 STM32G431의 플래시 메모리는 128kB 밖에 되지 않기 때문에 내부 메모리로 BMP 파일 출력하기 어렵다. SD Card를 이용하여 BMP 파일을 출력 하기 위해 Arduino 라이브러리를 사용하면 좋을것 같다.

 

SM-Type EVM을 이용하여 8bit 방식으로 TFT LCD를 제어 할수 있는  NET-EXP 보드를 이용하여 테스트 하였다.


Arduino 라이브러리는 https://github.com/adafruit/TFTLCD-Library 를 참고 수정해서 사용 했다

 

기본 라이브러리를 이용하여 초기화 부분을 수정해서 테스트 해보면 정상 동작 하는것을 확인 할 수 있다.

#define TFT_RD         LL_GPIO_PIN_0 // Px0
#define TFT_WR         LL_GPIO_PIN_6 // Px1
#define TFT_RS         LL_GPIO_PIN_9 // Px5
#define TFT_CS         LL_GPIO_PIN_8 // Px6
#define TFT_RST        LL_GPIO_PIN_7 // Px7


#define PORTB					(GPIOB->ODR)

#define LCD_EN_BIT				TFT_CS
#define LCD_EN_PORT				GPIOB

#define LCD_RS_BIT				TFT_RS
#define LCD_RS_PORT				GPIOB

#define LCD_WR_BIT				TFT_WR
#define LCD_WR_PORT				GPIOC

#define LCD_LAT_BIT				BIT8
#define LCD_LAT_PORT			GPIOA
#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_DAT_OUT(Data)		PORTB = (PORTB&0xFF00) | (Data>>8);\
                                LCD_DATA_LATCH();\
                               	PORTB = (PORTB&0xFF00) | (Data&0xFF);
										
#define Delay(x)          delay(x)


#define RD_ACTIVE      
#define RD_IDLE        
#define WR_ACTIVE      HAL_GPIO_WritePin(LCD_WR_PORT, LCD_WR_BIT, GPIO_PIN_RESET)
#define WR_IDLE        HAL_GPIO_WritePin(LCD_WR_PORT, LCD_WR_BIT, GPIO_PIN_SET)
#define CD_COMMAND     cbi(LCD_RS_PORT, TFT_RS)
#define CD_DATA        sbi(LCD_RS_PORT, TFT_RS)
#define CS_ACTIVE      cbi(LCD_EN_PORT, TFT_CS)
#define CS_IDLE        sbi(LCD_EN_PORT, TFT_CS)
#define RST_ACTIVE     
#define RST_IDLE       

#define RD_STROBE      {RD_ACTIVE; RD_IDLE;} // Not use
#define WR_STROBE      {WR_ACTIVE; WR_IDLE;} // Not use

 

void STM32_TFT_8bit::writeCmdWord(uint16_t c) {
	CS_ACTIVE;
	CD_COMMAND;

	_LCD_DAT_OUT(c);
	WR_ACTIVE;
	WR_IDLE;
	CD_DATA;
}


void STM32_TFT_8bit::writeDataWord(uint16_t c) {
	_LCD_DAT_OUT(c);
	WR_ACTIVE;
	WR_IDLE;
}

 

 

반응형