본문 바로가기

[MCU]/adStar

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보다는 출력속도가 느린것 같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형