[Microchip]/dsPIC2011. 7. 22. 23:22

[dsPIC33 EVM] TFT LCD 출력 속도 테스트

[dsPIC33 EVM] TFT LCD 출력 속도 테스트



dsPIC33 은 최대 40Mhz로 동작하고 SPI속도 또한 빠르므로 TFT LCD 테스트 해 두면 좋을것 같다. 8비트 방식으로 TFT LCD연결 가능한 확장 테스트 보드 중에서 [EXP_DSP] 보드가 적당할것 같다.

8비트 제어모드에서 1프레임 출력시 60ms 정도 걸린다. (옵티마이즈 한후)



[dsPIC33 EVM] TFT LCD테스트 동영상
SPI 최대 클럭 속도는 13Mhz로 SD Card를 이용하여 BMP파일을 출력 해 보았다.





[dsPIC33 EVM] TFT LCD관련 회로도





Posted by nexp

댓글을 달아 주세요

[INTERFACE]/EZ-USB2011. 5. 8. 09:36

[FX2 EVM] Ez-USB CY7C68013 TFT LCD 테스트

[FX2 EVM] Ez-USB CY7C68013 TFT LCD 테스트



[FX2 EVM] 보드는 M-Type의 핀맵으로 [EXP-LCD]보드에 연결하여 TFT-LCD 를 테스트 할 수 있다.

FX2 EVM 핀맵




EXP-LCD 핀맵



[FX2 EVM] TFT LCD 드라이버 코드
 원래 8051의 페리 속도가 느리고, 특히나 PORTE는 비트제어 명령이 지원되지 않기 때문에 Address로 접근해야 해서 속도가 더 느려지는것 같다.

//-----------------------------------------------------------------------------
// TFT LCD Driver
#define TFT_DRV_HD66791     0
#define TFT_DRV_COM44     1

#define LCD_LAT_BIT      BIT8
#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()     Cbi(IOE, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(IOE, LCD_EN_BIT)

#define LCD_RST_BIT      BIT2
#define LCD_RST_PORT     
#define LCD_RST_ON()     PE2 = 1
#define LCD_RST_OFF()     PE2 = 0

#define LCD_RS_BIT      BIT3
#define LCD_RS_PORT      
#define LCD_RS_OFF()     Cbi(IOE, LCD_RS_BIT)
#define LCD_RS_ON()      Sbi(IOE, LCD_RS_BIT)

#define LCD_WR_BIT      BIT5
#define LCD_WR_PORT      
#define LCD_WR_OFF()     PA5 = 0
#define LCD_WR_ON()      PA5 = 1

#define LCD_RD_BIT      BIT4
#define LCD_RD_PORT      
#define LCD_RD_OFF()     PA4 = 0
#define LCD_RD_ON()      PA4 = 1

#define LCD_BL_BIT      BIT4
#define LCD_BL_PORT      
#define LCD_BL_OFF()     Cbi(IOE, LCD_BL_BIT)
#define LCD_BL_ON()      Sbi(IOE, LCD_BL_BIT)

#define _LCD_DAT_OUT(Data)    IOB=Data&0xFF;IOD=(Data>>8);
          
#define TFTGpioInit()     OEB=0xFF;OED=0xFF;\
          PORTECFG = 0;OEE=0xFF;PORTACFG = 0;OEA=0xFF;
//-----------------------------------------------------------------------------




[FX2 EVM] TFT LCD테스트 동영상
한프레임 출력하는데 220ms정도 걸린다.. 너무 느리다. GPIF모드나 BUS모드로 테스트 해 봐야 할것 같다. FPGA를 이용해 FX2는 USB데이터를 받아서 버퍼에 저장하고 LCD제어는 다른 MCU에서 처리하도록 해야 할것 같다.


Posted by nexp

댓글을 달아 주세요

[DSP]/PICCOLO2011. 5. 5. 08:30

[TMS320F28069 EVM] TFT LCD 테스트

[TMS320F28069 EVM] TFT LCD 테스트


[EXP-DSP EVM] 보드를 이용하면 8비트 모드로 TFT LCD를 쉽게 테스트 해 볼 수 있다. TMS320F28069는 최대 80MHz 동작하므로 속도는 느리지 않을것 같다.

일단 기존 코드에 드라이버 부분만 수정하면 프로그램 수정없이 테스트 가능하므로 속도 테스트를 해보자

TFT LCD 드라이버 코드
//-----------------------------------------------------------------------------
// TFT LCD Driver
#define TFT_DRV_COM44     1

#define LCD_LAT_BIT      BIT8
#define LCD_LAT_ON()     sbi(GPIOA_S, LCD_LAT_BIT);NOP();
#define LCD_LAT_OFF()     cbi(GPIOA_C, LCD_LAT_BIT);NOP();
#define LCD_DATA_LATCH()    LCD_LAT_ON();LCD_LAT_OFF();

#define LCD_EN_BIT      BIT30
#define LCD_EN_PORT      
#define LCD_ENABLE()     cbi(GPIOA_C, LCD_EN_BIT);NOP();
#define LCD_DISABLE()     sbi(GPIOA_S, LCD_EN_BIT);NOP();

#define LCD_RST_BIT      BIT6
#define LCD_RST_PORT     PORTA
#define LCD_RST_ON()     
#define LCD_RST_OFF()     

#define LCD_RS_BIT      BIT31
#define LCD_RS_PORT      
#define LCD_RS_OFF()     cbi(GPIOA_C, LCD_RS_BIT);NOP();
#define LCD_RS_ON()      sbi(GPIOA_S, LCD_RS_BIT);NOP();

#define LCD_WR_BIT      BIT12
#define LCD_WR_PORT      
#define LCD_WR_OFF()     cbi(GPIOA_C, LCD_WR_BIT);NOP();
#define LCD_WR_ON()      sbi(GPIOA_S, LCD_WR_BIT);NOP();

#define LCD_RD_BIT      BIT7
#define LCD_RD_PORT      
#define LCD_RD_OFF()     //cbi(GPIOA_C, LCD_RD_BIT);NOP();
#define LCD_RD_ON()      //sbi(GPIOA_C, LCD_RD_BIT);NOP();

#define LCD_BL_BIT      BIT6
#define LCD_BL_PORT      PORTB
#define LCD_BL_OFF()     
#define LCD_BL_ON()      

#define _LCD_DAT_OUT(Data)    PORTA = (PORTA&(~0xFF)) | (Data>>8)&0xFF;NOP();\
          LCD_DATA_LATCH();\
          PORTA = (PORTA&(~0xFF)) | (Data&0xFF)&0xFF;NOP();

#define TFTGpioInit()     EALLOW;\
          Sbi(GpioCtrlRegs.GPADIR.all, 0xFF);\
          Cbi(GpioCtrlRegs.GPAMUX1.all, 0xFF);\
          GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 0;\
          GpioCtrlRegs.GPADIR.bit.GPIO30 = 1;\
          GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0;\
          GpioCtrlRegs.GPADIR.bit.GPIO31 = 1;\
          GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;\
          GpioCtrlRegs.GPADIR.bit.GPIO12 = 1;\
          GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 0;\
          GpioCtrlRegs.GPADIR.bit.GPIO8 = 1;\
          EDIS;
//-----------------------------------------------------------------------------



TMS320F28069 EVM 핀맵


[EXP-DSP] TFT LCD관련 자료





TMS320F28069 EVM TFT LCD테스트 프로그램 동영상

Posted by nexp

댓글을 달아 주세요

[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

댓글을 달아 주세요