##// END OF EJS Templates
Sync, Still trying to solve 8bits ILI9328 read problems.
jeandet -
r67:604c231d911c dev_alexis
parent child
Show More
@@ -59,8 +59,8 LCD_t lcd0={
59 59
60 60 terminal_t terminal0;
61 61
62 volatile uint8_t* lcd0_CMD=(volatile uint8_t*)0x60000000;
63 volatile uint8_t* lcd0_DATA=(volatile uint8_t*)0x61FFFFF0;
62 volatile int8_t* lcd0_CMD=(volatile int8_t*)0x60000000;
63 volatile int8_t* lcd0_DATA=(volatile int8_t*)0x61FFFFF0;
64 64
65 65 float VREF0 =(float)3.3;
66 66 volatile vs10XXDev audioCodec0;
@@ -175,33 +175,20 int bsp_FSMC_init()
175 175 /*-- FSMC Configuration ------------------------------------------------------*/
176 176 /*----------------------- SRAM Bank 3 ----------------------------------------*/
177 177 /* FSMC_Bank1_NORSRAM4 configuration */
178 p.FSMC_AddressSetupTime = 0xf;
179 p.FSMC_AddressHoldTime = 0xf;
178 p.FSMC_AddressSetupTime = 3;
179 p.FSMC_AddressHoldTime = 3;
180 180 //ili9328 -> data setup time > 10ns
181 p.FSMC_DataSetupTime = 0xf;
181 p.FSMC_DataSetupTime = 1;
182 182 if(getCpuFreq()>100*1000*1000)
183 p.FSMC_DataSetupTime = 0xf;// 11;
184 p.FSMC_BusTurnAroundDuration = 0xf;
183 p.FSMC_DataSetupTime = 2;// 11;
184 p.FSMC_BusTurnAroundDuration = 0;
185 185 p.FSMC_CLKDivision = 0;
186 p.FSMC_DataLatency = 0xf;
186 p.FSMC_DataLatency = 0;
187 187 //ili9328 -> data hold time > 15ns
188 188 if(getCpuFreq()>66*1000*1000)
189 p.FSMC_DataLatency = 0xf;
189 p.FSMC_DataLatency = 0;
190 190 p.FSMC_AccessMode = FSMC_AccessMode_A;
191 191
192 readtim.FSMC_AddressSetupTime = 0xf;
193 readtim.FSMC_AddressHoldTime = 0xf;
194 //p.FSMC_DataSetupTime = 9;
195 readtim.FSMC_DataSetupTime = 0xf ;// 11;
196 if(getCpuFreq()>100*1000*1000)
197 readtim.FSMC_DataSetupTime = 0xf;// 11;
198 readtim.FSMC_BusTurnAroundDuration = 0xf;
199 readtim.FSMC_CLKDivision = 0;
200 readtim.FSMC_DataLatency = 0xf;
201 if(getCpuFreq()>66*1000*1000)
202 readtim.FSMC_DataLatency = 0xf;
203 readtim.FSMC_AccessMode = FSMC_AccessMode_A;
204
205 192
206 193 FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
207 194 FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
@@ -216,7 +203,7 int bsp_FSMC_init()
216 203 FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
217 204 FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
218 205 FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
219 FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readtim;
206 FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
220 207 FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
221 208
222 209 FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
@@ -407,10 +394,6 void bspsdcardselect(char YESNO)
407 394 void bsp_lcd0_write_reg(uint32_t reg,uint32_t data)
408 395 {
409 396 uint8_t* pt8 = (uint8_t*)(void*)(&reg);
410 *lcd0_CMD=(uint8_t)0;
411 *lcd0_CMD=(uint8_t)0;
412 *lcd0_CMD=(uint8_t)0;
413 *lcd0_CMD=(uint8_t)0;
414 397 #if __BYTE_ORDER__==__ORDER_BIG_ENDIAN__
415 398 *lcd0_CMD=pt8[3];
416 399 *lcd0_CMD=pt8[2];
@@ -418,6 +401,7 void bsp_lcd0_write_reg(uint32_t reg,uin
418 401 *lcd0_DATA=pt8[3];
419 402 *lcd0_DATA=pt8[2];
420 403 #else
404
421 405 *lcd0_CMD=pt8[1];
422 406 *lcd0_CMD=pt8[0];
423 407 pt8 = (uint8_t*)(void*)&data;
@@ -431,10 +415,7 uint32_t bsp_lcd0_read_reg(uint32_t reg)
431 415 {
432 416 uint8_t* pt8 = (uint8_t*)(void*)(&reg);
433 417 uint32_t DATA=0;
434 *lcd0_CMD=(uint8_t)0;
435 *lcd0_CMD=(uint8_t)0;
436 *lcd0_CMD=(uint8_t)0;
437 *lcd0_CMD=(uint8_t)0;
418
438 419 #if __BYTE_ORDER__==__ORDER_BIG_ENDIAN__
439 420 *lcd0_CMD=pt8[3];
440 421 *lcd0_CMD=pt8[2];
@@ -457,10 +438,6 void bsp_lcd0_writeGRAM(void* buffer,uin
457 438 {
458 439 uint32_t reg =ILI9328_REGISTER_WRITEDATATOGRAM;
459 440 uint8_t* pt8 = (uint8_t*)(void*)(&reg);
460 *lcd0_CMD=(uint8_t)0;
461 *lcd0_CMD=(uint8_t)0;
462 *lcd0_CMD=(uint8_t)0;
463 *lcd0_CMD=(uint8_t)0;
464 441 #if __BYTE_ORDER__==__ORDER_BIG_ENDIAN__
465 442 *lcd0_CMD=pt8[3];
466 443 *lcd0_CMD=pt8[2];
@@ -486,13 +463,9 void bsp_lcd0_writeGRAM(void* buffer,uin
486 463
487 464 void bsp_lcd0_readGRAM(void* buffer,uint32_t count)
488 465 {
489 uint32_t reg =ILI9328_REGISTER_WRITEDATATOGRAM;
490 volatile uint8_t* pt8 = (uint8_t*)(void*)®
491 *lcd0_CMD=(uint8_t)0;
492 *lcd0_CMD=(uint8_t)0;
493 *lcd0_CMD=(uint8_t)0;
494 *lcd0_CMD=(uint8_t)0;
495 #if __BYTE_ORDER__==__ORDER_BIG_ENDIAN__
466 //uint32_t reg =ILI9328_REGISTER_WRITEDATATOGRAM;
467 volatile uint8_t* pt8 ;// = (uint8_t*)(void*)®
468 /* #if __BYTE_ORDER__==__ORDER_BIG_ENDIAN__
496 469 *lcd0_CMD=pt8[3];
497 470 *lcd0_CMD=pt8[2];
498 471 pt8 = (uint8_t*)(void*)buffer;
@@ -502,13 +475,17 void bsp_lcd0_readGRAM(void* buffer,uint
502 475 pt8[2*i]=*lcd0_DATA;
503 476 }
504 477 #else
478 *lcd0_CMD=(uint8_t)0;
479 *lcd0_CMD=(uint8_t)0;
480 *lcd0_CMD=(uint8_t)0;
481 *lcd0_CMD=(uint8_t)0;
505 482 *lcd0_CMD=pt8[1];
506 483 *lcd0_CMD=pt8[0];
507 pt8 = (uint8_t*)buffer;
484 pt8 = (uint8_t*)buffer;*/
508 485 /*
509 * x dummy reads Cf ili9328 datasheet p79!
510 */
511 pt8[0]=*lcd0_DATA;
486 * x dummy reads Cf ili9328 datasheet p79!
487 */
488 /* pt8[0]=*lcd0_DATA;
512 489 pt8[1]=*lcd0_DATA;
513 490
514 491 for(int i=0;i<(int)count;i++)
@@ -517,10 +494,21 void bsp_lcd0_readGRAM(void* buffer,uint
517 494 pt8[2*i]=*lcd0_DATA;
518 495 pt8[(2*i) +1]=*lcd0_DATA;
519 496 pt8[2*i]=*lcd0_DATA;
520 // pt8[(2*i) +1]=(uint8_t)0;
521 // pt8[(2*i)]=(uint8_t)0;
522 497 }
523 #endif
498 #endif*/
499
500 *lcd0_CMD=(uint8_t)0;
501 *lcd0_CMD=(uint8_t)0x22;
502 pt8 = (uint8_t*)buffer;
503 pt8[1]=*lcd0_DATA;
504 pt8[0]=*lcd0_DATA;
505 for(int i=0;i<(int)count;i++)
506 {
507 //pt8[(2*i) +1]=0;
508 //pt8[2*i]=0;
509 pt8[(2*i)+1]= *lcd0_DATA;
510 pt8[2*i]= *lcd0_DATA;
511 }
524 512 }
525 513
526 514 void bsp_GTerm_init()
@@ -528,7 +516,7 void bsp_GTerm_init()
528 516 if(__opnfiles__[1]==NULL)
529 517 {
530 518 streamdevice* fd1 = (streamdevice*)malloc(sizeof(streamdevice));
531 terminal_init(&terminal0 ,&lcd0,&ComicSansMS_8,fd1);
519 terminal_init(&terminal0 ,&lcd0,&ComicSansMS_18,fd1);
532 520 __opnfiles__[1] = fd1;
533 521 }
534 522 else
@@ -348,9 +348,7 void bsp_GTerm_init()
348 348 {
349 349 if(__opnfiles__[1]==NULL)
350 350 {
351 //uart_t* uart1 = (uart_t*)malloc(sizeof(uart_t));
352 351 streamdevice* fd1 = (streamdevice*)malloc(sizeof(streamdevice));
353
354 352 ili9328paintFilRect(&lcd0,0,0,240,320,0x7FFF,5,0);
355 353 terminal_init(&terminal0,&lcd0,&ComicSansMS_8,fd1);
356 354 __opnfiles__[1] = fd1;
@@ -6,7 +6,7 UCMODEL=stm32f4
6 6 BSP = OPLAYER
7 7 #BSP = STM32F4Discovery-ILI9328-8bits
8 8
9 DEFINES += CPUFREQ=50000000
9 DEFINES += CPUFREQ=100000000
10 10
11 11
12 12 SOURCES += \
@@ -21,6 +21,8 extern streamdevice* __opnfiles__[];
21 21 extern void test_Block_Move(LCD_t* LCD,int x,int y,int w,int h,int color);
22 22 extern void test_all_colors(LCD_t* LCD);
23 23 extern void test_small_lines(LCD_t* LCD);
24 extern void test_lines(LCD_t* LCD);
25 extern void test_address(LCD_t* LCD);
24 26 void test_uniform_rw(LCD_t* LCD);
25 27 char buffer[512];
26 28
@@ -142,12 +144,26 int main()
142 144 delay_100us(30000);
143 145 int i=0;
144 146 int color=0;
145 // test_all_colors(&lcd0);
146 test_small_lines(&lcd0);
147 test_uniform_rw(&lcd0);
147 // test_all_colors(&lcd0);
148 // test_small_lines(&lcd0);
149 // test_uniform_rw(&lcd0);
148 150
149 151 printf("LCD ID REG = 0x%X\n\r",lcd0.interface->readreg(ILI9328_REGISTER_DRIVERCODEREAD));
150 while(1);
152 printf("LCD ENTRY MODE REG = 0x%X\n\r",lcd0.interface->readreg(ILI9328_REGISTER_ENTRYMODE));
153 uint16_t test[16];
154 for(int i=0;i<16;i++)
155 {
156 test[i]=0xF00F;
157 }
158 lcd0.paint(&lcd0,test,10,100,4,4);
159 lcd0.getPix(&lcd0,test,10,100,4,4);
160 for(int i=0;i<16;i++)
161 {
162 printf("@%d=0x%X\n",i,test[i]);
163 }
164 // test_lines(&lcd0);
165
166 while(1)test_address(&lcd0);
151 167 for(i=0;i<240;i++)
152 168 {
153 169 if(i>(240/3))
@@ -16,7 +16,7
16 16 #include <terminal.h>
17 17 #include <ili9328.h>
18 18
19
19 uint16_t buff[50*50];
20 20 void test_Block_Move(LCD_t* LCD,int x,int y,int w,int h,int color)
21 21 {
22 22 LCD->paintFilRect(LCD,x,y,w,h,0,0,color);
@@ -68,3 +68,48 void test_all_colors(LCD_t* LCD)
68 68 color+=1;
69 69 }
70 70 }
71
72 void test_address(LCD_t* LCD)
73 {
74 LCD->paintFilRect(LCD,0,0,LCD->width,LCD->height,0,0,0xFFFF);
75 uint16_t color[1];
76 for(int y=0;y<320;y++)
77 {
78 for(int x=0;x<240;x++)
79 {
80 color[0]=x*y;
81 LCD->paint(LCD,color,x,y,1,1);
82 //delay_100us(100);
83 }
84 }
85 LCD->getPix(LCD,buff,50,50,50,50);
86 delay_100us(5000);
87 for(int i=0;i<50*50;i++)
88 {
89 buff[i]=i;
90 }
91 LCD->paint(LCD,buff,50,50,50,50);
92 delay_100us(5000);
93 }
94
95 void test_lines(LCD_t* LCD)
96 {
97 uint16_t color[2];//=0x0FF0;
98 int x=0;
99 LCD->paintFilRect(LCD,0,0,LCD->width,LCD->height,0,0,0xFFFF);
100 for(int l=0;l<0xFFFF;l++)
101 {
102 color[0]=l;
103 color[1]=l;
104 for(int i=0;i<320;i++)
105 {
106 x=i*240/320;
107 LCD->paint(LCD,color,x,i,2,1);
108 }
109 for(int i=0;i<320;i++)
110 {
111 x=239-(i*240/320);
112 LCD->paint(LCD,color,x,i,2,1);
113 }
114 }
115 }
@@ -26,6 +26,7
26 26 #include <core.h>
27 27 #include <math.h>
28 28 #include <stdint.h>
29 #include <malloc.h>
29 30
30 31 #ifdef __OPTIMIZED_MATH
31 32 #include <optimised_math.h>
@@ -166,17 +167,21 void ili9328refreshenable(struct LCD_t*
166 167
167 168 void ili9328setFrame(LCD_t* LCD,uint16_t X,uint16_t Y,uint16_t W,uint16_t H)
168 169 {
169 LCD->interface->writereg(ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET,(uint32_t)X);
170 LCD->interface->writereg(ILI9328_REGISTER_VERTICALGRAMADDRESSSET,(uint32_t)Y);
170 if((X>239) || (Y>319) || ((X+W)>240) || ((Y+H)>320))
171 {
172 while (1);
173 }
171 174 LCD->interface->writereg(ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION,(uint32_t)X);
172 175 LCD->interface->writereg(ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION,(uint32_t)(W+X-1));
173 176 LCD->interface->writereg(ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION,(uint32_t)Y);
174 177 LCD->interface->writereg(ILI9328_REGISTER_VERTICALADDRESSENDPOSITION,(uint32_t)(Y+H-1));
178 LCD->interface->writereg(ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET,(uint32_t)X);
179 LCD->interface->writereg(ILI9328_REGISTER_VERTICALGRAMADDRESSSET,(uint32_t)Y);
175 180 }
176 181
177 182 void ili9328paint(LCD_t* LCD,void* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t Width,uint16_t Height)
178 183 {
179 if((LCD!=NULL) && (LCD->interface!=NULL) && (LCD->interface->writeGRAM!=NULL) && (LCD->width>(Xpos+Width)) && (LCD->height>(Ypos+Height)))
184 if((LCD!=NULL) && (LCD->interface!=NULL) && (LCD->interface->writeGRAM!=NULL) && (LCD->width>=(Xpos+Width)) && (LCD->height>=(Ypos+Height)))
180 185 {
181 186 ili9328setFrame(LCD,Xpos,Ypos,Width,Height);
182 187 LCD->interface->writeGRAM(buffer,Width*Height);
@@ -343,7 +348,7 void ili9328paintText(LCD_t* LCD,char* b
343 348 if(*buffer<32)*buffer=32;
344 349 if(*buffer>127)*buffer=32;
345 350 ili9328setFrame(LCD,Xpos+(charnum*w),Ypos-h,w,1);
346 // LCD->interface->readGRAM(tmp,w);
351 // LCD->interface->readGRAM(tmp,w);
347 352 ili9328getPix(LCD,tmp,Xpos+(charnum*w),Ypos-h,w,1);
348 353 for(int i=0;i<(h*w);i++)
349 354 {
@@ -353,8 +358,8 void ili9328paintText(LCD_t* LCD,char* b
353 358 {
354 359 ili9328setFrame(LCD,Xpos+(charnum*w),Ypos + linenum -h,w,1);
355 360 LCD->interface->writeGRAM(tmp,w);
356 ili9328setFrame(LCD,Xpos+(charnum*w),Ypos + linenum + 1-h,w,1);
357 // LCD->interface->readGRAM(tmp,w);
361 //ili9328setFrame(LCD,Xpos+(charnum*w),Ypos + linenum + 1-h,w,1);
362 // LCD->interface->readGRAM(tmp,w);
358 363 ili9328getPix(LCD,tmp,Xpos+(charnum*w),Ypos + linenum + 1-h,w,1);
359 364 pix=0;
360 365 }
@@ -375,13 +380,61 void ili9328paintText(LCD_t* LCD,char* b
375 380 }
376 381 }
377 382
383
384 void ili9328paintChar(LCD_t* LCD,char buffer,uint16_t Xpos,uint16_t Ypos,sFONT* font,uint32_t color)
385 {
386 int w=font->Width,h=font->Height,bpl=font->bytesPerLine,pix=0,tableoffset=0;
387 uint16_t tmp[w];
388 uint16_t tmp2[w];
389 uint16_t linenum=0,charnum=0;
390 uint8_t line=0;
391 if(buffer<32)buffer=32;
392 if(buffer>127)buffer=32;
393 ili9328setFrame(LCD,Xpos,Ypos-h,w,1);
394 // LCD->interface->readGRAM(tmp,w);
395 ili9328getPix(LCD,tmp2,Xpos,Ypos-h,w,1);
396 for(int i=0;i<w;i++)
397 {
398 tmp[i]=0;
399 }
400 for(int i=0;i<(h*w);i++)
401 {
402 if( ((i%w)==0) ) //read current line to apply text pixmap
403 {
404 if(linenum++>0)
405 {
406 ili9328setFrame(LCD,Xpos,Ypos + linenum -h,w,1);
407 LCD->interface->writeGRAM(tmp,w);
408 //ili9328setFrame(LCD,Xpos+(charnum*w),Ypos + linenum + 1-h,w,1);
409 // LCD->interface->readGRAM(tmp,w);
410 ili9328getPix(LCD,tmp2,Xpos,Ypos + linenum + 1-h,w,1);
411 for(int i=0;i<w;i++)
412 {
413 tmp[i]=0;
414 }
415 pix=0;
416 }
417 }
418 if((pix%8) == 0)
419 {
420 line=font->table[(((buffer)-32)*h*bpl)+tableoffset++];
421 }
422 //tmp[pix]=0;
423 if((line & (uint8_t)0x01)==(uint8_t)1)tmp[pix]=(uint16_t)color;
424 pix++;
425 line>>=1;
426 }
427
428 }
429
378 430 int ili9328init(struct LCD_t* LCD)
379 431 {
380 432 if((LCD!=NULL) && (LCD->interface!=NULL) && (LCD->interface->writereg!=NULL))
381 433 {
382 434 LCD->interface->writereg(ILI9328_REGISTER_DRIVEROUTPUTCONTROL1, 0x0100); // Driver Output Control Register (R01h)
383 435 LCD->interface->writereg(ILI9328_REGISTER_LCDDRIVINGCONTROL, 0x0700); // LCD Driving Waveform Control (R02h)
384 LCD->interface->writereg(ILI9328_REGISTER_ENTRYMODE, 0x1030); // Entry Mode (R03h)
436 LCD->interface->writereg(ILI9328_REGISTER_ENTRYMODE, 0x0230); // Entry Mode (R03h)
437 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL1, 0xC000);
385 438 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL2, 0x0302);
386 439 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL3, 0x0000);
387 440 LCD->interface->writereg(ILI9328_REGISTER_DISPLAYCONTROL4, 0x0000); // Fmark On
@@ -450,12 +503,12 void ili9328getPix(struct LCD_t* LCD,uin
450 503 #define __set__Address__(_x_,_y_) LCD->interface->writereg(ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET,_x_); \
451 504 LCD->interface->writereg(ILI9328_REGISTER_VERTICALGRAMADDRESSSET,_y_)
452 505
453 uint16_t* castedBuff = (uint16_t*)buffer;
454 506 int cx=Xpos,cy=Ypos;
507 ili9328setFrame(LCD,Xpos,Ypos,w,h);
455 508 for(int i=0;i<(w*h);i++)
456 509 {
457 510 __set__Address__(cx,cy);
458 LCD->interface->readGRAM((void*)(&castedBuff[i]),1);
511 LCD->interface->readGRAM((void*)(&buffer[i]),1);
459 512 cx+=1;
460 513 if(cx>=(w+Xpos))
461 514 {
@@ -1,5 +1,4
1 1 TEMPLATE = lib
2 OBJECTS_DIR = obj
3 2 TARGET = fonts
4 3
5 4 SOURCES += \
@@ -154,7 +154,9 int terminal_writenc(terminal_t* termina
154 154 if(terminal->column==0)terminal_clearCurentLine(terminal);
155 155 if(buffer[0]!='\r'){
156 156 // terminal->LCD->paintFilRect(terminal->LCD,CHARXPOS(terminal,charw),CHARYPOS(terminal, charh)-charh,charw,charh,terminal->backgroundColor,0,terminal->backgroundColor);
157 terminal->LCD->paintText(terminal->LCD,buffer,CHARXPOS(terminal,charw),(CHARYPOS(terminal, charh))-(terminal->verticalSpace/2),terminal->font,terminal->textColor);
157 // terminal->LCD->paintText(terminal->LCD,buffer,CHARXPOS(terminal,charw),(CHARYPOS(terminal, charh))-(terminal->verticalSpace/2),terminal->font,terminal->textColor);
158 #include <ili9328.h>
159 ili9328paintChar(terminal->LCD,buffer[0],CHARXPOS(terminal,charw),(CHARYPOS(terminal, charh))-(terminal->verticalSpace/2),terminal->font,terminal->textColor);
158 160 terminal_movecursor(terminal,1);
159 161 }
160 162 }
@@ -1,5 +1,4
1 1 TEMPLATE = lib
2 OBJECTS_DIR = obj
3 2 TARGET = terminal
4 3
5 4 SOURCES += \
@@ -37,6 +37,7 extern void ili9328paintFilCirc(LCD_t* L
37 37 extern void ili9328paintFilCircMidPoint(LCD_t* LCD,uint16_t Xpos,uint16_t Ypos,uint16_t r,uint32_t contColor,uint16_t contSz,uint32_t fillColor);
38 38 extern void ili9328getPix(struct LCD_t* LCD,uint16_t* buffer,uint16_t Xpos,uint16_t Ypos,uint16_t w,uint16_t h);
39 39 extern void ili9328refreshenable(struct LCD_t* LCD,int enable);
40 extern void ili9328paintChar(LCD_t* LCD,char buffer,uint16_t Xpos,uint16_t Ypos,sFONT* font,uint32_t color);
40 41
41 42 #define ILI9328_REGISTER_DRIVERCODEREAD ((uint32_t) 0x0000 )
42 43 #define ILI9328_REGISTER_DRIVEROUTPUTCONTROL1 ((uint32_t) 0x0001 )
@@ -79,27 +79,33 void SDLCD_writereg(uint32_t reg,uint32_
79 79 {
80 80 switch (reg) {
81 81 case ILI9328_REGISTER_HORIZONTALGRAMADDRESSSET:
82 if((data>=screen->w) || (data<0))printf("Warning printing out of bounds HORIZONTALGRAMADDRESSSET=%d",data);
82 if((data>=screen->w) || (data<0))
83 printf("Warning printing out of bounds HORIZONTALGRAMADDRESSSET=%d",data);
83 84 SDLCD_Xpos = data;
84 85 break;
85 86 case ILI9328_REGISTER_VERTICALGRAMADDRESSSET:
86 if((data>=screen->h) || (data<0))printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALGRAMADDRESSSET=%d",data);
87 if((data>=screen->h) || (data<0))
88 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALGRAMADDRESSSET=%d",data);
87 89 SDLCD_Ypos = data;
88 90 break;
89 91 case ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION:
90 if((data>=screen->w) || (data<0))printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION=%d",data);
92 if((data>=screen->w) || (data<0))
93 printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSSTARTPOSITION=%d",data);
91 94 SDLCD_XWinStrt = data;
92 95 break;
93 96 case ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION:
94 if((data>=screen->w) || (data<0))printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION=%d",data);
97 if((data>=screen->w) || (data<0))
98 printf("Warning printing out of bounds ILI9328_REGISTER_HORIZONTALADDRESSENDPOSITION=%d",data);
95 99 SDLCD_XWinEnd = data;
96 100 break;
97 101 case ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION:
98 if((data>=screen->h) || (data<0))printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION=%d",data);
102 if((data>=screen->h) || (data<0))
103 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSSTARTPOSITION=%d",data);
99 104 SDLCD_YWinStrt = data;
100 105 break;
101 106 case ILI9328_REGISTER_VERTICALADDRESSENDPOSITION:
102 if((data>=screen->h) || (data<0))printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSENDPOSITION=%d",data);
107 if((data>=screen->h) || (data<0))
108 printf("Warning printing out of bounds ILI9328_REGISTER_VERTICALADDRESSENDPOSITION=%d",data);
103 109 SDLCD_YWinEnd = data;
104 110 break;
105 111 default:
General Comments 0
You need to be logged in to leave comments. Login now