[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밖에 되지 않기 때문인것 같다.

[CANTUS EVM] TFT LCD제어

[MCU]/CANTUS | 2011.04.03 03:04
Posted by nexp
[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테스트 동영상

 



[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테스트와 비교하면 속도차를 느낄 수 있다.

[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 ) 테스트 동영상


ATMega128 TFT LCD(COM26T2844) 테스트

[AVR]/Mega128 | 2009.11.22 05:26
Posted by nexp
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테스트



[LCD-EXP EVM] USB를 통한 TFT LCD 제어 테스트


TFT LCD를 USB를 제어 하기 위한 테스트를 진행해 보았다. USB로 이미지 파일을 전송하거나 내부 플래시 메모리에 저장할 수 있도록 할 계획이다.
PC에서 USB를 통해 제어 하면 MCU에서 처리하기 힘든 이미지 처리를 쉽고 빠르게 진행해서 결과만 전송하면 되므로 다양한 어플리케이션 구현이 가능하다는 장점이 있다. 또한 터치 패드를 이용하면 전자 메모 기능이 쉽게 구현 되지 않을까... 아무튼 PC와 TFT LCD를 연결하여 탁상용 전자 액자를 만들어보면 좋을것 같다.

우선 PC프로그램 제작 했다. 이미지 파일 BMP파일 읽어서 화면에 표시하고 이미지 데이터를 TFT LCD모듈로 USB로 전송하도록 하였다. MCU는 USB기능도 있고 저렴한 STM32로 했다.



테스트 동영상
이미지 파일을 읽어 16비트 모드로 변환후 STM32보드와 USB로 연결하여 이미지 파일을 실시간으로 출력하는 테스트를 해 보았다.





COM26T2844 TFT LCD모듈 테스트 동영상






앞으로 USB긴을 Bulk모드로 바꾸어 속도를 더 빠르게 하고 터치 데이터를 실시간으로 PC에 표시 하도록 해야 할것 같다.



STM32의 USB 관련 코드를 좀더 옵티마이즈 해서 TFT LCD 출력 속도를 높혀 보았다.




[LCD_EXP EVM] 보드 제작 - 확장 TFT LCD 테스트 모듈


[LCD_EXP_EVM] 보드 

다양한 TFT LCD모듈과 다양한 종류의 MCU를 테스트 할 수 있는 확장 테스트 보드를 제작했다. 이더넷 및 MP3모듈을 연동하여 다양한 어플리케이션 테스트 해 볼수 있도록 제작 해 보았다.
지니님 LCD


COM26T2844



MCU모듈
MCU모듈은 표준 모듈인 M-Type, L-Type 형태를 연결할 수 있다. AVR, ARM7, Cortex-M3, DSP등등의 MCU를 적용해 볼 수 있다.




COM26T2844 LCD 및 다양한 LCD모듈을 연결할 수 있도록 표준화 해서 제작 했다.




확장 인터페스 모듈
뒷면에 이더넷 및 MP3모듈을 연결할 수 있도록 하여 이더넷으로 LCD표시하거나 MP3테스트를 할 수 있다.





TFT 테스트 동영상
STM32를 이용하여 FTF LCD에 에니메이션 효과를 나타내 보았다. 속도변화를 주어 최대 출력 속도도 확인할 수 있다.





STM32-LCD EVM 테스트 동영상


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



블로그 이미지

nexp

카테고리

분류 전체보기 (1560)
[MyProject] (48)
[TI] (75)
[NXP] (51)
[ST_MICRO] (129)
[FreeScale] (31)
[MSP430] (140)
[Microchip] (131)
Cortex-M (36)
[ATMEL] (29)
[AnalogDevice] (22)
[Embedded] (2)
ARM9 (24)
[AVR] (80)
[DSP] (111)
[8051] (21)
[MCU] (50)
[INTERFACE] (213)
[AppBoard] (23)
[ROBOT] (25)
[MODULE] (129)
[SENSOR] (41)
[DATA] (21)
[FPGA] (32)
[EVB] (1)
[Proramming] (38)
[MyLog] (6)
[IDEA] (0)
[Utility] (19)
[Book] (24)
취미생활 (4)
[Link] (2)