JDI_MIP on ThunderBoardSense2(Silicon-Labs)

JDI_MIP (LPM013M126A) Sample on ThunderBoard2(Silicon-Labs)

/media/uploads/STakayama/mip8_tb2_sample0_.jpg LPM013M126A /media/uploads/STakayama/mip8_tb2_sample1.jpg

Links

https://os.mbed.com/teams/JapanDisplayInc/

https://os.mbed.com/teams/JapanDisplayInc/wiki/MIP-reflective-color-display

Committer:
STakayama
Date:
Tue May 15 07:07:24 2018 +0000
Revision:
2:0585ae14d9a9
Parent:
1:dfd9046278b7
Child:
3:79758cbd4a92
Si1133 Import

Who changed what in which revision?

UserRevisionLine numberNew contents of line
STakayama 0:dbc295c4383e 1
STakayama 0:dbc295c4383e 2
STakayama 0:dbc295c4383e 3 #include "mbed.h"
STakayama 0:dbc295c4383e 4 #include "SPI_MIP8.h"
STakayama 2:0585ae14d9a9 5 #include "data.h"
STakayama 0:dbc295c4383e 6
STakayama 2:0585ae14d9a9 7 //memLCD8 WD(PK0,PK2,PF7,PA5,PA8,PF6); //PTC12); // mosi,miso,clk,cs,disp,power(EXTMODE)
STakayama 0:dbc295c4383e 8
STakayama 0:dbc295c4383e 9 InterruptIn UV_INT(PA6); // YV Interrupt
STakayama 0:dbc295c4383e 10 DigitalIn PushSW0(PD14); // Switch
STakayama 0:dbc295c4383e 11 DigitalIn PushSW1(PD15); // Switch
STakayama 0:dbc295c4383e 12
STakayama 0:dbc295c4383e 13 DigitalOut ledPJ14(PJ14);
STakayama 0:dbc295c4383e 14 DigitalOut led1(LED1);
STakayama 0:dbc295c4383e 15 DigitalOut ledPI0(PI0);
STakayama 0:dbc295c4383e 16 DigitalOut ledPI1(PI1);
STakayama 0:dbc295c4383e 17 DigitalOut ledPI2(PI2);
STakayama 0:dbc295c4383e 18 DigitalOut ledPI3(PI3);
STakayama 0:dbc295c4383e 19 DigitalOut ledR(PD11);
STakayama 0:dbc295c4383e 20 DigitalOut ledG(PD12);
STakayama 0:dbc295c4383e 21 DigitalOut ledB(PD13);
STakayama 0:dbc295c4383e 22
STakayama 0:dbc295c4383e 23 bool if16 = 0;
STakayama 0:dbc295c4383e 24 bool ifMargeTXT = 0;
STakayama 0:dbc295c4383e 25 int width =160;
STakayama 0:dbc295c4383e 26 int height=160;
STakayama 0:dbc295c4383e 27
STakayama 1:dfd9046278b7 28 void uv_init_proc(void)
STakayama 1:dfd9046278b7 29 {
STakayama 1:dfd9046278b7 30 ;
STakayama 1:dfd9046278b7 31 }
STakayama 1:dfd9046278b7 32
STakayama 2:0585ae14d9a9 33
STakayama 0:dbc295c4383e 34 int main() {
STakayama 1:dfd9046278b7 35 ledPJ14 =1;
STakayama 0:dbc295c4383e 36 ledPI0 =1; ledPI1 =1; ledPI2 =1; ledPI3 =1;
STakayama 1:dfd9046278b7 37 UV_INT.fall(&uv_init_proc);
STakayama 1:dfd9046278b7 38
STakayama 0:dbc295c4383e 39 while(1){
STakayama 0:dbc295c4383e 40 for (int i=0; i<0x10000;i++) {
STakayama 0:dbc295c4383e 41 for (int j=0; j<0x100000;j++) ;
STakayama 0:dbc295c4383e 42 led1 = (i%8==0)?(1):(0);
STakayama 0:dbc295c4383e 43 ledR = (i%1==0)?(1):(0);
STakayama 0:dbc295c4383e 44 ledG = (i%2==0)?(1):(0);
STakayama 0:dbc295c4383e 45 ledB = (i%4==0)?(1):(0);
STakayama 0:dbc295c4383e 46 printf("aaa %d\n\r",i);
STakayama 0:dbc295c4383e 47 }
STakayama 0:dbc295c4383e 48 }
STakayama 0:dbc295c4383e 49 }
STakayama 2:0585ae14d9a9 50
STakayama 0:dbc295c4383e 51 /* MIP Main Reference
STakayama 0:dbc295c4383e 52 #include "stdio.h"
STakayama 0:dbc295c4383e 53 #include "string"
STakayama 0:dbc295c4383e 54 #include "mbed.h"
STakayama 0:dbc295c4383e 55 #include "SPI_MIP8.h"
STakayama 0:dbc295c4383e 56 #include "SDFileSystem.h"
STakayama 0:dbc295c4383e 57 #include "StateSW.h"
STakayama 0:dbc295c4383e 58 #include "TglSW.h"
STakayama 0:dbc295c4383e 59
STakayama 0:dbc295c4383e 60
STakayama 0:dbc295c4383e 61 #include "Arial28x28.h"
STakayama 0:dbc295c4383e 62 #include "Prototype29x28.h"
STakayama 0:dbc295c4383e 63 #include "Prototype70x86.h"
STakayama 0:dbc295c4383e 64 #include "HGP23x29.h"
STakayama 0:dbc295c4383e 65 #include "HGP15x19.h"
STakayama 0:dbc295c4383e 66 #include "symbol.h"
STakayama 0:dbc295c4383e 67
STakayama 0:dbc295c4383e 68 #define ON 1
STakayama 0:dbc295c4383e 69 #define OFF 0
STakayama 0:dbc295c4383e 70
STakayama 0:dbc295c4383e 71
STakayama 0:dbc295c4383e 72 //K64F
STakayama 0:dbc295c4383e 73 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // mosi,miso,sck,cs
STakayama 0:dbc295c4383e 74 memLCD8 WD(PTD2,PTD3,PTD1,PTD0,PTC4,PTD3); //PTC12); // mosi,miso,clk,cs,disp,power
STakayama 0:dbc295c4383e 75
STakayama 0:dbc295c4383e 76 TglSW HaltSW(PTA4); // SW3
STakayama 0:dbc295c4383e 77 InterruptIn OffSW(SW2);
STakayama 0:dbc295c4383e 78 DigitalIn TexSW(SW3);
STakayama 0:dbc295c4383e 79
STakayama 0:dbc295c4383e 80 void SD2BUF(char *filepath);
STakayama 0:dbc295c4383e 81 void SetMenu(void);
STakayama 0:dbc295c4383e 82 void OffSequence(void);
STakayama 0:dbc295c4383e 83 void DispAllDir(const char *fsrc);
STakayama 0:dbc295c4383e 84 void ReadBmp(const char *fsrc, uint32_t FileNum);
STakayama 0:dbc295c4383e 85 uint32_t CntFile(const char *fsrc);
STakayama 0:dbc295c4383e 86 int Menu = 0;
STakayama 0:dbc295c4383e 87 bool if16 = 0;
STakayama 0:dbc295c4383e 88 bool ifMargeTXT = 0;
STakayama 0:dbc295c4383e 89 int width =400;
STakayama 0:dbc295c4383e 90 int height=240;
STakayama 0:dbc295c4383e 91
STakayama 0:dbc295c4383e 92
STakayama 0:dbc295c4383e 93 int main() {
STakayama 0:dbc295c4383e 94
STakayama 0:dbc295c4383e 95 uint32_t filenum=0;
STakayama 0:dbc295c4383e 96 char filepath[40];
STakayama 0:dbc295c4383e 97 char pol;
STakayama 0:dbc295c4383e 98
STakayama 0:dbc295c4383e 99 if(OffSW==0) if16 = 1; //16color MODE
STakayama 0:dbc295c4383e 100 else if16 = 0;
STakayama 0:dbc295c4383e 101
STakayama 0:dbc295c4383e 102
STakayama 0:dbc295c4383e 103 if(TexSW==0) ifMargeTXT = 1;
STakayama 0:dbc295c4383e 104 ifMargeTXT = 0;
STakayama 0:dbc295c4383e 105 WD.setmarge(1);
STakayama 0:dbc295c4383e 106
STakayama 0:dbc295c4383e 107 sd.disk_initialize();
STakayama 0:dbc295c4383e 108 HaltSW.Enable(1);
STakayama 0:dbc295c4383e 109
STakayama 0:dbc295c4383e 110
STakayama 0:dbc295c4383e 111 FILE *fp = fopen("/sd/settings.txt", "rb");
STakayama 0:dbc295c4383e 112 if(fp != NULL) {
STakayama 0:dbc295c4383e 113 fscanf(fp, "%d",&width);
STakayama 0:dbc295c4383e 114 fscanf(fp, "%d",&height);
STakayama 0:dbc295c4383e 115 sprintf(filepath,"/sd/%dx%d",width,height); //DispAllDir("/sd/180x180")
STakayama 0:dbc295c4383e 116 }
STakayama 0:dbc295c4383e 117 else{
STakayama 0:dbc295c4383e 118 width =180;
STakayama 0:dbc295c4383e 119 height=180;
STakayama 0:dbc295c4383e 120 sprintf(filepath,"/sd/180x180"); //DispAllDir("/sd/180x180")
STakayama 0:dbc295c4383e 121 }
STakayama 0:dbc295c4383e 122 fclose(fp);
STakayama 0:dbc295c4383e 123
STakayama 0:dbc295c4383e 124
STakayama 0:dbc295c4383e 125 OffSW.fall(&OffSequence); // OFF Sequence
STakayama 0:dbc295c4383e 126 WD.setWH(width,height);
STakayama 0:dbc295c4383e 127
STakayama 0:dbc295c4383e 128 WD.background(Black);
STakayama 0:dbc295c4383e 129 WD.clsBUF();
STakayama 0:dbc295c4383e 130 WD.writeDISP();
STakayama 0:dbc295c4383e 131 WD.SwDisp(1);
STakayama 0:dbc295c4383e 132
STakayama 0:dbc295c4383e 133 while(HaltSW.State()){}
STakayama 0:dbc295c4383e 134 HaltSW.Clear();
STakayama 0:dbc295c4383e 135 // WD.background(White);
STakayama 0:dbc295c4383e 136 // WD.clsBUF();
STakayama 0:dbc295c4383e 137 // for (int i=0; i<8; i++) WD.fillrect(i*26+6,16, i*26+6+20, 36, i*2);
STakayama 0:dbc295c4383e 138 // WD.writeDISP();
STakayama 0:dbc295c4383e 139 // wait(0.5);
STakayama 0:dbc295c4383e 140 // while(HaltSW.State()){}
STakayama 0:dbc295c4383e 141 // HaltSW.Clear();
STakayama 0:dbc295c4383e 142
STakayama 0:dbc295c4383e 143
STakayama 0:dbc295c4383e 144 while(1){ //BITMAPS
STakayama 0:dbc295c4383e 145
STakayama 0:dbc295c4383e 146 filenum = CntFile(filepath);
STakayama 0:dbc295c4383e 147 for(uint32_t i=0; i<filenum; i++){
STakayama 0:dbc295c4383e 148 ReadBmp(filepath,i);
STakayama 0:dbc295c4383e 149
STakayama 0:dbc295c4383e 150 while(HaltSW.State()){ // VCOM invert when image is still
STakayama 0:dbc295c4383e 151 pol++;
STakayama 0:dbc295c4383e 152 WD.command( (pol << 6) & 0x40 );
STakayama 0:dbc295c4383e 153 wait(1); //1Hz
STakayama 0:dbc295c4383e 154 }
STakayama 0:dbc295c4383e 155 // Brink
STakayama 0:dbc295c4383e 156 // for(char j = 0; j < 8; j++){
STakayama 0:dbc295c4383e 157 // pol = j&0x01;
STakayama 0:dbc295c4383e 158 // EnterOrLeave = (j+1)&0x01;
STakayama 0:dbc295c4383e 159 // WD.command( (pol << 6) | (EnterOrLeave << 3) );
STakayama 0:dbc295c4383e 160 // wait(0.2);
STakayama 0:dbc295c4383e 161 // }
STakayama 0:dbc295c4383e 162
STakayama 0:dbc295c4383e 163 HaltSW.Clear();
STakayama 0:dbc295c4383e 164 WD.writeDISP();
STakayama 0:dbc295c4383e 165 wait(2);
STakayama 0:dbc295c4383e 166 }
STakayama 0:dbc295c4383e 167 }
STakayama 0:dbc295c4383e 168 }
STakayama 0:dbc295c4383e 169
STakayama 0:dbc295c4383e 170
STakayama 0:dbc295c4383e 171 void SD2BUF(char *filepath){
STakayama 0:dbc295c4383e 172 char R8[1],G8[1],B8[1] ,DUMMY[1];
STakayama 0:dbc295c4383e 173 int RGB;
STakayama 0:dbc295c4383e 174 FILE *fp ;
STakayama 0:dbc295c4383e 175
STakayama 0:dbc295c4383e 176 fp = fopen(filepath, "rb");
STakayama 0:dbc295c4383e 177 if(fp != NULL) {
STakayama 0:dbc295c4383e 178 for(int i=0; i< 54 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 54bytes
STakayama 0:dbc295c4383e 179 for(int y=height-1; y>=0; y--) {
STakayama 0:dbc295c4383e 180 for(int x=0; x< width; x++) { //24bit color B 8bit -> G 8bit -> R 8bit
STakayama 0:dbc295c4383e 181 fscanf(fp, "%c",B8);
STakayama 0:dbc295c4383e 182 fscanf(fp, "%c",G8);
STakayama 0:dbc295c4383e 183 fscanf(fp, "%c",R8);
STakayama 0:dbc295c4383e 184
STakayama 0:dbc295c4383e 185 RGB = RGB8(*R8,*G8,*B8); //6bit(8bit) MIP MASK 0000 1110
STakayama 0:dbc295c4383e 186 WD.pixel(x,y,RGB);
STakayama 0:dbc295c4383e 187 }
STakayama 0:dbc295c4383e 188 if( y!=0) // The last data column doesn't need padding
STakayama 0:dbc295c4383e 189 for(int x=(width*3)%4; (x%4 !=0); x++) fscanf(fp, "%c",DUMMY); // 4byte boundery for every column
STakayama 0:dbc295c4383e 190 }
STakayama 0:dbc295c4383e 191 }
STakayama 0:dbc295c4383e 192 fclose(fp);
STakayama 0:dbc295c4383e 193 }
STakayama 0:dbc295c4383e 194
STakayama 0:dbc295c4383e 195 void SDtex2BUF(char *filepath){
STakayama 0:dbc295c4383e 196 int x,y,font,color;
STakayama 0:dbc295c4383e 197 char text[40];
STakayama 0:dbc295c4383e 198 int ifEOF;
STakayama 0:dbc295c4383e 199 FILE *fp ;
STakayama 0:dbc295c4383e 200
STakayama 0:dbc295c4383e 201 fp = fopen(filepath, "r");
STakayama 0:dbc295c4383e 202 if(fp != NULL) {
STakayama 0:dbc295c4383e 203 // for(int i=0; i<3; i++){
STakayama 0:dbc295c4383e 204 while(ifEOF != -1){
STakayama 0:dbc295c4383e 205 ifEOF = fscanf(fp,"%d,%d,%d,%d,%[^,],",&x,&y,&font,&color,text);
STakayama 0:dbc295c4383e 206 WD.locate(x,y);
STakayama 0:dbc295c4383e 207 WD.foreground(color);
STakayama 0:dbc295c4383e 208 if (font ==1) WD.set_font((unsigned char*) HGP15x19);
STakayama 0:dbc295c4383e 209 else if (font ==2) WD.set_font((unsigned char*) HGP23x29);
STakayama 0:dbc295c4383e 210 else if (font ==3) WD.set_font((unsigned char*) Arial28x28);
STakayama 0:dbc295c4383e 211 else WD.set_font((unsigned char*) Prototype70x86);
STakayama 0:dbc295c4383e 212
STakayama 0:dbc295c4383e 213 WD.printf("%s",text);
STakayama 0:dbc295c4383e 214 }
STakayama 0:dbc295c4383e 215 }
STakayama 0:dbc295c4383e 216 fclose(fp);
STakayama 0:dbc295c4383e 217 }
STakayama 0:dbc295c4383e 218
STakayama 0:dbc295c4383e 219
STakayama 0:dbc295c4383e 220 void OffSequence(void){
STakayama 0:dbc295c4383e 221 WD.background(Black);
STakayama 0:dbc295c4383e 222 WD.clsBUF();
STakayama 0:dbc295c4383e 223 WD.SwDisp(0);
STakayama 0:dbc295c4383e 224 WD.writeDISP();
STakayama 0:dbc295c4383e 225 WD.writeDISP();
STakayama 0:dbc295c4383e 226
STakayama 0:dbc295c4383e 227 }
STakayama 0:dbc295c4383e 228 void DispAllDir(const char *fsrc)
STakayama 0:dbc295c4383e 229 {
STakayama 0:dbc295c4383e 230 DIR *d = opendir(fsrc);
STakayama 0:dbc295c4383e 231 struct dirent *p;
STakayama 0:dbc295c4383e 232 char filepath[40];
STakayama 0:dbc295c4383e 233
STakayama 0:dbc295c4383e 234 while ((p = readdir(d)) != NULL) {
STakayama 0:dbc295c4383e 235 sprintf(filepath, "%s/%s",fsrc,p->d_name);
STakayama 0:dbc295c4383e 236 SD2BUF(filepath);
STakayama 0:dbc295c4383e 237 WD.writeDISP();
STakayama 0:dbc295c4383e 238 }
STakayama 0:dbc295c4383e 239 closedir(d);
STakayama 0:dbc295c4383e 240 }
STakayama 0:dbc295c4383e 241
STakayama 0:dbc295c4383e 242 void ReadBmp(const char *fsrc, uint32_t FileNum)
STakayama 0:dbc295c4383e 243 {
STakayama 0:dbc295c4383e 244 DIR *d = opendir(fsrc);
STakayama 0:dbc295c4383e 245 struct dirent *p;
STakayama 0:dbc295c4383e 246 char filepath[40];
STakayama 0:dbc295c4383e 247
STakayama 0:dbc295c4383e 248 for(uint32_t i=0; i< FileNum; i++) readdir(d);
STakayama 0:dbc295c4383e 249 if ((p = readdir(d)) != NULL) {
STakayama 0:dbc295c4383e 250 sprintf(filepath, "%s/%s",fsrc,p->d_name);
STakayama 0:dbc295c4383e 251 SD2BUF(filepath);
STakayama 0:dbc295c4383e 252 if(ifMargeTXT){
STakayama 0:dbc295c4383e 253 sprintf(filepath, "%s_txt/%s.txt",fsrc,p->d_name);
STakayama 0:dbc295c4383e 254 SDtex2BUF(filepath);
STakayama 0:dbc295c4383e 255 }
STakayama 0:dbc295c4383e 256 }
STakayama 0:dbc295c4383e 257 closedir(d);
STakayama 0:dbc295c4383e 258 }
STakayama 0:dbc295c4383e 259
STakayama 0:dbc295c4383e 260 uint32_t CntFile(const char *fsrc)
STakayama 0:dbc295c4383e 261 {
STakayama 0:dbc295c4383e 262 DIR *d = opendir(fsrc);
STakayama 0:dbc295c4383e 263 uint32_t counter = 0;
STakayama 0:dbc295c4383e 264 while (readdir(d)!= NULL) counter++;
STakayama 0:dbc295c4383e 265 closedir(d);
STakayama 0:dbc295c4383e 266 return counter;
STakayama 0:dbc295c4383e 267 }
STakayama 0:dbc295c4383e 268
STakayama 0:dbc295c4383e 269 */