[LPC1756 EVM] TFT-LCD 테스트
LPC1756 EVM을 이용하여 TFT-LCD를 테스트 해보았다. 100Mhz 클럭 이기 때문에 좀더 빠를것 같은 기대로 테스트 진행 해 보았다.
IO제어는 빠른것 같다. 1프레임 출력하는데 10ms 안으로 들어온다. 좀더 옵티마이즈 하면 더 빨라질것 같다. 물론 Address/Data Bus를 이용하는것 보다는 느리겠지만 간단히 GPIO만으로도 빠른 속도를 낼 수 있을것 같다.
LPC1756 EVM을 이용하여 TFT-LCD를 테스트 해보았다. 100Mhz 클럭 이기 때문에 좀더 빠를것 같은 기대로 테스트 진행 해 보았다.
IO제어는 빠른것 같다. 1프레임 출력하는데 10ms 안으로 들어온다. 좀더 옵티마이즈 하면 더 빨라질것 같다. 물론 Address/Data Bus를 이용하는것 보다는 느리겠지만 간단히 GPIO만으로도 빠른 속도를 낼 수 있을것 같다.
SPI속도도 빠르기 때문에 SD Card를 이용해서 테스트 해 보았다. LPC1756의 SPI최대 속도는 50Mhz까지 출력되지만 SD Card 제어시는 18Mhz이상 힘들기 때문에 16Mhz로 테스트 해 보았다. (SPI클럭 조합이 좀 아쉽다. 16Mhz 다음에 24Mhz, 48Mhz..로 설정 가능하다.)
LPC1756 EVM TFT-LCD 테스트 드라이버 코드
//-----------------------------------------------------------------------------
//TFT LCD
#define TFT_DRV_HD66791 0
#define TFT_DRV_COM44 1
#define LCD_LAT_BIT BIT0
#define LCD_LAT_PORT GPIO1
#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 BIT4
#define LCD_EN_PORT GPIO1
#define LCD_ENABLE() cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE() sbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_RST_BIT //BIT8
#define LCD_RST_PORT //PORTB
#define LCD_RST_ON() //Sbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RST_OFF() //Cbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RS_BIT BIT0
#define LCD_RS_PORT GPIO0
#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 BIT1
#define LCD_WR_PORT GPIO1
#define LCD_WR_OFF() cbi(LCD_WR_PORT, LCD_WR_BIT)
#define LCD_WR_ON() sbi(LCD_WR_PORT, LCD_WR_BIT)
#define LCD_RD_BIT //BIT5
#define LCD_RD_PORT //LATD
#define LCD_RD_OFF() //Cbi(LCD_RD_PORT, LCD_RD_BIT)
#define LCD_RD_ON() //Sbi(LCD_RD_PORT, LCD_RD_BIT)
#define LCD_BL_BIT BIT4
#define LCD_BL_PORT PORT3
#define LCD_BL_OFF() //Cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON() //Sbi(LCD_BL_PORT, LCD_BL_BIT)
#define _LCD_DAT_OUT(Data) PORT2 = (PORT2&0xFF00) | (Data>>8);\
LCD_DATA_LATCH();\
PORT2 = (PORT2&0xFF00) | (Data&0xFF);
#define TFTGpioInit() GPIOInit(0, DIR_OUT, (BIT0));\
GPIOInit(1, DIR_OUT, (BIT0|BIT1|BIT4));\
GPIOInit(2, DIR_OUT, 0xFF);
//-----------------------------------------------------------------------------
//TFT LCD
#define TFT_DRV_HD66791 0
#define TFT_DRV_COM44 1
#define LCD_LAT_BIT BIT0
#define LCD_LAT_PORT GPIO1
#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 BIT4
#define LCD_EN_PORT GPIO1
#define LCD_ENABLE() cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE() sbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_RST_BIT //BIT8
#define LCD_RST_PORT //PORTB
#define LCD_RST_ON() //Sbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RST_OFF() //Cbi(LCD_RST_PORT, LCD_RST_BIT)
#define LCD_RS_BIT BIT0
#define LCD_RS_PORT GPIO0
#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 BIT1
#define LCD_WR_PORT GPIO1
#define LCD_WR_OFF() cbi(LCD_WR_PORT, LCD_WR_BIT)
#define LCD_WR_ON() sbi(LCD_WR_PORT, LCD_WR_BIT)
#define LCD_RD_BIT //BIT5
#define LCD_RD_PORT //LATD
#define LCD_RD_OFF() //Cbi(LCD_RD_PORT, LCD_RD_BIT)
#define LCD_RD_ON() //Sbi(LCD_RD_PORT, LCD_RD_BIT)
#define LCD_BL_BIT BIT4
#define LCD_BL_PORT PORT3
#define LCD_BL_OFF() //Cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON() //Sbi(LCD_BL_PORT, LCD_BL_BIT)
#define _LCD_DAT_OUT(Data) PORT2 = (PORT2&0xFF00) | (Data>>8);\
LCD_DATA_LATCH();\
PORT2 = (PORT2&0xFF00) | (Data&0xFF);
#define TFTGpioInit() GPIOInit(0, DIR_OUT, (BIT0));\
GPIOInit(1, DIR_OUT, (BIT0|BIT1|BIT4));\
GPIOInit(2, DIR_OUT, 0xFF);
//-----------------------------------------------------------------------------
반응형