[MCU]/CANTUS2011. 4. 3. 03:04

[CANTUS EVM] TFT LCD제어

[CANTUS EVM] TFT LCD제어



[LCD-EXP EVM]
보드를 이용하여 CANTUS로 COM26T2844 TFT LCD를 제어 해 보려고 한다.
환경설정이 달라지면서 여러가지 문제점이 많다. 기존 소스를 포팅하니 오류가 많이 뜬다.
-> 문제는 디렉토리 설정에서 현재 자신의 프로젝트를 가리키는 설정에 문제가 있었다.
-> 그냥 "." 기입하면 자신의 디렉토리가 설정된다.



CANTUS의  GPIO 출력 레지스터는 일반 MCU와 달리  Low, High를 PxOHIGH, PxOLOW에 각각 따로 설정해야 한다. 특히 LCD와 같이 데이터를 포트제어로 해야 할때 문제가 있다. 두번 제어 해야 하므로 속도도 문제가 되고...

아무튼 기존 다른 MCU에서 사용했던 코드를 포팅 했는데.. TFT LCD가 정상 동작 하지 않는다.
왜 이렇게 만들었을까?

#define _LCD_DAT_OUT(Data)    *R_P0oLOW=0xFF;*R_P0oHIGH = (Data&0xFF);\
                                                          *R_P1oLOW=0xFF;*R_P1oHIGH = ((Data>>8)&0xFF);


스코프로 하나씩 찍어보자..
-> 문제는 /RD 쪽 포트 설정에 문제였던것 같다.
//-----------------------------------------------------------------------------
// TFT LCD Driver
#define TFT_DRV_HD66791     0
#define TFT_DRV_COM44     1

#define LCD_LAT_BIT      
#define LCD_LAT_PORT     
#define LCD_LAT_ON()     
#define LCD_LAT_OFF()     
#define LCD_DATA_LATCH()    LCD_LAT_ON();LCD_LAT_OFF();

#define LCD_EN_BIT      BIT5
#define LCD_EN_PORT      
#define LCD_ENABLE()     Sbi(*R_P5oLOW, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(*R_P5oHIGH, LCD_EN_BIT)

#define LCD_RST_BIT      BIT6
#define LCD_RST_PORT     
#define LCD_RST_OFF()     Sbi(*R_P2oLOW, LCD_RST_BIT)
#define LCD_RST_ON()     Sbi(*R_P2oHIGH, LCD_RST_BIT)

#define LCD_RS_BIT      BIT7
#define LCD_RS_PORT      
#define LCD_RS_OFF()     Sbi(*R_P2oLOW, LCD_RS_BIT)
#define LCD_RS_ON()      Sbi(*R_P2oHIGH, LCD_RS_BIT)

#define LCD_WR_BIT      BIT3
#define LCD_WR_PORT      
#define LCD_WR_OFF()     Sbi(*R_P2oLOW, LCD_WR_BIT)
#define LCD_WR_ON()      Sbi(*R_P2oHIGH, LCD_WR_BIT)

#define LCD_RD_BIT      BIT2
#define LCD_RD_PORT      
#define LCD_RD_OFF()     Sbi(*R_P2oLOW, LCD_RD_BIT)
#define LCD_RD_ON()      Sbi(*R_P2oHIGH, LCD_RD_BIT)

#define LCD_BL_BIT      BIT4
#define LCD_BL_PORT      
#define LCD_BL_OFF()     Sbi(*R_P5oLOW, LCD_BL_BIT)
#define LCD_BL_ON()      Sbi(*R_P5oHIGH, LCD_BL_BIT)

#define _LCD_DAT_OUT(Data)    *R_P0oLOW=0xFF;*R_P0oHIGH = (Data&0xFF);\
          LCD_DATA_LATCH();\
          *R_P1oLOW=0xFF;*R_P1oHIGH = ((Data>>8)&0xFF);

#define TFTGpioInit()     Sbi(*R_PAF5, (3<<4));Sbi(*R_PAF5, (3<<5));*R_P0oDIR = 0xFF;\
          *R_P1oDIR = 0xFF;\
          *R_P2oDIR = 0xFF;\
          *R_P5oDIR = 0xFF;


이제 정상 동작한다.
그런제 JTAG다운로드가 너무 느리다. 80Kbyte의 간단한 이미지를 다운하는데 1분가까이 걸린다. 이건뭐... 시리얼보다 느리니.. 개발하지 말라는건지...

일단 LCD출력속도를 한번 테스트 해 보았다.

LCD_EXP_EVM 를 이용한 속도 테스트 결과와 비교해 볼 수 있다.




SD에 저장해서 출력하는 방식을 취해보았다. 잘 동작한다.



CANTUS 512 SD Card사용 TFT LCD테스트 동영상

 



Posted by nexp

댓글을 달아 주세요

[MODULE]/LCD_TFT2010. 12. 4. 18:50

TFT LCD 에니메이션 테스트

TFT LCD 에니메이션 테스트


TFT LCD 에니메이션 테스트 동영상
Posted by nexp

댓글을 달아 주세요

[ST_MICRO]/STM322010. 12. 4. 16:16

[STM32-LCD EVM] 보드 제작

[STM32-LCD EVM] 보드 제작


STM32 를 이용한 TFT LCD테스트 모듈을 제작했다. 탁상용 액자로 사용해 보려고 소형으로 제작 했다.
2.6" TFT LCD(COM44), MP3모듈, SD Card, 이더넷 모듈, 가속도 센서등을 연결할 수 있다.






STM32-LCD EVM 테스트 동영상


Posted by nexp

댓글을 달아 주세요

[Microchip]/PIC322010. 11. 27. 21:33

[PIC32-SM EVM] TFT LCD (COM26T2844) 테스트 - AVR과 속도 비교

[PIC32-SM EVM] TFT LCD (COM26T2844)  테스트


[EXP-NET EVM] 보드는 W5100을 연결하여 이더넷 테스트를 하기 위한 보드로 제작 했는데 TFT LCD모듈도 연결하여 테스트 가능하다. PIC32의 속도를 좀더 테스트 해 보기 위해 테스트 자료정리를 좀 해 보았다.
추후 PIC32의 USB호스트 기능을 테스트 하거나 이더넷 테스트를 진행할 예정이다.


[EXP-NET EVM] 보드의 TFT LCD (COM26T2844)) 회로도




(한가지 아쉬운점이 있다면 RS신호를 RF4로 할당해야 하는데... 멀리 떨어져 있을뿐 아니라 16핀용 다른 MCU와 호환이 안된다. 다음에 화장보드 제작시에는 고려를 할 필요가 있을것 같다.)

TFT LCD Driver 코드
//-----------------------------------------------------------------------------
//LCD Driver
//-----------------------------------------------------------------------------
// TFT LCD(COM26T2844) Driver
#define TFT_DRV_COM44     1

#define LCD_EN_BIT      BIT5
#define LCD_EN_PORT      LATF
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      BIT6
#define LCD_RST_PORT     LATD
#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      BIT15
#define LCD_RS_PORT      LATB
#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      BIT4
#define LCD_WR_PORT      LATD
#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      BIT7
#define LCD_BL_PORT      LATD
#define LCD_BL_OFF()     Cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON()      Sbi(LCD_BL_PORT, LCD_BL_BIT)

#define TFTGpioInit()     Cbi(TRISE, 0xFF);\
          Cbi(TRISD, BIT4|BIT5|BIT6|BIT7);\
          Cbi(TRISF, BIT5);\
          Cbi(TRISB, BIT15);


PIC32-SM EVM TFT LCD테스트 동영상
거의 구분이 가지 않는다. 240x400 1프레임 그리는데 20ms정도 밖에 걸리지 않는다.  옵티마이즈와 오버 클럭하면 동영상도 가능할듯...



ATMega128 7.3728Mhz에서 TFT LCD테스트 동영상과 비교하면 차이가 많이 난다. 가격도 훨씬 더 저렴한 PIC32가 AVR과 성능 비교가 않될 정도 이다.


Posted by nexp

댓글을 달아 주세요

[AVR]/AVR_EVM2010. 8. 21. 23:07

[ATXmega128a1 EVM] TFT LCD EXP 보드 테스트

[ATXmega128a1 EVM] TFT LCD EXP 보드 테스트



ATXmega128a1 보드를 이용하여 LCD_EXP_EVM 보드 를 테스트 했다.


회로도
LCD_EXP_EVM보드 회로도


ATXmega128 EVM 보드 회로도



ATXmega128a1 TFT LCD(COM26T2844) 테스트 예제 코드
//-----------------------------------------------------------------------------
// TFT LCD(COM26T2844) Driver
#define LCD_LAT_BIT      BIT8
#define LCD_LAT_PORT     PORTA
#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      BIT1
#define LCD_EN_PORT      PORTF
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      BIT5
#define LCD_RST_PORT     PORTF
#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      BIT4
#define LCD_RS_PORT      PORTF
#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      PORTE
#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      //BIT7
#define LCD_RD_PORT      //PORTA
#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      BIT0
#define LCD_BL_PORT      PORTF
#define LCD_BL_OFF()     Cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON()      Sbi(LCD_BL_PORT, LCD_BL_BIT)

#define TFTGpioInit()     PORTJ_DIR = 0xFF;\
          PORTK_DIR = 0xFF;\
          Sbi(PORTF_DIR, BIT0|BIT1|BIT4|BIT5);\
          Sbi(PORTE_DIR, BIT1);
//----------------------------------------------------------------------------- 


XMega128a1 TFT LCD테스트 동영상



기존 ATMega128 7.3728Mhz에서 TFT LCD테스트와 비교하면 속도차를 느낄 수 있다.

Posted by nexp

댓글을 달아 주세요