Intelligent serial 4.3 TFT LCD Module JUTF43 S/W User Guide
1 JUTF43... 3 2 부팅환경... 4 2.1 부팅환경설정... 4 2.1.1 Normal mode... 4 2.1.2 USB Mass-Storage mode... 4 2.1.3 Firmware Update mode... 5 2.2 Splash Image 설정... 5 3 HOST interface... 5 3.1 Serial 설정... 5 3.2 UART baudrate 변경방법... 5 4 Image format... 6 5 System Command... 6 5.1 Connect Check s,0 (0x73, 0x30)... 6 5.2 Double buffer mode s,3 (0x73, 0x33)... 7 5.3 Single buffer mode s,4 (0x73, 0x34)... 7 5.4 LCD brightness s,5 (0x73, 0x35)... 8 5.5 Screen flip s,6 (0x73, 0x36)... 9 5.6 USB 이동식저장장치 s,7 (0x73, 0x37)... 9 5.7 System Reset s,9 (0x73, 0x39)... 10 6 Primitive Command... 11 6.1 Set color l,0 (0x6c, 0x30)... 11 6.2 Draw Line l,1 (0x63, 0x31)... 11 6.3 Draw Rectangle l,2 (0x6c, 0x32)... 12 1
6.4 Draw Gradient Rectangle l,3 (0x6c, 0x33)... 13 6.5 Draw Rounded Rectangle l,4 (0x6c, 0x34)... 13 6.6 Draw Thick Line l,5 (0x6c, 0x35)... 14 6.7 Draw Circle l,6 (0x6c, 0x36)... 15 6.8 Draw Ellipse l,7 (0x6c, 0x37)... 16 7 Image Command... 17 7.1 Image Load i,1 (0x69, 0x31)... 17 7.2 Draw Image i,2 (0x69, 0x32)... 18 7.3 Draw Image Rectangle i,3 (0x69, 0x33)... 19 7.4 Draw Image Scale i,4 (0x69, 0x34)... 20 7.5 Draw Image Scale Rectangle I,5 (0x69, 0x35)... 21 7.6 Image Release I,6 (0x69, 0x36)... 22 8 Text-Out command... 22 8.1 Text out f,0 (0x66,0x30)... 23 8.2 Text Color f,1 (0x66,0x31)... 23 9 Touch InPUT... 24 9.1 Touch Input Packet... 24 10 script command... 25 10.1 Run script c,0 (0x74,0x30)... 25 2
1. JUTF43 JUTF43 은 LCD 를직접구동할수없는 Host MCU 가 UART 통신만으로 LCD 를구동할수있도록개발된 4.3 LCD 모듈이다. Feature System Double/Single Buffer Mode USB Mass Storage LCD Backlight 제어 Primitives Line, Rectangle, Rounded Rectangle, Circle, Ellipse, etc Image draw BMP, JPG, TGA, PNG 확대 / 축소지원 Pre-define script 지원 Nand 에저장된명령어로이루어진 script 파일을 UART 를통해서실행 통신부하감소 3
2. 부팅환경 2.1 부팅환경설정 JUTF43 는 3 가지부팅모드를제공한다. Normal mode, USB Mass-Storage mode, Firmware Update Mode 가그것이다. 부팅모드선택의보드의 SW1 스위치를이용하여선택할수있다. 전원인가전에먼저선택하고전원을인가해야한다. 2.1.1 Normal mode 일반적인 serial 통신제어모드이다. 부팅이후 NAND 에들어있는최상위폴더에 config.txt 파일이존재한다면파일내용에따른환경설정을하고외부입력을기다린다. config.txt 의환경설정포맷은다음과같다. KEYWORD = VALUE 현재지원가능한 KEYWORD 는다음과같다. KEYWORD baudrate packetdebug VALUE 9600,19200,38400,57600,115200 중하나 Host 의 command 를확인할수있도록 Host 에서보내는 command 를 debug channel 로출력하고실행한다. 예를들어서 UART baudrate 를변경하고한다면 buadrate = 115200 제약사항 : 반드시한줄에하나의 KEYWORD 와 VALUE 만이존재해야한다. 2.1.2 USB Mass-Storage mode 내부 NAND Flash 가 USB 저장장치로구동된다. 이때 USB cable 을 JUTF43 과 PC 를연결하게되면 PC 에서 USB 이동식저장장치로인식되어 NAND flash 에원하는파일을넣거나지울수있다. 포맷을하고자할경우반드시 FAT16 또는 FAT32 으로만해야한다. serial command 를통해서도이모드로진입할수있다. (system command 참조 ) 4
NAND 의내용이변경된경우반드시재부팅해야한다. 2.1.3 Firmware Update mode NAND 에새로운버전의 firmware 파일 ( _update_.bin ) 이있을경우내부 firmware 가 update 되고나서자동재부팅된다. 한번 update 가되고나면 _update_.bin 파일은자동삭제된다. 2.2 Splash Image 설정 최초부팅시화면에출력할이미지는 NAND 에저장되어있는 boot.bmp 혹은 boot.png 라는파일로지정되어있다. boot.bmp 파일이있는경우 boot.bmp 파일을화면에출력하고, 없는경우에 boot.png 화면에출력한다 3. HOST interface 3.1 Serial 설정 기본 serial data format 은아래와같다. 115200 bps, Data bit 8bits, No parity, 1 stop bit, flow control-non 3.2 UART baudrate 변경방법 USB 이동식저장장치를부팅후 NAND 에들어있는 config.txt 파일을수정하여기본 baudrate 를변경할수있다. config.txt 파일에 baudrate 항목을찾아서원하는값으로변경하면된다. 만약파일이없거나해당항목이없을경우새로만들어서넣으면된다.. baudrate=115200 변경이후변경된값을적용하기위해서는반드시재부팅이필요하다. 4. Image format JUTF43 이가지원하는 Image 는다음과같다. BMP( 24, 8 bpp), JPG, PNG, TGA 5
이미지출력시간 (Image draw command) 이미지크기 480 x 272 64 x 64 ( 투명채널없는경우 ) 64 x 64 ( 투명채널있는경우 ) 소요시간 10msec 3msec 4msec 5. System Command Command Packet format 은아래와같이이루어져있다. Start of Packet( $ ) Command body End of Packet( # ) SOP(Start of Packet) 은 ascii $ (0x24) 이며 command 의시작을나타낸다. EOP(Start of Packet) 은 ascii # (0x23) 이며 command 의끝을나타낸다. Command body 는명령어 2byte 와 argument 들로이루어져있다. command(2byte), ARG0, ARG1, ARG2, ARGn argument 는문자열 format 이다. 예를들어서라인그리기를명령을실행하기위해서시작좌표 100,100 끝좌표 200,200 를보낼경우문자열 100,100,200,200 이된다. Host 의프로그램은아래와같은형태로작성할수있다. void draw_line(int x, int y, int endx, int endy) { printf( $l1,%d,%d,%d,%d#,x,y,endx,endy);//uart Tx function } 5.1 Connect Check s,0 (0x73, 0x30) JUTF43 과연결상태를확인할수있다. 만약이명령의응답이없다면 JUTF43 과연결이되어있지않을경우이다. 6
인자 없음 printf( $s,0# );//UART Tx function 5.2 Double buffer mode s,3 (0x73, 0x33) Draw Mode 를 double buffer mode 로설정한다. 이명령이후의모든 LCD 그리기명령는 back frame buffer 에적용되며 back frame buffer 를 LCD 화면으로출력하는즉 front frame buffer 와 back frame buffer 를전환하는명령인 flip 명령을이용하면된다. single buffer mode 의경우화면의내용이수정될때수정되는모습이보일수있다. 하지만 double buffer mode 의경우화면전체를항상새로만든이후화면에출력한다. 인자없음 printf( $s,3# );//UART Tx function 5.3 Single buffer mode s,4 (0x73, 0x34) 7
이명령이후의모든 LCD 그리기명령은 font frame buffer 에적용되며그리는즉시 LCD 화면에출력되는 mode 이다. 하지만큰 Image 의경우 LCD 화면에그려지는모습이보일수도있다. 인자 없음 printf( $s,4# );//UART Tx function 5.4 LCD brightness s,5 (0x73, 0x35) Backlight 발기를조절하는명령이다. 0 은가장어두운수치이며 99 가가장밝은상태이다. 인자 1 : value, 0 ~ 99 printf( $s,5,%d#,value);//uart Tx function 8
5.5 Screen flip s,6 (0x73, 0x36) Double buffer mode 가설정된상태에서 Front Frame Buffer 와 Back Frame buffer 를상호전환하는명령이다. 즉 LCD 출력을 back frame buffer 의내용으로전환하게된다. 인자없음 printf( $s,6# );//UART Tx function 5.6 USB 이동식저장장치 s,7 (0x73, 0x37) JUTF43 을 USB 이동식저장장치로구동시킨다. 이때 USB 를 PC 와연결할경우 JUTF43 장치가이동식저장장치로인식되어 JUTF43 의 NAND 에파일을읽거나쓰거나지울수있게된다. NAND 의파일을변경한이후는반드시재부팅해야한다. 인자없음 9
printf( $s,7# );//UART Tx function 5.7 System Reset s,9 (0x73, 0x39) JUTF43 을재부팅시킨다. NAND 의파일을변경한이후는반드시재부팅해야한다. 인자없음 printf( $s,9# );//UART Tx function 10
6. PRIMITIVE COMMAND 6.1 Set color 1.0 (0x6c, 0x30) Draw line 과같이모든그리기명령에사용되는 color 값을설정하는명령이다. 인자 Red Value, Green Value, Blue Value printf( $l,0,%d,%d,%d#,red,green,blue);//uart Tx function 6.2 Draw Line l,1 (0x63, 0x31) 선그리기를실행한다. 인자 x, y, endx, endy x, y 시작좌표 11
endx, endy 끝좌표 printf( $l,1,%d,%d,%d,%d#,x,y,endx,endy);//uart Tx function 6.3 Draw Rectangle l,2 (0x6c, 0x32) 사각형그리기를실행한다. 인자 x, y, w, h, fill x, y 시작좌표 w 가로크기 h 세로크기 fill 1 이면내부를이전에설정된색으로채운다. 0 이면채우지않는다. printf( $l,2,%d,%d,%d,%d,%d#,x,y,w,h,fill==0?0:1);//uart Tx function 6.4 Draw Gradient Rectangle l,3 (0x6c, 0x33) 12
Gradient 사각형그리기를실행한다. 인자 x, y, w, h, sr, sg, sb, er, eg, eb x, y 시작좌표 w 가로크기 h 세로크기 sr, sg, sb 시작 RGB 값 er, eg, eb 끝 RGB 값 printf( $l,3,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d #,x,y,w,h,sr,sg,sb,er,eg,eb);//uart Tx function 6.5 Draw Rounded Rectangle l,4 (0x6c, 0x34) 모서리가둥근사각형그리기를실행한다. 인자 x, y, w,, h, rad, fill x,y 시작좌표 w 가로크기 13
h 세로크기 rad 둥글게처리될모서리의가로세로크기 fill 1 이면내부를이전에설정된색으로채운다. 0 이면채우지않는다. printf( $l,4,%d,%d,%d,%d,%d,%d#,x,y,w,h,rad,fill==0?0:1); 6.6 Draw Thick Line l,5 (0x6c, 0x35) 두꺼운선그리기를실행한다. 인자 x, y, endx, endy, thick x, y 시작좌표 endx, endy 끝좌표 thick 선두께 printf( $l,5,%d,%d,%d,%d,%d#,x,y,endx,endy,thick); 14
6.7 Draw Circle l,6 (0x6c, 0x36) 원그리기를실행한다. 인자 x, y, r, fill x, y 원의중심좌표 r 원의반지름 fill 1 이면내부를이전에설정된색으로채운다. 0 이면채우지않는다. printf( $l,6,%d,%d,%d,%d#,x,y,r,fill==0?0:1); 6.8 Draw Ellipse l,7 (0x6c, 0x37) 타원그리기를실행한다. 15
인자 x, y, rx, ry, fill x, y 원의중심좌표 rx 원의가로축반지름 ry 원의세로축반지름 fill 1 이면내부를이전에설정된색으로채운다. 0 이면채우지않는다. printf( $l,7,%d,%d,%d,%d,%d#,x,y,rx,ry,fill==0?0:1); 16
7. IMAGE COMMAND 7.1 Image Load i,1 (0x69, 0x31) NAND 에저장되어있는 Image 파일을그래픽메모리의특정 index 에 load 한다. Index 는 0 ~ 1023 중하나이며실제사용할수있는메모리의양은 Image 의크기에따라서달라진다. Image 로사용할수있는전체용량은약 14Mbyte 정도이다. 만약 480 x 272 의크기의 Image 라면총 48 개의 Image 를로딩할수있다 12Mbyte / (480 x 272 x 2(bytes/pixel) = 48 이미 load 되어있는 index 일경우기존 Image 를제거되고새로운 Image 가 load 된다. 인자 index,fname Index: 로딩할위치 fname: NAND 에저장되어있는파일이름 printf( $i,1,%d,%s#,index,fname); 17
7.2 Draw Image i,2 (0x69, 0x32) 그래픽메모리에 load 된특정 Image 를화면에출력한다. 인자 index, x, y Index: Image 번호 x, y: Image 를출력할시작좌표 printf( $i,2,%d,%d,%d#,index x,y); LCD (x,y) Source 18
7.3 Draw Image Rectangle i,3 (0x69, 0x33) 그래픽메모리에 load 된특정 Image 의일부분만화면에출력한다. 인자 index, dx, dy, sx, sy, w, h Index: Image 번호 dx, dy: 화면의시작좌표 sx, sy: Image 시작좌표 w: 가로크기 h: 세로크기 printf( $i,3,%d,%d,%d,%d,%d,%d,%d#,index,x,y,sx,sy,w,h); LCD (sx,sy) (dx,dy) Source 19
7.4 Draw Image Scale i,4 (0x69, 0x34) 그래픽메모리에 load 된 Image 축소하여출력한다. 의전체영역을특정화면영역에확대및 인자 index, x, y, w, h Index: Image 번호 x, y: 화면의시작좌표 w: 화면의가로크기 h: 화면의세로크기 printf( $i,4,%d,%d,%d,%d,%d#,index,x,y,w,h); LCD (x,y) w Source 20
dh 7.5 Draw Image Scale Rectangle i,5 (0x69, 0x35) 그래픽메모리에 load 된 Image 의일부분만화면의특정화면영역에확대및축소하여출력한다. 인자 index, dx, dy, dw, dh, sx, sy, sw, sh Index: Image 번호 dx, dy: 화면의시작좌표 dw: 화면의가로크기 dh: 화면의세로크기 sx, sy: Image 시작좌표 sw: Image 의가로크기 sh: Image 의세로크기 printf( $i,5,%d,%d,%d,%d,%d,%d,%d,%d,%d#,index,dx,dy,dw,dh,sx,sy,sw,sh); LCD (sx,sy) (dx,dy) Source 21
7.6 Image Release i,6 (0x69, 0x36) 그래픽메모리에 load 된 Image 를제거한다. Image 가제거되면서추가적으로사용할수있는메모리가확보된다. 인자 index Index: Image 번호 printf( $i,6,%d#,index); 8. TEXT-OUT COMMAND 8.1 Text out f,0 (0x66, 0x30) 특정좌표에문자열을출력한다. 영문문자의크기는 8x16 pixel 이며한글은 ( 조합형 ) 16x16 pixel 이다. 22
인자 string, x, y string 출력할문자열, 문자열에인자구분문자인쉼표 (,) 가존재해서는안된다. x, y 시작좌표 printf( $f,0,%s,%d,%d#,string,x,y); 8.2 Text Color f,1 (0x66, 0x31) 폰트색상을변경한다. 인자 red, green blue red 빨간색값 0 ~ 255 green 녹색값 0 ~ 255 blue 파란색값 0 ~ 255 23
printf( $f,1,%d,%d,%d#,red,green,blue); 9. TOUCH INPUT LCD 의 touch screen 의입력값이존재할때마다 UART 를통해서해당값이넘어온다. touch screen 을누른경우좌표값이전송된다. touch screen 을누르고있는경우에좌표값이동일한경우재전송되지않고, 좌표값이변경된경우주기적으로전송된다. 9.1 TOUCH INPUT PACKET 넘어오는좌표값의포맷은다음과같다. $ t ' 상태 ' 'X - 좌표 ' Y 좌표 ' # 상태 1 or 0 1 : 터치를누르고있는경우 0 : 터치를누르고있다뗀경우 UART 로들어오는값을보면다음과같다 $t,1,100,200# $t,1,100,202# $t,1,100,205# $t,0,0,0# 터치좌표 100, 200 을누르고있음터치좌표 100, 202 을누르고있음터치좌표 100, 205 을누르고있음터치에서손을뗀경우 24
10. SCRIPT COMMAND 명령어들로이루어진 script 파일을 NAND 에저장해놓고 command 를통해서특정 script 파일을실행할수있다. 자주사용되는명령어들을하나의파일로묶어서실행함으로 command 전송시간을줄임과동시에 Host 의프로그램사이즈를줄일수있는장점이있다. script 파일은 SOP( $ Start of Packet) 와 EOP( # End of Packet) 을제거하고한줄에하나의 command 로만이루어진파일이어야한다. 잘못된예 $ ㅣ,0,255,255,255# ㅣ,0,255,255,255, ㅣ,0,255,255,0, ㅣ,0,255,0255 10.1 Run Script c,0 (0x74,0x30) script 파일을실행한다. 인자 filename filename NAND 에들어있는 script 파일이름, printf( $c,0,%s#,filename); 25