[DSP]/DSP283352011. 11. 12. 22:30

[DSP28335 EVM] TFT LCD 출력 속도 테스트 - TMS320F28335 EXP_LCD EVM

[DSP28335 EVM] TFT LCD 출력 속도 테스트 - TMS320F28335 EXP_LCD EVM



[LCD_EXP_EVM] 보드 를 이용하여 TMS320F28335로 TFT LCD출력 테스트를 진행 했다.
TMS320F28335는 외부 메모리 인터페이스(EXINF)를 지원하므로 EXINF로 실험 해 보았다.

LCD_CS는 TMS320F28335 CS0로 할당 했고 LCD RS는 A0로  할당 했다.




240x400 픽셀의 한 프레임 출력시 GPIO로 제어 하면 10ms정도 시간이 걸린다.

외부 데이터/어드레스 버스로 제어 했을때  Function -2옵티마이즈 옵션으로 8ms정도 나온다
File -3로 최적화시에 한프레임 출력하는데  4ms 정도 나온다.
특히나 CS동기를 맞추기 때문에 다른 입출력 장치(Ethernet, ADC, DAC 등)와 함께 사용시 확실한 성능 차이를 보여줄 것 같다.

TMS320F28335 TFT-LCD 출력 테스트 동영상





TMS32F28335 TFT LCD 테스트 동영상 - Sd card를 이용한 BMP출력
SPI를 이용하여 SD Card의 BMP이미지 출력시 속도가 많이 느려지는데 TMS320F28335의 SPI클럭속도가 최대 10Mhz밖에 되지 않기 때문인것 같다.
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

댓글을 달아 주세요

[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

댓글을 달아 주세요

[TI]/LM3S89622010. 5. 23. 17:07

[LM3S8962 EVM] COM26T2844 TFT LCD 테스트

[LM3S8962 EVM] COM26T2844 TFT LCD 테스트



[LCD-EXP EVM]
보드를 이용하여 COM26T2844 TFT LCD테스트 진행을 했다. LM3S8962는 MAC, Phy가 포함되어 있으므로 추후 이더넷을 이용하여 TFT LCD제어에 사용할 예정이다.

LCD-EXP보드의 핀맵



LM3S8962 보드 핀맵



핀맵 정의
//LM3S8962 EVM TFT LCD Pin Map defination
#define LCD_EN_BIT      BIT1
#define LCD_EN_PORT      PORTG
#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     PORTC
#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      BIT7
#define LCD_RS_PORT      PORTC
#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      BIT7
#define LCD_WR_PORT      PORTA
#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      //BIT6
#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)


LM3S8962 TFT LCD(COM26T2844 ) 테스트 동영상


Posted by nexp

댓글을 달아 주세요

  1. 비밀댓글입니다

    2010.06.23 14:44 [ ADDR : EDIT/ DEL : REPLY ]
  2. 박현일

    전자재품 특허등록받은 사람입니다 제품을 만들려고 하는데 모듈에 관하여 상담좀 하고 싶습니다 연락좀 부탁 드리겠습니다 010-8239-3737

    2010.06.23 14:45 [ ADDR : EDIT/ DEL : REPLY ]

[AVR]/Mega1282009. 11. 22. 05:26

ATMega128 TFT LCD(COM26T2844) 테스트

ATMega128 TFT LCD(COM26T2844) 테스트


ATMega128을 이용하여 [LCD_EXP EVM] 보드를 테스트 했다.
자료 정리 차원에서 정리해 본다.

ATMega128 TFT LCD(COM26T2844) Pinmap



ATMega128 TFT LCD(COM26T2844) Driver Code
//-----------------------------------------------------------------------------
// TFT LCD(COM26T2844) Driver
#define TFT_DRV_COM44     1

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

#define LCD_RST_BIT      BIT4
#define LCD_RST_PORT     PORTD
#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      BIT7
#define LCD_RS_PORT      PORTE
#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      BIT3
#define LCD_WR_PORT      PORTG
#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      BIT4
#define LCD_BL_PORT      PORTB
#define LCD_BL_OFF()     Cbi(LCD_BL_PORT, LCD_BL_BIT)
#define LCD_BL_ON()      Sbi(LCD_BL_PORT, LCD_BL_BIT)

#define TFTGpioInit()     DDRA = 0xFF;\
          DDRC = 0xFF;\
          Sbi(DDRB, BIT4|BIT5);\
          Sbi(DDRD, BIT4);\
          Sbi(DDRE, BIT7);\
          Sbi(DDRG, BIT3);

#define DATA_OUT(Data)     PORTA = (Data&0xFF); PORTC = ((Data>>8)&0xFF)


TFT LCD 기본 테스트 예제코드
#include "system.h"
#include "serial.h"
#include "tft_lcd.h"

//-----------------------------------------------------------------------------
int main(void)
{
 SystemInit();
 int delay_time = 1;
  
 Led1Init();
 Led1On();

 //Serial Init
 U0_Init(BAUD_115200);
 printf("myAVR Mega128 Test Program1\r\n");
 
 TftLcd_Init();         //Initial LCD 

 while(1)
 {
   Disp_Full_Color(Red);
  Delay(delay_time);
  Disp_Full_Color(Green);
  Delay(delay_time);
  Disp_Full_Color(Blue);
  Delay(delay_time);

  Ver_8Gray_Disp() ;
  Delay(delay_time);
  Hor_8Gray_Disp() ;
  Delay(delay_time);
  Ver_8Color_Disp() ;
  Delay(delay_time);
  Hor_8Color_Disp() ;
  Delay(delay_time); 
 }
}
//-----------------------------------------------------------------------------


테스트 동영상
ATMega128 7.3728Mhz에서 TFT LCD테스트



Posted by nexp

댓글을 달아 주세요