[DSP]/DSP283352014.01.04 23:00

TMS320F28335 - SSD1963 7" TFT LCD테스트 (SD Card를 이용한 BMP이미지 출력)

TMS320F28335 - SSD1963 7" TFT LCD테스트 (SD Card를 이용한 BMP이미지 출력)




TFT LCD 컨트롤러 SSD1963 테스트 보드를 이용하여 TMS320F28335에서 TFT LCD제어 테스트를 했다.




TMS32F28335 TFT-LCD 테스트 동영상
TMS320F28335를 이용하여 SD Card의 BMP파일을 읽어 TFT-LCD에 표시하는 예제이다.  SPI클럭의 한계로 SD Card 이용시 고속 출력은 무리가 있는듯...




TMS320F28335 TFT-LCD드라이버 코드

extern volatile Uint16 gExinf0Buff[100];

//-----------------------------------------------------------------------------

// TFT LCD Driver

#define _USE_EXINF 1


#define TFT_DRV_HD66791 0

#define TFT_DRV_COM44 0

#define TFT_DRV_AT070 1

#define TFT_DRV_LMS700K 0



#define LCD_LAT_BIT BIT2 //-> GPIO34

#define LCD_LAT_PORT PORTB


#define LCD_LAT_ON() //Sbi(LCD_LAT_PORT, LCD_LAT_BIT);NOP();

#define LCD_LAT_OFF() //Cbi(LCD_LAT_PORT, LCD_LAT_BIT);NOP();



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


#define LCD_EN_BIT BIT4 //GP36

#define LCD_EN_PORT GPIOB

#define LCD_ENABLE() //cbi(LCD_EN_PORT, LCD_EN_BIT);

#define LCD_DISABLE() //sbi(LCD_EN_PORT, LCD_EN_BIT);


#define LCD_RST_BIT BIT25

#define LCD_RST_PORT GPIOA

#define LCD_RST_ON() sbi(LCD_RST_PORT, LCD_RST_BIT);

#define LCD_RST_OFF() cbi(LCD_RST_PORT, LCD_RST_BIT);



#define _LCD_CMD_OUT(Data) gExinf0Buff[0] = Data

#define _LCD_DAT_OUT(Data) gExinf0Buff[1] = Data



#define TFTGpioInit() EALLOW;\

GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 0;\

GpioCtrlRegs.GPADIR.bit.GPIO25 = 1;\

GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 0;\

GpioCtrlRegs.GPADIR.bit.GPIO24 = 1;\

EDIS;

//-----------------------------------------------------------------------------



TMS320F28335 7" TFT-LCD 출력 테스트










Posted by nexp

댓글을 달아 주세요

[MODULE]/LCD_TFT2013.11.10 23:30

SSD1963 EVM - 7" TFT LCD 테스트 보드 제작

SSD1963 EVM - 7" TFT LCD 테스트 보드 제작




TFT LCD 컨트롤러 SSD1963 테스트 보드를 제작 했다.

컨트롤러를 이용하여 테스트 할 수 있는 커넥터와 LCD만 연결하여 내장 TFT LCD컨트롤러로 제어 할 수 있는 커넥터도 함깨 내장하였다.







SSD1963 TFT LCD 컨트롤러 사용할 경우




TFT LCD 만 사용할 경우

STM32F429나 ADStar와 같이 TFT LCD컨트롤러를 내장하고 있는 MCU의 경우 SSD1963컨트롤러 없이 바로 LCD에 연결해서 TFT LCD테스트가 가능하다.










Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP430_FRAM2013.05.25 23:30

MSP430FR5739 EVM - 2.8" TFT LCD 테스트

 MSP430FR5739 EVM - 2.8" TFT LCD 테스트

 

 

 

MSP430FR5739를 이용하여 좀더 큰 2.8" TFT LCD 제어를 테스트 해보았다.

SM-Type, M-Type에서 간단히 TFT LCD를 연결할 수 있는 [LCD_IF_P EVM] 을 이용하여 테스트 했다.

 

 

 

 

MSP430FR5739 TFT LCD제어 핀맵

 

 

 

 

 

MSP430FR5739 TFT LCD 제어 드라이버 코드

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

#define LCD_LAT_BIT      BIT2
#define LCD_LAT_PORT     PJOUT
#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      BIT0
#define LCD_EN_PORT      PJOUT
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      BIT2
#define LCD_RST_PORT     //PORT7
#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      BIT1
#define LCD_RS_PORT      P4OUT
#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      BIT0
#define LCD_WR_PORT      P4OUT
#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      BIT1
#define LCD_BL_PORT      PJOUT
#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)    PORT1 = (Data>>8);\
                                     LCD_DATA_LATCH();\
                                     PORT1 = (Data&0xFF);

 

#define TFTGpioInit()     P1DIR=0xFF;\
                                        Sbi(P4DIR, BIT1|BIT0);\
                                        Sbi(PJDIR, BIT0|BIT1|BIT2|BIT3)   
//-----------------------------------------------------------------------------

Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP430_FRAM2013.05.18 23:00

MSP430FR5739 EVM - 1.5" I1511 TFT LCD 테스트

 MSP430FR5739 EVM - 1.5" I1511 TFT LCD 테스트

 

 

MSP430FR5739 를 이용하여 1.5" TFT LCD 테스트를 했다.

확장 테스트 보드는 XMega32 EVM 보드를 이용하였다.

 

 

 

 

 

 I1511 TFT LCD  제어 드라이버 코드

SD CARD의 BMP파읽을 읽어 TFT LCD에 출력하는 예제이다.

 

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

#define LCD_LAT_BIT      BIT0
#define LCD_LAT_PORT     PORT1
#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      PJOUT
#define LCD_ENABLE()     Cbi(LCD_EN_PORT, LCD_EN_BIT)
#define LCD_DISABLE()     Sbi(LCD_EN_PORT, LCD_EN_BIT)

#define LCD_RST_BIT      BIT2
#define LCD_RST_PORT     //PORT7
#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      BIT2
#define LCD_RS_PORT      PJOUT
#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      PJOUT
#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      BIT0
#define LCD_BL_PORT      PJOUT
#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)    PORT1 = (Data>>8);\
                                     LCD_DATA_LATCH();\
                                     PORT1 = Data;

 

#define TFTGpioInit()     P1DIR=0xFF;\
                                        Sbi(P4DIR, BIT0|BIT1);\
                                        Sbi(PJDIR, BIT0|BIT1|BIT2|BIT3)   
//-----------------------------------------------------------------------------

Posted by nexp

댓글을 달아 주세요

[MCU]/adStar2013.03.24 00:52

adStar - SD Card 이용한 7" TFT LCD 테스트

adStar - SD Card 이용한 7" TFT LCD 테스트

 

 

adStar의 자장 큰 장점으로 MCU내에 TFT LCD 컨트롤러가 내장되어 있는 것이다. 때문에 7" TFT LCD도 쉽고 저렴하게 제어 할 수 있다.

 

 

adStar TFT LCD제어 초기화 코드

PORT6, PORT7, PORT8 이 TFT LCD데이터 포트 이므로 기능 설정 레지스터를 LCD 로 설정해 주면된다.

주의 사항으로 JTAG핀과 공통으로 사용하므로 개발할때 불편함이 있다. MUX칩으로 스위칭 할수 있도록 하면 좀더 쉽게 개발할수 있다.

void InitLcd()
{
 Cbi(*R_PAF5, 0xFFC0);//VSYNC,HSYNC,DISP_EN,CRTC_CLK_OUT
 BCKLIGHT_IO_INIT();
 BCKLIGHT_OFF();

 

 *R_PAF6 = 0; //LCD R
 *R_PAF7 = 0; //LCD G
 *R_PAF8 = 0; //LCD B
 
 crtc_clock_init(); 
}

 

 

LCD 종류에 따라 모드 설정이 필요한데 setscreen() 함수에서 설정 가능하다.

초기에 정상동작을 하지 않아 약간의 수정을 해 주니 잘 동작한다.

void setscreen(SCREENRES res,U32 scmode)
{
 switch(res)
 {
 case SCREEN_480x272:
  setscreenex(480,272,scmode,0x0000020D,0x0002002B,0x002D020D ,0x0000011E ,0x0002000C ,0x000E011E );
  break;
 case SCREEN_640x480:
  setscreenex(640,480,scmode,0x00000320,0x00130073,0x00A00320 ,0x0000020D ,0x0007000D ,0x002B020B );
  break;
 case SCREEN_800x480:
  //setscreenex(800,480,scmode,1000,(3<<16)|0,(24<<16)|1000 ,530 ,(23<<16)|2 ,(13<<16)|530 );
  break;
 case SCREEN_800x600:
  setscreenex(800,600,scmode,0x00000420,0x002300b0,0x01000420 ,0x00000274 ,0x0004000a ,0x001a0272 );
  break;
 default:
  debugstring("invalid screen size\r\n");
  return;
 }
}


void setscreenex(U32 width,U32 height,U32 scmode,U32 ht,U32 hs, U32 ha, U32 vt, U32 vs, U32 va)
{
 *R_CRTHT  = ht; //Horizontal Active와 Blank구간을 포함한 Horizontal Total Scan Value
 *R_CRTHS  = hs; //Horizontal Sync 구간의 Start(End) value
 *R_CRTHA  = ha; //Horizontal Active 구간의 Start(End) value
 *R_CRTVT  = vt; //Vertical Active와 blank 구간을 포함한 Vertical Total scan value
 *R_CRTVS  = vs; //Vertical Sync 구간의 Start(End) value
 *R_CRTVA  = va; //Vertical Active구간의 Start(End) value
 screen_w= width;
 screen_h = height;
 
 U32 conval=0;
 debugprintf(" CRTC %d x %d Setting Done\r\n",width,height);
 if(scmode&SCREENMODE_RGB888)
 {
  debugstring("RGB888 Mode\r\n");
  screen_bpp = 32;
  conval |= (1<<13);
 }
 else
 {
  debugstring("RGB565 Mode\r\n");
  screen_bpp = 16;
  conval |= (1<<12);
 }
 conval |= (1<<4);//line pitch not align 512,1024
 *R_CRTWIDTH = screen_w;
 *R_CRTCON = conval;
 drawsetclipwindow(0,0,screen_w,screen_h);
 set_interrupt(INTNUM_FRAMESYNC,framesync_isr);
 enable_interrupt(INTNUM_FRAMESYNC,FALSE);
}

 

 

 

asStar 7" TFT LCD 테스트 동영상

sdCard를 이용하여 7" TFT LCD에 BMP영상을 출력핟록 하고 있다. jpg파일도 가능하지만 JPG->BMP 변환 속도가 느려 BMP보다는 출력속도가 느린것 같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요