SGG

Dependencies:   mbed SDFileSystemForSGG

Committer:
rempig
Date:
Thu Jan 21 02:52:40 2021 +0000
Revision:
6:9b564803f45e
Parent:
5:9cc383153bdb
publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rempig 5:9cc383153bdb 1 /*OP Panel Tester Offline by Ronan S. Empig*/
rempig 5:9cc383153bdb 2
screamer 3:5edc67dee8b7 3
screamer 0:525c842a3c89 4 #include "mbed.h"
screamer 0:525c842a3c89 5 #include "SDFileSystem.h"
screamer 0:525c842a3c89 6
screamer 2:f2f5e2324ad4 7 Serial pc(USBTX, USBRX);
screamer 0:525c842a3c89 8 SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS
screamer 0:525c842a3c89 9 FILE *fp;
screamer 0:525c842a3c89 10
rempig 5:9cc383153bdb 11 I2C i2c(PB_9, PB_8);
rempig 5:9cc383153bdb 12
rempig 5:9cc383153bdb 13
rempig 5:9cc383153bdb 14
rempig 5:9cc383153bdb 15
rempig 5:9cc383153bdb 16 //SD Card
rempig 5:9cc383153bdb 17
rempig 5:9cc383153bdb 18 // ** MOSI - pin 11
rempig 5:9cc383153bdb 19 // ** MISO - pin 12
rempig 5:9cc383153bdb 20 // ** CLK - pin 13
rempig 5:9cc383153bdb 21 // ** CS - pin 4 (for MKRZero SD: SDCARD_SS_PIN)
rempig 5:9cc383153bdb 22
rempig 5:9cc383153bdb 23 //8080-I series 8-bit Parallel Interface
rempig 5:9cc383153bdb 24
rempig 5:9cc383153bdb 25 //State Machine
rempig 5:9cc383153bdb 26
rempig 5:9cc383153bdb 27 int STATEMACHINE = 0;
rempig 5:9cc383153bdb 28 const int IDLESTATE = 0;
rempig 5:9cc383153bdb 29 const int POWERON = 1;
rempig 5:9cc383153bdb 30 const int GETADDRESS = 2;
rempig 5:9cc383153bdb 31 const int GOTOAPP = 5;
rempig 5:9cc383153bdb 32 const int UIBC5VENB = 14;
rempig 5:9cc383153bdb 33 const int UIBCDISPENB = 15;
rempig 5:9cc383153bdb 34 const int UIBCDISPENB2 = 16;
rempig 5:9cc383153bdb 35 const int UIBCAUXTOUCHENABLE = 17;
rempig 5:9cc383153bdb 36 const int LED1CTRL = 18;
rempig 5:9cc383153bdb 37 const int LED1DUTY = 19;
rempig 5:9cc383153bdb 38 const int UIBCBACKLIGHTDUTY = 20;
rempig 5:9cc383153bdb 39 const int DONESTATE = 21;
rempig 5:9cc383153bdb 40 const int LCDTESTINIT = 22;
rempig 5:9cc383153bdb 41 const int LCDTEST1 = 23;
rempig 5:9cc383153bdb 42 const int LCDTEST2 = 24;
rempig 5:9cc383153bdb 43
rempig 5:9cc383153bdb 44 const int LED2CTRL = 25;
rempig 5:9cc383153bdb 45 const int LED2DUTY = 26;
rempig 5:9cc383153bdb 46 const int RACASET = 27;
rempig 5:9cc383153bdb 47 const int GOODDONE = 28;
rempig 5:9cc383153bdb 48 /*
rempig 5:9cc383153bdb 49 const int TOUCHTEST1 = 25;
rempig 5:9cc383153bdb 50 const int TOUCHTEST2 = 26;
rempig 5:9cc383153bdb 51 const int TOUCHTEST3 = 27;
rempig 5:9cc383153bdb 52 const int TOUCHTEST4 = 28;
rempig 5:9cc383153bdb 53 */
rempig 5:9cc383153bdb 54 const int TOUCHTEST5 = 29;
rempig 5:9cc383153bdb 55 const int TOUCHTEST6 = 30;
rempig 5:9cc383153bdb 56 const int TOUCHTEST7 = 31;
rempig 5:9cc383153bdb 57 const int TOUCHTEST8 = 32;
rempig 5:9cc383153bdb 58
rempig 5:9cc383153bdb 59 const int TOUCHDETECT = 33;
rempig 5:9cc383153bdb 60 const int TOUCHTESTINIT = 34;
rempig 5:9cc383153bdb 61 const int WAITCONTINUE = 35;
rempig 5:9cc383153bdb 62 const int FWUPDATE = 36;
rempig 5:9cc383153bdb 63
rempig 5:9cc383153bdb 64 //Variables
rempig 5:9cc383153bdb 65 int addr1 = 0;
rempig 5:9cc383153bdb 66 int addr2 = 0;
rempig 5:9cc383153bdb 67 int addrsht = 0x00;
rempig 5:9cc383153bdb 68 unsigned char LowByteChecksum;
rempig 5:9cc383153bdb 69
rempig 5:9cc383153bdb 70
rempig 5:9cc383153bdb 71 //byte error = 0;
rempig 5:9cc383153bdb 72 unsigned char command;
rempig 5:9cc383153bdb 73 unsigned char data1;
rempig 5:9cc383153bdb 74 int RDDIDVal = 0;
rempig 5:9cc383153bdb 75 int cntbytes = 0;
rempig 5:9cc383153bdb 76 int cntWrite = 0;
rempig 5:9cc383153bdb 77 char fwROM[8];
rempig 5:9cc383153bdb 78 char flRead[8];
rempig 5:9cc383153bdb 79 char ISPRdy[8];
rempig 5:9cc383153bdb 80
rempig 5:9cc383153bdb 81 int pageNum = 0;
rempig 5:9cc383153bdb 82
rempig 5:9cc383153bdb 83 char *fName;
rempig 5:9cc383153bdb 84 bool touch1 = false;
rempig 5:9cc383153bdb 85 bool touch2 = false;
rempig 5:9cc383153bdb 86 bool touch3 = false;
rempig 5:9cc383153bdb 87 bool touch4 = false;
rempig 5:9cc383153bdb 88 bool touch5 = false;
rempig 5:9cc383153bdb 89 bool touchkey1 = false;
rempig 5:9cc383153bdb 90 bool touchkey2 = false;
rempig 5:9cc383153bdb 91 bool touchkey3 = false;
rempig 5:9cc383153bdb 92 bool touchresult = false;
rempig 5:9cc383153bdb 93 //---------------------------------------------------------
rempig 5:9cc383153bdb 94 DigitalIn buttonNext(PC_4); // button (pull-up) is connected to P18
rempig 5:9cc383153bdb 95
rempig 5:9cc383153bdb 96 DigitalOut nRD(PC_8); /* read data from SSD1963 active LOW - but not used */
rempig 5:9cc383153bdb 97 DigitalOut nWR(PC_6); /* write out to SSD1963 active LOW */
rempig 5:9cc383153bdb 98 DigitalOut DC(PC_5); /* Data/Command Select: 1=Command, 0=Data); */
rempig 5:9cc383153bdb 99
rempig 5:9cc383153bdb 100 DigitalOut CS(PA_10); /* chip select the SSD1963 active LOW */
rempig 5:9cc383153bdb 101
rempig 5:9cc383153bdb 102 /* data bus I/O pins */
rempig 5:9cc383153bdb 103
rempig 5:9cc383153bdb 104 BusInOut DB(PB_14,PB_15,PB_1,PB_2,PB_11,PB_12,PA_11,PA_12); /* databus D7-D0 */
rempig 5:9cc383153bdb 105
rempig 5:9cc383153bdb 106 DigitalOut powerPanel(PB_3);
rempig 5:9cc383153bdb 107
rempig 5:9cc383153bdb 108 //LCD*****************************************************
rempig 5:9cc383153bdb 109 //******************************************************************************
rempig 5:9cc383153bdb 110 void Write_Command(unsigned char command) {
rempig 5:9cc383153bdb 111 CS=0;
rempig 5:9cc383153bdb 112 nRD = 1; /* make sure the RD is HIGH just to be sure */
rempig 5:9cc383153bdb 113 DC=0;
rempig 5:9cc383153bdb 114 nWR = 0;
rempig 5:9cc383153bdb 115 //wait_us(1);
rempig 5:9cc383153bdb 116 DB=command;
rempig 5:9cc383153bdb 117 wait_us(1);
rempig 5:9cc383153bdb 118 DB.output();
rempig 5:9cc383153bdb 119 DB=command;
rempig 5:9cc383153bdb 120 wait_us(1);
rempig 5:9cc383153bdb 121 nWR = 1;
rempig 5:9cc383153bdb 122 }
rempig 5:9cc383153bdb 123
rempig 5:9cc383153bdb 124
rempig 5:9cc383153bdb 125 //;******************************************************************************
rempig 5:9cc383153bdb 126 void Write_Data(unsigned char data1) {
rempig 5:9cc383153bdb 127 CS=0;
rempig 5:9cc383153bdb 128 nRD = 1;
rempig 5:9cc383153bdb 129 DC=1;
rempig 5:9cc383153bdb 130 nWR = 0;
rempig 5:9cc383153bdb 131 DB.output();
rempig 5:9cc383153bdb 132 DB=data1;
rempig 5:9cc383153bdb 133 DB=data1;
rempig 5:9cc383153bdb 134
rempig 5:9cc383153bdb 135 //wait_us(1);
rempig 5:9cc383153bdb 136 nWR = 1;
rempig 5:9cc383153bdb 137 }
rempig 5:9cc383153bdb 138
rempig 5:9cc383153bdb 139 //;******************************************************************************
rempig 5:9cc383153bdb 140 int Read_Data() {
rempig 5:9cc383153bdb 141 CS=0;
rempig 5:9cc383153bdb 142 nRD = 0;
rempig 5:9cc383153bdb 143 DC=1;
rempig 5:9cc383153bdb 144 nWR = 1;
rempig 5:9cc383153bdb 145 wait_us(1);
rempig 5:9cc383153bdb 146
rempig 5:9cc383153bdb 147 nRD = 1;
rempig 5:9cc383153bdb 148 wait_us(1);
rempig 5:9cc383153bdb 149 DB.input();
rempig 5:9cc383153bdb 150 int intRead = DB.read();
rempig 5:9cc383153bdb 151 return intRead;
rempig 5:9cc383153bdb 152 }
rempig 5:9cc383153bdb 153
rempig 5:9cc383153bdb 154
rempig 5:9cc383153bdb 155 //====================================================
rempig 5:9cc383153bdb 156 void RDDID_Read(unsigned char REG) {
rempig 5:9cc383153bdb 157 Write_Command(REG);
rempig 5:9cc383153bdb 158 int intrd;
rempig 5:9cc383153bdb 159 wait_us(1);
rempig 5:9cc383153bdb 160 intrd = Read_Data();
rempig 5:9cc383153bdb 161 printf("0x%02x\n", intrd);
rempig 5:9cc383153bdb 162 wait_us(1);
rempig 5:9cc383153bdb 163 intrd = Read_Data();
rempig 5:9cc383153bdb 164 printf("0x%02x\n", intrd);
rempig 5:9cc383153bdb 165 RDDIDVal = intrd;
rempig 5:9cc383153bdb 166 wait_us(1);
rempig 5:9cc383153bdb 167 intrd = Read_Data();
rempig 5:9cc383153bdb 168 printf("0x%02x\n", intrd);
rempig 5:9cc383153bdb 169 RDDIDVal = (RDDIDVal << 16) | intrd << 8;
rempig 5:9cc383153bdb 170 wait_us(1);
rempig 5:9cc383153bdb 171 intrd = Read_Data();
rempig 5:9cc383153bdb 172 printf("0x%02x\n", intrd);
rempig 5:9cc383153bdb 173 RDDIDVal = RDDIDVal | intrd;
rempig 5:9cc383153bdb 174 printf("0x%06x\n", RDDIDVal);
rempig 5:9cc383153bdb 175 }
rempig 5:9cc383153bdb 176
rempig 5:9cc383153bdb 177
rempig 5:9cc383153bdb 178 //====================================================
rempig 5:9cc383153bdb 179 void Command_Write(unsigned char REG,unsigned char VALUE) {
rempig 5:9cc383153bdb 180 Write_Command(REG);
rempig 5:9cc383153bdb 181 Write_Data(VALUE);
rempig 5:9cc383153bdb 182 }
rempig 5:9cc383153bdb 183 //======================================================
rempig 5:9cc383153bdb 184 void SendData(unsigned char datahi, unsigned char datalow) {
rempig 5:9cc383153bdb 185 //Write_Data((color)>>16); //red
rempig 5:9cc383153bdb 186 //Write_Data((color)>>8); //green
rempig 5:9cc383153bdb 187 Write_Data(datahi); //blue
rempig 5:9cc383153bdb 188 Write_Data(datalow); //blue
rempig 5:9cc383153bdb 189
rempig 5:9cc383153bdb 190 }
rempig 5:9cc383153bdb 191 //======================================================
rempig 5:9cc383153bdb 192 // initialize controller
rempig 5:9cc383153bdb 193 //======================================================
rempig 5:9cc383153bdb 194 void tianma_2p8_st7789vi_power_on() {
rempig 5:9cc383153bdb 195 wait_ms(100);
rempig 5:9cc383153bdb 196 Write_Command(0x01); //Software Reset
rempig 5:9cc383153bdb 197 wait_ms(1000);
rempig 5:9cc383153bdb 198
rempig 5:9cc383153bdb 199 Write_Command(0x11);
rempig 5:9cc383153bdb 200 wait_ms(120);
rempig 5:9cc383153bdb 201 Write_Command(0x36);
rempig 5:9cc383153bdb 202 Write_Data(0x00);
rempig 5:9cc383153bdb 203 Write_Command(0x3a);
rempig 5:9cc383153bdb 204 Write_Data(0x55);
rempig 5:9cc383153bdb 205 /*----------------------------ST7789S Frame rate setting---------------------------------*/
rempig 5:9cc383153bdb 206 Write_Command(0xb2);
rempig 5:9cc383153bdb 207 Write_Data(0x0c);
rempig 5:9cc383153bdb 208 Write_Data(0x0c);
rempig 5:9cc383153bdb 209 Write_Data(0x00);
rempig 5:9cc383153bdb 210 Write_Data(0x33);
rempig 5:9cc383153bdb 211 Write_Data(0x33);
rempig 5:9cc383153bdb 212 Write_Command(0xb7);
rempig 5:9cc383153bdb 213 Write_Data(0x35);
rempig 5:9cc383153bdb 214 /*-----------------------------ST7789S Power setting-------------------------------------*/
rempig 5:9cc383153bdb 215 Write_Command(0xbb);
rempig 5:9cc383153bdb 216 Write_Data(0x19);
rempig 5:9cc383153bdb 217 Write_Command(0xc0);
rempig 5:9cc383153bdb 218 Write_Data(0x2c);
rempig 5:9cc383153bdb 219 Write_Command(0xc2);
rempig 5:9cc383153bdb 220 Write_Data(0x01);
rempig 5:9cc383153bdb 221 Write_Command(0xc3);
rempig 5:9cc383153bdb 222 Write_Data(0x1d);
rempig 5:9cc383153bdb 223 Write_Command(0xc4);
rempig 5:9cc383153bdb 224 Write_Data(0x20);
rempig 5:9cc383153bdb 225 Write_Command(0xc6);
rempig 5:9cc383153bdb 226 Write_Data(0x0f);
rempig 5:9cc383153bdb 227 Write_Command(0xd0);
rempig 5:9cc383153bdb 228 Write_Data(0xa4);
rempig 5:9cc383153bdb 229 Write_Data(0xa1);
rempig 5:9cc383153bdb 230 /*----------------------------ST7789S gamma setting--------------------------------------*/
rempig 5:9cc383153bdb 231 Write_Command(0xe0);
rempig 5:9cc383153bdb 232 Write_Data(0xdb);
rempig 5:9cc383153bdb 233 Write_Data(0x1b);
rempig 5:9cc383153bdb 234 Write_Data(0x1d);
rempig 5:9cc383153bdb 235 Write_Data(0x0f);
rempig 5:9cc383153bdb 236 Write_Data(0x0f);
rempig 5:9cc383153bdb 237 Write_Data(0x3a);
rempig 5:9cc383153bdb 238 Write_Data(0x3e);
rempig 5:9cc383153bdb 239 Write_Data(0x45);
rempig 5:9cc383153bdb 240 Write_Data(0x4d);
rempig 5:9cc383153bdb 241 Write_Data(0x1c);
rempig 5:9cc383153bdb 242 Write_Data(0x16);
rempig 5:9cc383153bdb 243 Write_Data(0x15);
rempig 5:9cc383153bdb 244 Write_Data(0x1d);
rempig 5:9cc383153bdb 245 Write_Data(0x21);
rempig 5:9cc383153bdb 246 Write_Command(0xe1);
rempig 5:9cc383153bdb 247 Write_Data(0xdb);
rempig 5:9cc383153bdb 248 Write_Data(0x1b);
rempig 5:9cc383153bdb 249 Write_Data(0x1d);
rempig 5:9cc383153bdb 250 Write_Data(0x0f);
rempig 5:9cc383153bdb 251 Write_Data(0x0f);
rempig 5:9cc383153bdb 252 Write_Data(0x3a);
rempig 5:9cc383153bdb 253 Write_Data(0x3e);
rempig 5:9cc383153bdb 254 Write_Data(0x45);
rempig 5:9cc383153bdb 255 Write_Data(0x4d);
rempig 5:9cc383153bdb 256 Write_Data(0x1c);
rempig 5:9cc383153bdb 257 Write_Data(0x16);
rempig 5:9cc383153bdb 258 Write_Data(0x15);
rempig 5:9cc383153bdb 259 Write_Data(0x1d);
rempig 5:9cc383153bdb 260 Write_Data(0x21);
rempig 5:9cc383153bdb 261 /*-----------------------------ST7789S Display ON--------------------------------------*/
rempig 5:9cc383153bdb 262 Write_Command(0x29);
rempig 5:9cc383153bdb 263 wait_ms(50);
rempig 5:9cc383153bdb 264 };
rempig 5:9cc383153bdb 265
rempig 5:9cc383153bdb 266 void yeebo_st7789v_power_on() {
rempig 5:9cc383153bdb 267 wait_ms(100);
rempig 5:9cc383153bdb 268 Write_Command(0x01); //Software Reset
rempig 5:9cc383153bdb 269 wait_ms(1000);
rempig 5:9cc383153bdb 270
rempig 5:9cc383153bdb 271 Write_Command(0x11);
rempig 5:9cc383153bdb 272 wait_ms(120);
rempig 5:9cc383153bdb 273 Write_Command(0x36);
rempig 5:9cc383153bdb 274 Write_Data(0x00);
rempig 5:9cc383153bdb 275 Write_Command(0x3a);
rempig 5:9cc383153bdb 276 Write_Data(0x55);
rempig 5:9cc383153bdb 277 //----------------------------ST7789S Frame rate //setting----------------------------------//
rempig 5:9cc383153bdb 278 Write_Command(0xb2);
rempig 5:9cc383153bdb 279 Write_Data(0x0c);
rempig 5:9cc383153bdb 280 Write_Data(0x0c);
rempig 5:9cc383153bdb 281 Write_Data(0x00);
rempig 5:9cc383153bdb 282 Write_Data(0x33);
rempig 5:9cc383153bdb 283 Write_Data(0x33);
rempig 5:9cc383153bdb 284 Write_Command(0xb7);
rempig 5:9cc383153bdb 285 Write_Data(0x35);
rempig 5:9cc383153bdb 286 //-----------------------------ST7789S Power //setting--------------------------------------//
rempig 5:9cc383153bdb 287 Write_Command(0xbb);
rempig 5:9cc383153bdb 288 Write_Data(0x28);
rempig 5:9cc383153bdb 289 Write_Command(0xc0);
rempig 5:9cc383153bdb 290 Write_Data(0x2c);
rempig 5:9cc383153bdb 291 Write_Command(0xc2);
rempig 5:9cc383153bdb 292 Write_Data(0x01);
rempig 5:9cc383153bdb 293 Write_Command(0xc3);
rempig 5:9cc383153bdb 294 Write_Data(0x10);
rempig 5:9cc383153bdb 295 Write_Command(0xc4);
rempig 5:9cc383153bdb 296 Write_Data(0x20);
rempig 5:9cc383153bdb 297 Write_Command(0xc6);
rempig 5:9cc383153bdb 298 Write_Data(0x0f);
rempig 5:9cc383153bdb 299 Write_Command(0xd0);
rempig 5:9cc383153bdb 300 Write_Data(0xa4);
rempig 5:9cc383153bdb 301 Write_Data(0xa1);
rempig 5:9cc383153bdb 302 //----------------------------ST7789S gamma //setting---------------------------------------//
rempig 5:9cc383153bdb 303 Write_Command(0xe0);
rempig 5:9cc383153bdb 304 Write_Data(0xd0);
rempig 5:9cc383153bdb 305 Write_Data(0x00);
rempig 5:9cc383153bdb 306 Write_Data(0x02);
rempig 5:9cc383153bdb 307 Write_Data(0x07);
rempig 5:9cc383153bdb 308 Write_Data(0x0a);
rempig 5:9cc383153bdb 309 Write_Data(0x28);
rempig 5:9cc383153bdb 310 Write_Data(0x32);
rempig 5:9cc383153bdb 311 Write_Data(0x44);
rempig 5:9cc383153bdb 312 Write_Data(0x42);
rempig 5:9cc383153bdb 313 Write_Data(0x06);
rempig 5:9cc383153bdb 314 Write_Data(0x0e);
rempig 5:9cc383153bdb 315 Write_Data(0x12);
rempig 5:9cc383153bdb 316 Write_Data(0x14);
rempig 5:9cc383153bdb 317 Write_Data(0x17);
rempig 5:9cc383153bdb 318 Write_Command(0xe1);
rempig 5:9cc383153bdb 319 Write_Data(0xd0);
rempig 5:9cc383153bdb 320 Write_Data(0x00);
rempig 5:9cc383153bdb 321 Write_Data(0x02);
rempig 5:9cc383153bdb 322 Write_Data(0x07);
rempig 5:9cc383153bdb 323 Write_Data(0x0a);
rempig 5:9cc383153bdb 324 Write_Data(0x28);
rempig 5:9cc383153bdb 325 Write_Data(0x31);
rempig 5:9cc383153bdb 326 Write_Data(0x54);
rempig 5:9cc383153bdb 327 Write_Data(0x47);
rempig 5:9cc383153bdb 328 Write_Data(0x0e);
rempig 5:9cc383153bdb 329 Write_Data(0x1c);
rempig 5:9cc383153bdb 330 Write_Data(0x17);
rempig 5:9cc383153bdb 331 Write_Data(0x1b);
rempig 5:9cc383153bdb 332 Write_Data(0x1e);
rempig 5:9cc383153bdb 333 /*-----------------------------ST7789S Display ON--------------------------------------*/
rempig 5:9cc383153bdb 334 Write_Command(0x29);
rempig 5:9cc383153bdb 335 wait_ms(50);
rempig 5:9cc383153bdb 336 };
rempig 5:9cc383153bdb 337
rempig 5:9cc383153bdb 338
rempig 5:9cc383153bdb 339 void Init_SSD1963 (void) {
rempig 5:9cc383153bdb 340 wait_ms(100);
rempig 5:9cc383153bdb 341 Write_Command(0x01); //Software Reset
rempig 5:9cc383153bdb 342 wait_ms(1000);
rempig 5:9cc383153bdb 343
rempig 5:9cc383153bdb 344 Write_Command(0x11);
rempig 5:9cc383153bdb 345 wait_ms(120);
rempig 5:9cc383153bdb 346 Write_Command(0x36);
rempig 5:9cc383153bdb 347 Write_Data(0x00);
rempig 5:9cc383153bdb 348 Write_Command(0x3a);
rempig 5:9cc383153bdb 349 Write_Data(0x55);
rempig 5:9cc383153bdb 350 Write_Command(0xb2);
rempig 5:9cc383153bdb 351 Write_Data(0x0c);
rempig 5:9cc383153bdb 352 Write_Data(0x0c);
rempig 5:9cc383153bdb 353 Write_Data(0x00);
rempig 5:9cc383153bdb 354 Write_Data(0x33);
rempig 5:9cc383153bdb 355 Write_Data(0x33);
rempig 5:9cc383153bdb 356 Write_Command(0xb7);
rempig 5:9cc383153bdb 357 Write_Data(0x35);
rempig 5:9cc383153bdb 358 Write_Command(0xbb);
rempig 5:9cc383153bdb 359 Write_Data(0x19);
rempig 5:9cc383153bdb 360 Write_Command(0xc0);
rempig 5:9cc383153bdb 361 Write_Data(0x2c);
rempig 5:9cc383153bdb 362 Write_Command(0xc2);
rempig 5:9cc383153bdb 363 Write_Data(0x01);
rempig 5:9cc383153bdb 364 Write_Command(0xc3);
rempig 5:9cc383153bdb 365 Write_Data(0x1d);
rempig 5:9cc383153bdb 366 Write_Command(0xc4);
rempig 5:9cc383153bdb 367 Write_Data(0x20);
rempig 5:9cc383153bdb 368 Write_Command(0xc6);
rempig 5:9cc383153bdb 369 Write_Data(0x0f);
rempig 5:9cc383153bdb 370 Write_Command(0xd0);
rempig 5:9cc383153bdb 371 Write_Data(0xa4);
rempig 5:9cc383153bdb 372 Write_Data(0xa1);
rempig 5:9cc383153bdb 373 Write_Command(0xe0);
rempig 5:9cc383153bdb 374 Write_Data(0xdb);
rempig 5:9cc383153bdb 375 Write_Data(0x1b);
rempig 5:9cc383153bdb 376 Write_Data(0x1d);
rempig 5:9cc383153bdb 377 Write_Data(0x0f);
rempig 5:9cc383153bdb 378 Write_Data(0x0f);
rempig 5:9cc383153bdb 379 Write_Data(0x3a);
rempig 5:9cc383153bdb 380 Write_Data(0x3e);
rempig 5:9cc383153bdb 381 Write_Data(0x45);
rempig 5:9cc383153bdb 382 Write_Data(0x4d);
rempig 5:9cc383153bdb 383 Write_Data(0x1c);
rempig 5:9cc383153bdb 384 Write_Data(0x16);
rempig 5:9cc383153bdb 385 Write_Data(0x15);
rempig 5:9cc383153bdb 386 Write_Data(0x1d);
rempig 5:9cc383153bdb 387 Write_Data(0x21);
rempig 5:9cc383153bdb 388 Write_Command(0xe1);
rempig 5:9cc383153bdb 389 Write_Data(0xdb);
rempig 5:9cc383153bdb 390 Write_Data(0x1b);
rempig 5:9cc383153bdb 391 Write_Data(0x1d);
rempig 5:9cc383153bdb 392 Write_Data(0x0f);
rempig 5:9cc383153bdb 393 Write_Data(0x0f);
rempig 5:9cc383153bdb 394 Write_Data(0x3a);
rempig 5:9cc383153bdb 395 Write_Data(0x3e);
rempig 5:9cc383153bdb 396 Write_Data(0x45);
rempig 5:9cc383153bdb 397 Write_Data(0x4d);
rempig 5:9cc383153bdb 398 Write_Data(0x1c);
rempig 5:9cc383153bdb 399 Write_Data(0x16);
rempig 5:9cc383153bdb 400 Write_Data(0x15);
rempig 5:9cc383153bdb 401 Write_Data(0x1d);
rempig 5:9cc383153bdb 402 Write_Data(0x21);
rempig 5:9cc383153bdb 403 Write_Command(0x29);
rempig 5:9cc383153bdb 404 wait_ms(50);
rempig 5:9cc383153bdb 405 }
rempig 5:9cc383153bdb 406
rempig 5:9cc383153bdb 407 void ChecksumCalculation(unsigned short *pChecksum,unsigned char *pInData,unsigned long Len)
rempig 5:9cc383153bdb 408 {
rempig 5:9cc383153bdb 409 unsigned long i;
rempig 5:9cc383153bdb 410 for(i = 0; i < Len; i++)
rempig 5:9cc383153bdb 411 {
rempig 5:9cc383153bdb 412 *pChecksum += (unsigned short)pInData[i];
rempig 5:9cc383153bdb 413 LowByteChecksum = (unsigned char)(*pChecksum & 0xFF);
rempig 5:9cc383153bdb 414 LowByteChecksum = (LowByteChecksum) >> 7 | (LowByteChecksum) << 1;
rempig 5:9cc383153bdb 415 *pChecksum = (*pChecksum & 0xFF00) | LowByteChecksum;
rempig 5:9cc383153bdb 416 }
rempig 5:9cc383153bdb 417 }
rempig 5:9cc383153bdb 418
rempig 5:9cc383153bdb 419 void RefreshScreen() {
rempig 5:9cc383153bdb 420 //unsigned char x,y;
rempig 5:9cc383153bdb 421 int x = 0;
rempig 5:9cc383153bdb 422 int y = 0;
rempig 5:9cc383153bdb 423 Write_Command(0x2c);
rempig 5:9cc383153bdb 424
rempig 5:9cc383153bdb 425 for (x=0;x<=320;x++) {
rempig 5:9cc383153bdb 426 for (y=0;y<=240;y++) {
rempig 5:9cc383153bdb 427 if (y<80) {
rempig 5:9cc383153bdb 428 SendData(0xF8,0x00);
rempig 5:9cc383153bdb 429 } else if (y<160) {
rempig 5:9cc383153bdb 430 SendData(0x07,(0xE0));
rempig 5:9cc383153bdb 431 } else if (y<240) {
rempig 5:9cc383153bdb 432 SendData((0x00),(0x1F));
rempig 5:9cc383153bdb 433 }
rempig 5:9cc383153bdb 434 }
rempig 5:9cc383153bdb 435 }
rempig 5:9cc383153bdb 436 }
rempig 5:9cc383153bdb 437
rempig 5:9cc383153bdb 438 void SendBlack() {
rempig 5:9cc383153bdb 439 //unsigned char x,y;
rempig 5:9cc383153bdb 440 int x = 0;
rempig 5:9cc383153bdb 441 int y = 0;
rempig 5:9cc383153bdb 442 Write_Command(0x2c);
rempig 5:9cc383153bdb 443
rempig 5:9cc383153bdb 444 for (x=0;x<=320;x++) {
rempig 5:9cc383153bdb 445 for (y=0;y<=240;y++) {
rempig 5:9cc383153bdb 446 SendData(0x00,0x00);
rempig 5:9cc383153bdb 447 }
rempig 5:9cc383153bdb 448 }
rempig 5:9cc383153bdb 449 }
rempig 5:9cc383153bdb 450
rempig 5:9cc383153bdb 451 void SendWhite() {
rempig 5:9cc383153bdb 452 //unsigned char x,y;
rempig 5:9cc383153bdb 453 int x = 0;
rempig 5:9cc383153bdb 454 int y = 0;
rempig 5:9cc383153bdb 455 Write_Command(0x2c);
rempig 5:9cc383153bdb 456 for (x=0;x<=320;x++) {
rempig 5:9cc383153bdb 457 for (y=0;y<=240;y++) {
rempig 5:9cc383153bdb 458 SendData(0xFF,0xFF);
rempig 5:9cc383153bdb 459 }
rempig 5:9cc383153bdb 460 }
rempig 5:9cc383153bdb 461 }
rempig 5:9cc383153bdb 462
rempig 5:9cc383153bdb 463 void ControlLED(int LedAddress, int LedMode) {
rempig 5:9cc383153bdb 464 char i2cd[3];
rempig 5:9cc383153bdb 465
rempig 5:9cc383153bdb 466 i2cd[0] = 0x01;
rempig 5:9cc383153bdb 467 i2cd[1] = LedAddress;
rempig 5:9cc383153bdb 468 i2cd[2] = LedMode;
rempig 5:9cc383153bdb 469
rempig 5:9cc383153bdb 470 i2c.start();
rempig 5:9cc383153bdb 471 i2c.write((addr1 << 1), i2cd, 3, false);
rempig 5:9cc383153bdb 472 i2c.stop();
rempig 5:9cc383153bdb 473
rempig 5:9cc383153bdb 474 wait_ms(100);
rempig 5:9cc383153bdb 475
rempig 5:9cc383153bdb 476 i2cd[0] = 0x01;
rempig 5:9cc383153bdb 477 i2cd[1] = LedAddress + 1;
rempig 5:9cc383153bdb 478 i2cd[2] = 0xAF;
rempig 5:9cc383153bdb 479
rempig 5:9cc383153bdb 480 i2c.start();
rempig 5:9cc383153bdb 481 i2c.write((addr1 << 1), i2cd, 3, false);
rempig 5:9cc383153bdb 482 i2c.stop();
rempig 5:9cc383153bdb 483 wait_ms(100);
rempig 5:9cc383153bdb 484 }
rempig 5:9cc383153bdb 485
rempig 5:9cc383153bdb 486 void FeedbackTouch(bool touchCorrect) {
rempig 5:9cc383153bdb 487 if (touchCorrect) {
rempig 5:9cc383153bdb 488 ControlLED(0x40, 0x08);
rempig 5:9cc383153bdb 489 ControlLED(0x42, 0x00);
rempig 5:9cc383153bdb 490 } else {
rempig 5:9cc383153bdb 491 ControlLED(0x40, 0x00);
rempig 5:9cc383153bdb 492 ControlLED(0x42, 0x08);
rempig 5:9cc383153bdb 493 }
rempig 5:9cc383153bdb 494 }
rempig 5:9cc383153bdb 495
rempig 5:9cc383153bdb 496
rempig 5:9cc383153bdb 497 void RefreshScreenGood() {
rempig 5:9cc383153bdb 498 //unsigned char x,y;
rempig 5:9cc383153bdb 499 int x = 0;
rempig 5:9cc383153bdb 500 int y = 0;
rempig 5:9cc383153bdb 501 Write_Command(0x2c);
rempig 5:9cc383153bdb 502
rempig 5:9cc383153bdb 503 for (x=0;x<=320;x++) {
rempig 5:9cc383153bdb 504 for (y=0;y<=240;y++) {
rempig 5:9cc383153bdb 505 SendData(0x07,(0xE0));
rempig 5:9cc383153bdb 506 }
rempig 5:9cc383153bdb 507 }
rempig 5:9cc383153bdb 508 }
rempig 5:9cc383153bdb 509
rempig 5:9cc383153bdb 510 //LCD*********************************************************
rempig 5:9cc383153bdb 511
rempig 5:9cc383153bdb 512 void initsetup() {
rempig 5:9cc383153bdb 513 // Wire.begin(); // join i2c bus (address optional for master)
rempig 5:9cc383153bdb 514 pc.baud(115200);
rempig 5:9cc383153bdb 515 powerPanel = 0;
rempig 5:9cc383153bdb 516 }
rempig 5:9cc383153bdb 517
rempig 5:9cc383153bdb 518
rempig 5:9cc383153bdb 519 void WaitISP() {
rempig 5:9cc383153bdb 520 //ISP ready
rempig 5:9cc383153bdb 521 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 522 int ispready=0;
rempig 5:9cc383153bdb 523 bool onceOnly = false;
rempig 5:9cc383153bdb 524 while ((ispready!=0x8F)) {
rempig 5:9cc383153bdb 525 i2c.start();
rempig 5:9cc383153bdb 526 i2c.write(addrsht);
rempig 5:9cc383153bdb 527 i2c.read(addrsht,ISPRdy, 8);
rempig 5:9cc383153bdb 528 ispready = ISPRdy[0];
rempig 5:9cc383153bdb 529 i2c.stop();
rempig 5:9cc383153bdb 530 if (!onceOnly) {
rempig 5:9cc383153bdb 531 printf("ISP Ready Byte 0 : ");
rempig 5:9cc383153bdb 532 printf("0x%02x\n", ispready);
rempig 5:9cc383153bdb 533 }
rempig 5:9cc383153bdb 534 onceOnly =true;
rempig 5:9cc383153bdb 535 wait_ms(400);
rempig 5:9cc383153bdb 536
rempig 5:9cc383153bdb 537 }
rempig 5:9cc383153bdb 538 wait_ms(100);
rempig 5:9cc383153bdb 539 }
rempig 5:9cc383153bdb 540
rempig 5:9cc383153bdb 541 void ReadMem() {
rempig 5:9cc383153bdb 542 //ISP ready
rempig 5:9cc383153bdb 543 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 544 char ISPRead[8];
rempig 5:9cc383153bdb 545 pc.printf("Initializing\r\n");
rempig 5:9cc383153bdb 546 fp = fopen("/sd/dump.bin", "r");
rempig 5:9cc383153bdb 547 if (fp != NULL) {
rempig 5:9cc383153bdb 548 fclose(fp);
rempig 5:9cc383153bdb 549 remove("/sd/dump.bin");
rempig 5:9cc383153bdb 550 //pc.printf("Remove an existing file with the same name\r\n");
rempig 5:9cc383153bdb 551 }
rempig 5:9cc383153bdb 552
rempig 5:9cc383153bdb 553 fp = fopen("/sd/dump.bin", "w");
rempig 5:9cc383153bdb 554 if (fp == NULL) {
rempig 5:9cc383153bdb 555 pc.printf("Unable to write the file\r\n");
rempig 5:9cc383153bdb 556 } else {
rempig 5:9cc383153bdb 557
rempig 5:9cc383153bdb 558 for (int x=0;x<0x0F;x++) {
rempig 5:9cc383153bdb 559 i2c.start();
rempig 5:9cc383153bdb 560 i2c.write(addrsht);
rempig 5:9cc383153bdb 561 i2c.write(0x83);
rempig 5:9cc383153bdb 562 i2c.write(0x00);
rempig 5:9cc383153bdb 563 i2c.write(x);
rempig 5:9cc383153bdb 564 i2c.write(0x00);
rempig 5:9cc383153bdb 565 i2c.write(0x00);
rempig 5:9cc383153bdb 566 i2c.write(0x00);
rempig 5:9cc383153bdb 567 i2c.write(0x00);
rempig 5:9cc383153bdb 568 i2c.write(0x00);
rempig 5:9cc383153bdb 569 i2c.stop();
rempig 5:9cc383153bdb 570 wait_ms(50);
rempig 5:9cc383153bdb 571 for (int j=0;j<128;j++) {
rempig 5:9cc383153bdb 572 i2c.start();
rempig 5:9cc383153bdb 573 i2c.write(addrsht);
rempig 5:9cc383153bdb 574 for (int i=0;i<8;i++) {
rempig 5:9cc383153bdb 575 i2c.read(addrsht,ISPRead, 8);
rempig 5:9cc383153bdb 576
rempig 5:9cc383153bdb 577 fwrite(ISPRead, 1, 8, fp);
rempig 5:9cc383153bdb 578 for (int y = 0; y < 8; y++)
rempig 5:9cc383153bdb 579 {
rempig 5:9cc383153bdb 580 printf("%02X\r\n", ISPRead[y]);
rempig 5:9cc383153bdb 581 }
rempig 5:9cc383153bdb 582 }
rempig 5:9cc383153bdb 583 i2c.stop();
rempig 5:9cc383153bdb 584 }
rempig 5:9cc383153bdb 585 }
rempig 5:9cc383153bdb 586 // pc.printf("File successfully written!\r\n");
rempig 5:9cc383153bdb 587 fclose(fp);
rempig 5:9cc383153bdb 588 }
rempig 5:9cc383153bdb 589
rempig 5:9cc383153bdb 590 wait_ms(100);
rempig 5:9cc383153bdb 591 }
rempig 5:9cc383153bdb 592
rempig 5:9cc383153bdb 593 void ISPUnlock() {
rempig 5:9cc383153bdb 594 //unlock
rempig 5:9cc383153bdb 595 i2c.start();
rempig 5:9cc383153bdb 596 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 597 i2c.write(0x87);
rempig 5:9cc383153bdb 598 i2c.write(0x00);
rempig 5:9cc383153bdb 599 i2c.write(0x00);
rempig 5:9cc383153bdb 600 i2c.write(0x00);
rempig 5:9cc383153bdb 601 i2c.write(0x00);
rempig 5:9cc383153bdb 602 i2c.write(0x00);
rempig 5:9cc383153bdb 603 i2c.write(0x00);
rempig 5:9cc383153bdb 604 i2c.write(0x00);
rempig 5:9cc383153bdb 605 i2c.stop();
rempig 5:9cc383153bdb 606 wait_ms(150);
rempig 5:9cc383153bdb 607 }
rempig 5:9cc383153bdb 608
rempig 5:9cc383153bdb 609 void ISPReset() {
rempig 5:9cc383153bdb 610 //reset
rempig 5:9cc383153bdb 611 i2c.start();
rempig 5:9cc383153bdb 612 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 613 i2c.write(0x84);
rempig 5:9cc383153bdb 614 i2c.write(0x00);
rempig 5:9cc383153bdb 615 i2c.write(0x00);
rempig 5:9cc383153bdb 616 i2c.write(0x00);
rempig 5:9cc383153bdb 617 i2c.write(0x00);
rempig 5:9cc383153bdb 618 i2c.write(0x00);
rempig 5:9cc383153bdb 619 i2c.write(0x00);
rempig 5:9cc383153bdb 620 i2c.write(0x00);
rempig 5:9cc383153bdb 621 i2c.stop();
rempig 5:9cc383153bdb 622 }
rempig 5:9cc383153bdb 623
rempig 5:9cc383153bdb 624
rempig 5:9cc383153bdb 625 void ISPMassErase() {
rempig 5:9cc383153bdb 626 //mass erase
rempig 5:9cc383153bdb 627 i2c.start();
rempig 5:9cc383153bdb 628 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 629 i2c.write(0x86);
rempig 5:9cc383153bdb 630 i2c.write(0x00);
rempig 5:9cc383153bdb 631 i2c.write(0x10);
rempig 5:9cc383153bdb 632 i2c.write(0x00);
rempig 5:9cc383153bdb 633 i2c.write(0x00);
rempig 5:9cc383153bdb 634 i2c.write(0x00);
rempig 5:9cc383153bdb 635 i2c.write(0x00);
rempig 5:9cc383153bdb 636 i2c.write(0x00);
rempig 5:9cc383153bdb 637 i2c.stop();
rempig 5:9cc383153bdb 638 }
rempig 5:9cc383153bdb 639
rempig 5:9cc383153bdb 640
rempig 5:9cc383153bdb 641 int writeI2CSitronix(int address, char i2cWrite[], int wLen) {
rempig 5:9cc383153bdb 642 i2c.start();
rempig 5:9cc383153bdb 643 int error = i2c.write(address, i2cWrite, wLen);
rempig 5:9cc383153bdb 644 i2c.stop();
rempig 5:9cc383153bdb 645 return error;
rempig 5:9cc383153bdb 646 }
rempig 5:9cc383153bdb 647
rempig 5:9cc383153bdb 648
rempig 5:9cc383153bdb 649 int writeByteI2CSitronix(int address, char i2cWByte) {
rempig 5:9cc383153bdb 650 i2c.start();
rempig 5:9cc383153bdb 651 i2c.write(address);
rempig 5:9cc383153bdb 652 i2c.write(0x01);
rempig 5:9cc383153bdb 653 i2c.stop();
rempig 5:9cc383153bdb 654 }
rempig 5:9cc383153bdb 655
rempig 5:9cc383153bdb 656
screamer 0:525c842a3c89 657 int main() {
rempig 5:9cc383153bdb 658 buttonNext.mode(PullUp);
rempig 5:9cc383153bdb 659 initsetup();
rempig 5:9cc383153bdb 660 char i2cd[3];
rempig 5:9cc383153bdb 661
rempig 5:9cc383153bdb 662 //char i2cwr[2];
rempig 5:9cc383153bdb 663 int i2cr = 0x00;
rempig 5:9cc383153bdb 664
rempig 5:9cc383153bdb 665 int i2crkey = 0x00;
rempig 5:9cc383153bdb 666 int i2crxhi = 0x00;
rempig 5:9cc383153bdb 667 int i2cryhi = 0x00;
rempig 5:9cc383153bdb 668 int i2crxlo = 0x00;
rempig 5:9cc383153bdb 669 int i2crylo = 0x00;
rempig 5:9cc383153bdb 670
rempig 5:9cc383153bdb 671 int i2crx = 0x00;
rempig 5:9cc383153bdb 672 int i2cry = 0x00;
rempig 5:9cc383153bdb 673
rempig 5:9cc383153bdb 674 int databin = 0x00;
rempig 5:9cc383153bdb 675 unsigned char datalo;
rempig 5:9cc383153bdb 676 unsigned char datahi;
rempig 5:9cc383153bdb 677 //i2c.frequency(100000);
rempig 5:9cc383153bdb 678 while (1) {
rempig 5:9cc383153bdb 679 switch (STATEMACHINE) {
rempig 5:9cc383153bdb 680 case IDLESTATE: //Wait for start from the computer
rempig 5:9cc383153bdb 681 printf("IDLE\n");
rempig 5:9cc383153bdb 682 powerPanel = 0;
rempig 5:9cc383153bdb 683
rempig 5:9cc383153bdb 684 addr1 = 0;
rempig 5:9cc383153bdb 685 addr2 = 0;
rempig 5:9cc383153bdb 686 STATEMACHINE = POWERON;
rempig 5:9cc383153bdb 687 addr1 = 0;
rempig 5:9cc383153bdb 688 break;
rempig 5:9cc383153bdb 689
rempig 5:9cc383153bdb 690 case POWERON: //power on the panel
rempig 5:9cc383153bdb 691 printf("POWERON\n");
rempig 5:9cc383153bdb 692 powerPanel = 1;
rempig 5:9cc383153bdb 693 STATEMACHINE = GETADDRESS;
rempig 5:9cc383153bdb 694 break;
rempig 5:9cc383153bdb 695
rempig 5:9cc383153bdb 696 case GETADDRESS: //get panel button address from software
rempig 5:9cc383153bdb 697 STATEMACHINE = GOTOAPP;
rempig 5:9cc383153bdb 698 addr1 = 44;
rempig 5:9cc383153bdb 699 addr2 = 85;
rempig 5:9cc383153bdb 700 wait_ms(100);
rempig 5:9cc383153bdb 701 break;
rempig 5:9cc383153bdb 702
rempig 5:9cc383153bdb 703 case GOTOAPP: //Reset the panel
rempig 5:9cc383153bdb 704 //POR timing fixer
rempig 5:9cc383153bdb 705 printf("GOTOAPP\n");
rempig 5:9cc383153bdb 706 powerPanel = 0;
rempig 5:9cc383153bdb 707 wait_ms(2000);
rempig 5:9cc383153bdb 708 printf("GOTOAPPDONE1\n");
rempig 5:9cc383153bdb 709
rempig 5:9cc383153bdb 710 powerPanel = 1;
rempig 5:9cc383153bdb 711 wait_ms(1500);
rempig 5:9cc383153bdb 712 printf("GOTOAPPDONE2\n");
rempig 5:9cc383153bdb 713
rempig 5:9cc383153bdb 714 STATEMACHINE = UIBC5VENB;
rempig 5:9cc383153bdb 715 break;
rempig 5:9cc383153bdb 716
rempig 5:9cc383153bdb 717
rempig 5:9cc383153bdb 718 case UIBC5VENB: //power on the panel
rempig 5:9cc383153bdb 719 //char i2cd[3];
rempig 5:9cc383153bdb 720
rempig 5:9cc383153bdb 721 i2cd[0] = 0x01;
rempig 5:9cc383153bdb 722 i2cd[1] = 0x06;
rempig 5:9cc383153bdb 723 i2cd[2] = 0xFF;
rempig 5:9cc383153bdb 724
rempig 5:9cc383153bdb 725 i2c.start();
rempig 5:9cc383153bdb 726 i2c.write((addr1 << 1), i2cd, 3, false);
rempig 5:9cc383153bdb 727 i2c.stop();
rempig 5:9cc383153bdb 728
rempig 5:9cc383153bdb 729 wait_ms(100);
rempig 5:9cc383153bdb 730 RDDID_Read(0x04); //Read RDDID
rempig 5:9cc383153bdb 731
rempig 5:9cc383153bdb 732 STATEMACHINE = LED1CTRL;
rempig 5:9cc383153bdb 733 //STATEMACHINE = FWUPDATE;
rempig 5:9cc383153bdb 734
screamer 1:93d41c73ac7d 735 wait(2);
screamer 1:93d41c73ac7d 736 pc.printf("Initializing\r\n");
screamer 0:525c842a3c89 737 fp = fopen("/sd/hello.txt", "r");
screamer 0:525c842a3c89 738 if (fp != NULL) {
screamer 0:525c842a3c89 739 fclose(fp);
screamer 0:525c842a3c89 740 remove("/sd/hello.txt");
rempig 5:9cc383153bdb 741 //pc.printf("Remove an existing file with the same name\r\n");
screamer 0:525c842a3c89 742 }
rempig 5:9cc383153bdb 743
screamer 0:525c842a3c89 744 fp = fopen("/sd/hello.txt", "w");
screamer 0:525c842a3c89 745 if (fp == NULL) {
rempig 5:9cc383153bdb 746 // pc.printf("Unable to write the file\r\n");
screamer 0:525c842a3c89 747 } else {
screamer 0:525c842a3c89 748 fprintf(fp, "mbed SDCard application!");
screamer 0:525c842a3c89 749 fclose(fp);
rempig 5:9cc383153bdb 750 // pc.printf("File successfully written!\r\n");
screamer 0:525c842a3c89 751 }
rempig 5:9cc383153bdb 752 fclose(fp);
rempig 5:9cc383153bdb 753
rempig 5:9cc383153bdb 754
rempig 5:9cc383153bdb 755 break;
rempig 5:9cc383153bdb 756
rempig 5:9cc383153bdb 757
rempig 5:9cc383153bdb 758 case FWUPDATE:
rempig 5:9cc383153bdb 759 RDDID_Read(0x04); //Read RDDID
rempig 5:9cc383153bdb 760
rempig 5:9cc383153bdb 761 //Go to ISP mode
rempig 5:9cc383153bdb 762 char i2fwupdatemode[] = {0,'S',0,'T',0,'X',0,'_',0,'F',0,'W',0,'U',0,'P'};
rempig 5:9cc383153bdb 763
rempig 5:9cc383153bdb 764 //i2c.start();
rempig 5:9cc383153bdb 765 //i2c.write((addr2 << 1), i2fwupdatemode, 9);
rempig 5:9cc383153bdb 766 //i2c.stop();
rempig 5:9cc383153bdb 767
rempig 5:9cc383153bdb 768 for(int i=0;i<sizeof(i2fwupdatemode); i+=2) {
rempig 5:9cc383153bdb 769 //pc.printf("0x%02x\n", &i2fwupdatemode[i]);
rempig 5:9cc383153bdb 770 if(writeI2CSitronix((addr2 << 1), &i2fwupdatemode[i], 2) < 0)
rempig 5:9cc383153bdb 771 {
rempig 5:9cc383153bdb 772 pc.printf("Entering ISP fail.\n");
rempig 5:9cc383153bdb 773 goto done;
rempig 5:9cc383153bdb 774 }
rempig 5:9cc383153bdb 775 }
rempig 5:9cc383153bdb 776
rempig 5:9cc383153bdb 777 wait_ms(150);
rempig 5:9cc383153bdb 778
rempig 5:9cc383153bdb 779
rempig 5:9cc383153bdb 780 ISPReset();
rempig 5:9cc383153bdb 781 wait(1);
rempig 5:9cc383153bdb 782
rempig 5:9cc383153bdb 783 //REG_DEVICE_STATUS
rempig 5:9cc383153bdb 784
rempig 5:9cc383153bdb 785 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 786 i2c.start();
rempig 5:9cc383153bdb 787 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 788 i2c.write(0x01);
rempig 5:9cc383153bdb 789 i2c.stop();
rempig 5:9cc383153bdb 790 wait_ms(50);
rempig 5:9cc383153bdb 791 i2c.start();
rempig 5:9cc383153bdb 792 i2c.write(addrsht);
rempig 5:9cc383153bdb 793 i2c.read(addrsht,fwROM, 8);
rempig 5:9cc383153bdb 794 i2c.stop();
rempig 5:9cc383153bdb 795
rempig 5:9cc383153bdb 796 printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 797 printf("ROM Status : ");
rempig 5:9cc383153bdb 798 printf("0x%08x%08x\n\n", *(int *)(fwROM+4), *(int *)fwROM);
rempig 5:9cc383153bdb 799
rempig 5:9cc383153bdb 800 wait_ms(100);
rempig 5:9cc383153bdb 801
rempig 5:9cc383153bdb 802
rempig 5:9cc383153bdb 803 //Flash page erase
rempig 5:9cc383153bdb 804 for(int i=0;i<16; i++) {
rempig 5:9cc383153bdb 805
rempig 5:9cc383153bdb 806 pc.printf("Unlocking...\r\n");
rempig 5:9cc383153bdb 807 ISPUnlock();
rempig 5:9cc383153bdb 808
rempig 5:9cc383153bdb 809 //ISP ready
rempig 5:9cc383153bdb 810 WaitISP();
rempig 5:9cc383153bdb 811
rempig 5:9cc383153bdb 812 pc.printf("Erasing page 0x%x...\r\n", i);
rempig 5:9cc383153bdb 813 //erase
rempig 5:9cc383153bdb 814 i2c.start();
rempig 5:9cc383153bdb 815 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 816 i2c.write(0x80);
rempig 5:9cc383153bdb 817 i2c.write(0x00);
rempig 5:9cc383153bdb 818 i2c.write(i);
rempig 5:9cc383153bdb 819 i2c.write(0x00);
rempig 5:9cc383153bdb 820 i2c.write(0x00);
rempig 5:9cc383153bdb 821 i2c.write(0x00);
rempig 5:9cc383153bdb 822 i2c.write(0x00);
rempig 5:9cc383153bdb 823 i2c.write(0x00);
rempig 5:9cc383153bdb 824 i2c.stop();
rempig 5:9cc383153bdb 825 //wait(20);
rempig 5:9cc383153bdb 826 WaitISP();
rempig 5:9cc383153bdb 827 //wait(20);
rempig 5:9cc383153bdb 828 }
rempig 5:9cc383153bdb 829
rempig 5:9cc383153bdb 830 //******************************************PROGRAMSTART*****************************************************************
rempig 5:9cc383153bdb 831 //Flash Page Program
rempig 5:9cc383153bdb 832
rempig 5:9cc383153bdb 833 fName = "/sd/sitronix_sitronix_st16xx.LM28_v05110323_01_20181023.bin";
rempig 5:9cc383153bdb 834 pc.printf("Reading SD...\r\n");
rempig 5:9cc383153bdb 835 //Open File
rempig 5:9cc383153bdb 836 pc.printf("Initializing\r\n");
rempig 5:9cc383153bdb 837 wait(2);
rempig 5:9cc383153bdb 838 //pc.printf(" Opening %s\r\n","/sd/sitronix_sitronix_st16xx.LM28_v05110323_01_20181023.bin");
rempig 5:9cc383153bdb 839 pc.printf("Opening %s\r\n",fName);
rempig 5:9cc383153bdb 840 //fp = fopen("/sd/sitronix_sitronix_st16xx.LM28_v05110323_01_20181023.bin", "r");
rempig 5:9cc383153bdb 841 fp = fopen(fName, "r");
rempig 5:9cc383153bdb 842 if (fp == NULL) {
rempig 5:9cc383153bdb 843 fclose(fp);
rempig 5:9cc383153bdb 844 pc.printf("Error: File not found!\r\n");
rempig 5:9cc383153bdb 845 }
rempig 5:9cc383153bdb 846 pageNum = 0;
rempig 5:9cc383153bdb 847
rempig 5:9cc383153bdb 848 pc.printf("writing flash...\r\n");
rempig 5:9cc383153bdb 849
rempig 5:9cc383153bdb 850 while ((!feof(fp)) && (pageNum < 0x0F)) {
rempig 5:9cc383153bdb 851 //ISP_WRITE_FLASH (BIN)
rempig 5:9cc383153bdb 852 pc.printf("Unlocking...\r\n");
rempig 5:9cc383153bdb 853 ISPUnlock();
rempig 5:9cc383153bdb 854 WaitISP();
rempig 5:9cc383153bdb 855 pc.printf("Writing bin page 0x%02x...\r\n", pageNum);
rempig 5:9cc383153bdb 856
rempig 5:9cc383153bdb 857 i2c.start();
rempig 5:9cc383153bdb 858 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 859 i2c.write(0x82);
rempig 5:9cc383153bdb 860 i2c.write(0x00);
rempig 5:9cc383153bdb 861 i2c.write(pageNum);
rempig 5:9cc383153bdb 862 i2c.write(0x00);
rempig 5:9cc383153bdb 863 i2c.write(0x00);
rempig 5:9cc383153bdb 864 i2c.write(0x00);
rempig 5:9cc383153bdb 865 i2c.write(0x00);
rempig 5:9cc383153bdb 866 i2c.write(0x00);
rempig 5:9cc383153bdb 867 i2c.stop();
rempig 5:9cc383153bdb 868 wait_ms(50);
rempig 5:9cc383153bdb 869 int cntByteLen = 7;
rempig 5:9cc383153bdb 870 //ISP_WRITE_DATA (BIN)
rempig 5:9cc383153bdb 871 //open bin file
rempig 5:9cc383153bdb 872 cntWrite = 0;
rempig 5:9cc383153bdb 873
rempig 5:9cc383153bdb 874 while ((cntWrite < 147)) { //page loop
rempig 5:9cc383153bdb 875 i2c.start();
rempig 5:9cc383153bdb 876 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 877 i2c.write(0x81);
rempig 5:9cc383153bdb 878 cntbytes = 0;
rempig 5:9cc383153bdb 879 wait_ms(50);
rempig 5:9cc383153bdb 880 cntByteLen = 7;
rempig 5:9cc383153bdb 881 while ((cntbytes < cntByteLen) && (((cntWrite*7)+(cntbytes)) < 1024)) { //write data loop
rempig 5:9cc383153bdb 882 databin = fgetc(fp);
rempig 5:9cc383153bdb 883 //wait(1);
rempig 5:9cc383153bdb 884 // if (databin == 0xffffffff) {
rempig 5:9cc383153bdb 885 // pc.printf("Printing FF\r\n");
rempig 5:9cc383153bdb 886 // i2c.write(0xFF);
rempig 5:9cc383153bdb 887 // } else {
rempig 5:9cc383153bdb 888 i2c.write(databin);
rempig 5:9cc383153bdb 889 // }
rempig 5:9cc383153bdb 890 cntbytes++;
rempig 5:9cc383153bdb 891 } //write data loop end
rempig 5:9cc383153bdb 892 i2c.stop();
rempig 5:9cc383153bdb 893 cntWrite++;
rempig 5:9cc383153bdb 894 wait_ms(50);
rempig 5:9cc383153bdb 895 } //page loop end
rempig 5:9cc383153bdb 896 wait_ms(150);
rempig 5:9cc383153bdb 897 WaitISP();
rempig 5:9cc383153bdb 898 pageNum++;
rempig 5:9cc383153bdb 899 }
rempig 5:9cc383153bdb 900 fclose(fp);
rempig 5:9cc383153bdb 901 //free(fp);
rempig 5:9cc383153bdb 902 //ISP_WRITE_FLASH (CFG)
rempig 5:9cc383153bdb 903 //open bin file
rempig 5:9cc383153bdb 904
rempig 5:9cc383153bdb 905 switch(RDDIDVal) {
rempig 5:9cc383153bdb 906 case 0x540000:
rempig 5:9cc383153bdb 907 fName = "540000.cfg";
rempig 5:9cc383153bdb 908 printf("Yeebo\r\n");
rempig 5:9cc383153bdb 909 break;
rempig 5:9cc383153bdb 910
rempig 5:9cc383153bdb 911 case 0x448552:
rempig 5:9cc383153bdb 912 fName = "448552.cfg";
rempig 5:9cc383153bdb 913 printf("Tianma1\r\n");
rempig 5:9cc383153bdb 914 break;
rempig 5:9cc383153bdb 915
rempig 5:9cc383153bdb 916 case 0x468552:
rempig 5:9cc383153bdb 917 fName = "468552.cfg";
rempig 5:9cc383153bdb 918 printf("Tianma2\r\n");
rempig 5:9cc383153bdb 919 break;
rempig 5:9cc383153bdb 920
rempig 5:9cc383153bdb 921 case 0x560000:
rempig 5:9cc383153bdb 922 fName = "/sd/560000.cfg";
rempig 5:9cc383153bdb 923 printf("Yeebo56\r\n");
rempig 5:9cc383153bdb 924 break;
rempig 5:9cc383153bdb 925
rempig 5:9cc383153bdb 926 default:
rempig 5:9cc383153bdb 927 fName = "540000.cfg";
rempig 5:9cc383153bdb 928 printf("YeeboDefault\r\n");
rempig 5:9cc383153bdb 929 break;
rempig 5:9cc383153bdb 930 }
rempig 5:9cc383153bdb 931 pc.printf("Initializing\r\n");
rempig 5:9cc383153bdb 932 wait(2);
rempig 5:9cc383153bdb 933 //fName = "/sd/touchtest.bmp";
rempig 5:9cc383153bdb 934 pc.printf("Opening : %s\r\n",fName);
rempig 5:9cc383153bdb 935 fp = fopen(fName, "r");
rempig 5:9cc383153bdb 936 if (fp == NULL) {
rempig 5:9cc383153bdb 937 fclose(fp);
rempig 5:9cc383153bdb 938 pc.printf("Error: File not found!\r\n");
rempig 5:9cc383153bdb 939 }
rempig 5:9cc383153bdb 940 pc.printf("start writing cfg\r\n");
rempig 5:9cc383153bdb 941
rempig 5:9cc383153bdb 942 pageNum = 0x0F;
rempig 5:9cc383153bdb 943 int cntByteLen = 7;
rempig 5:9cc383153bdb 944
rempig 5:9cc383153bdb 945 while ((!feof(fp)) && (pageNum < 0x10)) {
rempig 5:9cc383153bdb 946 //ISP_WRITE_FLASH (CFG)
rempig 5:9cc383153bdb 947 pc.printf("Unlocking...\r\n");
rempig 5:9cc383153bdb 948 ISPUnlock();
rempig 5:9cc383153bdb 949 WaitISP();
rempig 5:9cc383153bdb 950 pc.printf("Writing cfg page 0x%02x...\r\n", pageNum);
rempig 5:9cc383153bdb 951
rempig 5:9cc383153bdb 952 i2c.start();
rempig 5:9cc383153bdb 953 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 954 i2c.write(0x82);
rempig 5:9cc383153bdb 955 i2c.write(0x00);
rempig 5:9cc383153bdb 956 i2c.write(pageNum);
rempig 5:9cc383153bdb 957 i2c.write(0x00);
rempig 5:9cc383153bdb 958 i2c.write(0x00);
rempig 5:9cc383153bdb 959 i2c.write(0x00);
rempig 5:9cc383153bdb 960 i2c.write(0x00);
rempig 5:9cc383153bdb 961 i2c.write(0x00);
rempig 5:9cc383153bdb 962 i2c.stop();
rempig 5:9cc383153bdb 963 wait_ms(50);
rempig 5:9cc383153bdb 964 int cntByteLen = 7;
rempig 5:9cc383153bdb 965
rempig 5:9cc383153bdb 966 //ISP_WRITE_DATA (CFG)
rempig 5:9cc383153bdb 967 //open bin file
rempig 5:9cc383153bdb 968 cntWrite = 0;
rempig 5:9cc383153bdb 969
rempig 5:9cc383153bdb 970 while ((cntWrite < 147)) { //page loop
rempig 5:9cc383153bdb 971 i2c.start();
rempig 5:9cc383153bdb 972 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 973 i2c.write(0x81);
rempig 5:9cc383153bdb 974 cntbytes = 0;
rempig 5:9cc383153bdb 975 wait_ms(50);
rempig 5:9cc383153bdb 976 //cntByteLen = 1024-cntWrite*7;
rempig 5:9cc383153bdb 977 //if (cntByteLen>7) {
rempig 5:9cc383153bdb 978 // cntByteLen = 7;
rempig 5:9cc383153bdb 979 //}
rempig 5:9cc383153bdb 980 cntByteLen = 7;
rempig 5:9cc383153bdb 981 while ((cntbytes < cntByteLen) && (((cntWrite*7)+(cntbytes)) < 1024)) { //write data loop
rempig 5:9cc383153bdb 982 databin = fgetc(fp);
rempig 5:9cc383153bdb 983 pc.printf("Writing data 0x%02x...\r\n", databin);
rempig 5:9cc383153bdb 984 pc.printf("CntBytes : 0x%0x\r\n",cntbytes);
rempig 5:9cc383153bdb 985 //wait(1);
rempig 5:9cc383153bdb 986 if (databin == 0xffffffff) {
rempig 5:9cc383153bdb 987 pc.printf("Printing FF\r\n");
rempig 5:9cc383153bdb 988 i2c.write(0xFF);
rempig 5:9cc383153bdb 989 } else {
rempig 5:9cc383153bdb 990 pc.printf("Printing Normal\r\n");
rempig 5:9cc383153bdb 991 i2c.write(databin);
rempig 5:9cc383153bdb 992 }
rempig 5:9cc383153bdb 993
rempig 5:9cc383153bdb 994 cntbytes++;
rempig 5:9cc383153bdb 995 } //write data loop end
rempig 5:9cc383153bdb 996 i2c.stop();
rempig 5:9cc383153bdb 997 cntWrite++;
rempig 5:9cc383153bdb 998 wait_ms(50);
rempig 5:9cc383153bdb 999 } //page loop end
rempig 5:9cc383153bdb 1000 wait_ms(150);
rempig 5:9cc383153bdb 1001 WaitISP();
rempig 5:9cc383153bdb 1002 pageNum++;
rempig 5:9cc383153bdb 1003 }
rempig 5:9cc383153bdb 1004
rempig 5:9cc383153bdb 1005 wait_ms(100);
rempig 5:9cc383153bdb 1006 fclose(fp);
rempig 5:9cc383153bdb 1007 wait_ms(100);
rempig 5:9cc383153bdb 1008
rempig 5:9cc383153bdb 1009 //******************************************PROGRAMEND*****************************************************************
rempig 5:9cc383153bdb 1010
rempig 5:9cc383153bdb 1011 /*
rempig 5:9cc383153bdb 1012 //Flash Page Read
rempig 5:9cc383153bdb 1013 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1014 i2c.start();
rempig 5:9cc383153bdb 1015 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1016 i2c.write(0x83);
rempig 5:9cc383153bdb 1017 i2c.write(0x00);
rempig 5:9cc383153bdb 1018 i2c.write(0x00); //read page 00
rempig 5:9cc383153bdb 1019 i2c.write(0x00);
rempig 5:9cc383153bdb 1020 i2c.write(0x00);
rempig 5:9cc383153bdb 1021 i2c.write(0x00);
rempig 5:9cc383153bdb 1022 i2c.write(0x00);
rempig 5:9cc383153bdb 1023 i2c.write(0x00);
rempig 5:9cc383153bdb 1024 i2c.stop();
rempig 5:9cc383153bdb 1025
rempig 5:9cc383153bdb 1026 i2c.start();
rempig 5:9cc383153bdb 1027 i2c.write(addrsht);
rempig 5:9cc383153bdb 1028 i2c.read(addrsht,flRead, 1024);
rempig 5:9cc383153bdb 1029 i2c.stop();
rempig 5:9cc383153bdb 1030
rempig 5:9cc383153bdb 1031 printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1032 printf("0x%01024x\n", flRead);
rempig 5:9cc383153bdb 1033 */
rempig 5:9cc383153bdb 1034 ReadMem();
rempig 5:9cc383153bdb 1035
rempig 5:9cc383153bdb 1036 printf("1\r\n");
rempig 5:9cc383153bdb 1037 //Reset A008
rempig 5:9cc383153bdb 1038 ISPReset();
rempig 5:9cc383153bdb 1039 wait(2);
rempig 5:9cc383153bdb 1040 /*
rempig 5:9cc383153bdb 1041 //Flash Mass Erase
rempig 5:9cc383153bdb 1042 ISPUnlock();
rempig 5:9cc383153bdb 1043 WaitISP();
rempig 5:9cc383153bdb 1044 */
rempig 5:9cc383153bdb 1045
rempig 5:9cc383153bdb 1046 done:
rempig 5:9cc383153bdb 1047 STATEMACHINE = LED1CTRL;
rempig 5:9cc383153bdb 1048
rempig 5:9cc383153bdb 1049 break;
rempig 5:9cc383153bdb 1050
rempig 5:9cc383153bdb 1051
rempig 5:9cc383153bdb 1052 case LED1CTRL:
rempig 5:9cc383153bdb 1053 printf("2\r\n");
rempig 5:9cc383153bdb 1054 ControlLED(0x40, 0x08);
rempig 5:9cc383153bdb 1055 ControlLED(0x42, 0x08);
rempig 5:9cc383153bdb 1056
rempig 5:9cc383153bdb 1057 STATEMACHINE = UIBCDISPENB;
rempig 5:9cc383153bdb 1058 break;
rempig 5:9cc383153bdb 1059
rempig 5:9cc383153bdb 1060 case UIBCDISPENB: //display enable
rempig 5:9cc383153bdb 1061 //Serial.println("UIBCDISPENB");
rempig 5:9cc383153bdb 1062
rempig 5:9cc383153bdb 1063 i2cd[0] = 0x01;
rempig 5:9cc383153bdb 1064 i2cd[1] = 0x02;
rempig 5:9cc383153bdb 1065 i2cd[2] = 0xFF;
rempig 5:9cc383153bdb 1066
rempig 5:9cc383153bdb 1067 i2c.start();
rempig 5:9cc383153bdb 1068 i2c.write((addr1 << 1), i2cd, 3, false);
rempig 5:9cc383153bdb 1069 i2c.stop();
rempig 5:9cc383153bdb 1070 wait_ms(100);
rempig 5:9cc383153bdb 1071
rempig 5:9cc383153bdb 1072 STATEMACHINE = UIBCDISPENB2;
rempig 5:9cc383153bdb 1073 break;
rempig 5:9cc383153bdb 1074
rempig 5:9cc383153bdb 1075 case UIBCDISPENB2:
rempig 5:9cc383153bdb 1076 //Serial.println("UIBCDISPENB2");
rempig 5:9cc383153bdb 1077
rempig 5:9cc383153bdb 1078 i2cd[0] = 0x01;
rempig 5:9cc383153bdb 1079 i2cd[1] = 0x05;
rempig 5:9cc383153bdb 1080 i2cd[2] = 0xFF;
rempig 5:9cc383153bdb 1081
rempig 5:9cc383153bdb 1082 i2c.start();
rempig 5:9cc383153bdb 1083 i2c.write((addr1 << 1), i2cd, 3, false);
rempig 5:9cc383153bdb 1084 i2c.stop();
rempig 5:9cc383153bdb 1085 wait_ms(100);
rempig 5:9cc383153bdb 1086 STATEMACHINE = UIBCAUXTOUCHENABLE;
rempig 5:9cc383153bdb 1087 break;
rempig 5:9cc383153bdb 1088
rempig 5:9cc383153bdb 1089
rempig 5:9cc383153bdb 1090 case UIBCAUXTOUCHENABLE:
rempig 5:9cc383153bdb 1091 //Serial.println("UIBCAUXTOUCHENABLE");
rempig 5:9cc383153bdb 1092
rempig 5:9cc383153bdb 1093 i2cd[0] = 0x01;
rempig 5:9cc383153bdb 1094 i2cd[1] = 0x07;
rempig 5:9cc383153bdb 1095 i2cd[2] = 0xFF;
rempig 5:9cc383153bdb 1096
rempig 5:9cc383153bdb 1097 i2c.start();
rempig 5:9cc383153bdb 1098 i2c.write((addr1 << 1), i2cd, 3, false);
rempig 5:9cc383153bdb 1099 i2c.stop();
rempig 5:9cc383153bdb 1100
rempig 5:9cc383153bdb 1101 wait_ms(100);
rempig 5:9cc383153bdb 1102 STATEMACHINE = UIBCBACKLIGHTDUTY;
rempig 5:9cc383153bdb 1103 break;
rempig 5:9cc383153bdb 1104
rempig 5:9cc383153bdb 1105
rempig 5:9cc383153bdb 1106
rempig 5:9cc383153bdb 1107 case UIBCBACKLIGHTDUTY:
rempig 5:9cc383153bdb 1108 printf("UIBCBACKLIGHTDUTY\n");
rempig 5:9cc383153bdb 1109
rempig 5:9cc383153bdb 1110 i2cd[0] = 0x01;
rempig 5:9cc383153bdb 1111 i2cd[1] = 0x80;
rempig 5:9cc383153bdb 1112 i2cd[2] = 0xAF;
rempig 5:9cc383153bdb 1113
rempig 5:9cc383153bdb 1114 i2c.start();
rempig 5:9cc383153bdb 1115 i2c.write((addr1 << 1), i2cd, 3, false);
rempig 5:9cc383153bdb 1116 i2c.stop();
rempig 5:9cc383153bdb 1117 wait_ms(100);
rempig 5:9cc383153bdb 1118
rempig 5:9cc383153bdb 1119 STATEMACHINE = LCDTESTINIT;
rempig 5:9cc383153bdb 1120 break;
rempig 5:9cc383153bdb 1121
rempig 5:9cc383153bdb 1122 case LCDTESTINIT:
rempig 5:9cc383153bdb 1123 printf("LCDTESTINIT\n");
rempig 5:9cc383153bdb 1124 switch(RDDIDVal) {
rempig 5:9cc383153bdb 1125 case 0x540000:
rempig 5:9cc383153bdb 1126 yeebo_st7789v_power_on();
rempig 5:9cc383153bdb 1127 printf("Yeebo\r\n");
rempig 5:9cc383153bdb 1128 break;
rempig 5:9cc383153bdb 1129
rempig 5:9cc383153bdb 1130 case 0x448552:
rempig 5:9cc383153bdb 1131 tianma_2p8_st7789vi_power_on();
rempig 5:9cc383153bdb 1132 printf("Tianma1\r\n");
rempig 5:9cc383153bdb 1133 break;
rempig 5:9cc383153bdb 1134
rempig 5:9cc383153bdb 1135 case 0x468552:
rempig 5:9cc383153bdb 1136 tianma_2p8_st7789vi_power_on();
rempig 5:9cc383153bdb 1137 printf("Tianma2\r\n");
rempig 5:9cc383153bdb 1138 break;
rempig 5:9cc383153bdb 1139
rempig 5:9cc383153bdb 1140 case 0x560000:
rempig 5:9cc383153bdb 1141 yeebo_st7789v_power_on();
rempig 5:9cc383153bdb 1142 printf("Yeebo56\r\n");
rempig 5:9cc383153bdb 1143 break;
rempig 5:9cc383153bdb 1144
rempig 5:9cc383153bdb 1145 default:
rempig 5:9cc383153bdb 1146 yeebo_st7789v_power_on();
rempig 5:9cc383153bdb 1147 printf("YeeboDefault\r\n");
rempig 5:9cc383153bdb 1148 break;
rempig 5:9cc383153bdb 1149 }
rempig 5:9cc383153bdb 1150 printf("RDDID : ");
rempig 5:9cc383153bdb 1151 printf("0x%08x\n", RDDIDVal);
rempig 5:9cc383153bdb 1152
rempig 5:9cc383153bdb 1153 STATEMACHINE = LCDTEST1;
rempig 5:9cc383153bdb 1154
rempig 5:9cc383153bdb 1155 break;
rempig 5:9cc383153bdb 1156
rempig 5:9cc383153bdb 1157 case LCDTEST1:
rempig 5:9cc383153bdb 1158 Write_Command(0x38);
rempig 5:9cc383153bdb 1159 wait_ms(100);
rempig 5:9cc383153bdb 1160 RefreshScreen();
rempig 5:9cc383153bdb 1161 printf("Inspect color. Press enter to continue\r\n");
rempig 5:9cc383153bdb 1162 //while
rempig 5:9cc383153bdb 1163
rempig 5:9cc383153bdb 1164 /*
rempig 5:9cc383153bdb 1165 while (buttonNext.read()==1) {
rempig 5:9cc383153bdb 1166 wait_ms(50);
rempig 5:9cc383153bdb 1167 }
rempig 5:9cc383153bdb 1168 SendBlack();
rempig 5:9cc383153bdb 1169 while (buttonNext.read()==1) {
rempig 5:9cc383153bdb 1170 wait_ms(50);
rempig 5:9cc383153bdb 1171 }
rempig 5:9cc383153bdb 1172 SendWhite();
rempig 5:9cc383153bdb 1173 while (buttonNext.read()==1) {
rempig 5:9cc383153bdb 1174 wait_ms(50);
rempig 5:9cc383153bdb 1175 }
rempig 5:9cc383153bdb 1176 */
rempig 5:9cc383153bdb 1177 STATEMACHINE = RACASET;
rempig 5:9cc383153bdb 1178 wait_ms(100);
rempig 5:9cc383153bdb 1179 break;
rempig 5:9cc383153bdb 1180
rempig 5:9cc383153bdb 1181 case RACASET:
rempig 5:9cc383153bdb 1182 //CASET
rempig 5:9cc383153bdb 1183 /*
rempig 5:9cc383153bdb 1184 SendData(0x00,0x00);
rempig 5:9cc383153bdb 1185 SendData(0x00,0xAA);
rempig 5:9cc383153bdb 1186 //RASET
rempig 5:9cc383153bdb 1187 SendData(0x00,0x00);
rempig 5:9cc383153bdb 1188 SendData(0x00,0x78);
rempig 5:9cc383153bdb 1189 */
rempig 5:9cc383153bdb 1190 STATEMACHINE = LCDTEST2;
rempig 5:9cc383153bdb 1191 // wait_ms(100);
rempig 5:9cc383153bdb 1192 break;
rempig 5:9cc383153bdb 1193
rempig 5:9cc383153bdb 1194 case LCDTEST2:
rempig 5:9cc383153bdb 1195 /*
rempig 5:9cc383153bdb 1196 RefreshScreen();
rempig 5:9cc383153bdb 1197 printf("Inspect color. Press enter to continue\r\n");
rempig 5:9cc383153bdb 1198 wait_ms(100);
rempig 5:9cc383153bdb 1199 */
rempig 5:9cc383153bdb 1200 STATEMACHINE = WAITCONTINUE;
rempig 5:9cc383153bdb 1201 // wait_ms(100);
rempig 5:9cc383153bdb 1202 break;
rempig 5:9cc383153bdb 1203
rempig 5:9cc383153bdb 1204 case WAITCONTINUE:
rempig 5:9cc383153bdb 1205 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1206 i2c.start();
rempig 5:9cc383153bdb 1207 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1208 i2c.write(0x11);
rempig 5:9cc383153bdb 1209 i2c.stop();
rempig 5:9cc383153bdb 1210 wait_ms(50);
rempig 5:9cc383153bdb 1211 i2c.start();
rempig 5:9cc383153bdb 1212 i2c.write(addrsht);
rempig 5:9cc383153bdb 1213 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1214 i2c.stop();
rempig 5:9cc383153bdb 1215 i2crkey = i2cr;
rempig 5:9cc383153bdb 1216 // printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1217 if (i2crkey==0x02) {
rempig 5:9cc383153bdb 1218 STATEMACHINE = TOUCHTESTINIT;
rempig 5:9cc383153bdb 1219 }
rempig 5:9cc383153bdb 1220
rempig 5:9cc383153bdb 1221 printf("KEY : ");
rempig 5:9cc383153bdb 1222 printf("0x%02x\n", i2crkey);
rempig 5:9cc383153bdb 1223
rempig 5:9cc383153bdb 1224 i2cr = 0;
rempig 5:9cc383153bdb 1225 wait_ms(100);
rempig 5:9cc383153bdb 1226 i2cr = 0;
rempig 5:9cc383153bdb 1227 i2crkey = 0;
rempig 5:9cc383153bdb 1228
rempig 5:9cc383153bdb 1229 wait_ms(100);
rempig 5:9cc383153bdb 1230
rempig 5:9cc383153bdb 1231 break;
rempig 5:9cc383153bdb 1232
rempig 5:9cc383153bdb 1233 case TOUCHTESTINIT:
rempig 5:9cc383153bdb 1234
rempig 5:9cc383153bdb 1235 wait_ms(2000);
rempig 5:9cc383153bdb 1236 pc.printf("Initializing touch\r\n");
rempig 5:9cc383153bdb 1237
rempig 5:9cc383153bdb 1238 fp = fopen("/sd/touchtest.bmp", "r");
rempig 5:9cc383153bdb 1239
rempig 5:9cc383153bdb 1240 if (fp == NULL) {
rempig 5:9cc383153bdb 1241 fclose(fp);
rempig 5:9cc383153bdb 1242 // remove("/sd/hello.txt");
rempig 5:9cc383153bdb 1243 pc.printf("Error: File not found!\r\n");
rempig 5:9cc383153bdb 1244 }
rempig 5:9cc383153bdb 1245
rempig 5:9cc383153bdb 1246 //https://online-converting.com/image/convert2bmp/
rempig 5:9cc383153bdb 1247
rempig 5:9cc383153bdb 1248 int cnt = 0;
rempig 5:9cc383153bdb 1249 pc.printf("Printing image to screen\r\n");
rempig 5:9cc383153bdb 1250 //Red --- F8 00
rempig 5:9cc383153bdb 1251 //Green --- 07 E0
rempig 5:9cc383153bdb 1252 //Blue --- 00 1F
rempig 5:9cc383153bdb 1253 Write_Command(0x2c);
rempig 5:9cc383153bdb 1254
rempig 5:9cc383153bdb 1255 while (!feof(fp)) {
rempig 5:9cc383153bdb 1256 if (cnt > 65) { //skip rgb header
rempig 5:9cc383153bdb 1257 datalo = fgetc(fp);
rempig 5:9cc383153bdb 1258 datahi = fgetc(fp);
rempig 5:9cc383153bdb 1259 //printf("0x%02x\n", datalo);
rempig 5:9cc383153bdb 1260 //printf("0x%02x\n", datahi);
rempig 5:9cc383153bdb 1261
rempig 5:9cc383153bdb 1262 if ((datalo!=0xffffffff) && (datahi!=0xffffffff)) {
rempig 5:9cc383153bdb 1263 SendData(datahi,datalo);
rempig 5:9cc383153bdb 1264 }
rempig 5:9cc383153bdb 1265 } else {
rempig 5:9cc383153bdb 1266 int datahead = fgetc(fp);
rempig 5:9cc383153bdb 1267 cnt++;
rempig 5:9cc383153bdb 1268 }
rempig 5:9cc383153bdb 1269 // pc.printf(".");
rempig 5:9cc383153bdb 1270 }
rempig 5:9cc383153bdb 1271 //pc.printf(".\r\n");
rempig 5:9cc383153bdb 1272 pc.printf("Done printing image to screen\r\n");
rempig 5:9cc383153bdb 1273
rempig 5:9cc383153bdb 1274 fclose(fp);
rempig 5:9cc383153bdb 1275
rempig 5:9cc383153bdb 1276 wait_ms(100);
rempig 5:9cc383153bdb 1277 touch1 = false;
rempig 5:9cc383153bdb 1278 touch2 = false;
rempig 5:9cc383153bdb 1279 touch3 = false;
rempig 5:9cc383153bdb 1280 touch4 = false;
rempig 5:9cc383153bdb 1281 touch5 = false;
rempig 5:9cc383153bdb 1282 touchkey1 = false;
rempig 5:9cc383153bdb 1283 touchkey2 = false;
rempig 5:9cc383153bdb 1284 touchkey3 = false;
rempig 5:9cc383153bdb 1285 pc.printf("Touch test running\r\n");
rempig 5:9cc383153bdb 1286 ControlLED(0x40, 0x00);
rempig 5:9cc383153bdb 1287 ControlLED(0x42, 0x00);
rempig 5:9cc383153bdb 1288
rempig 5:9cc383153bdb 1289 STATEMACHINE = TOUCHDETECT;
rempig 5:9cc383153bdb 1290 break;
rempig 5:9cc383153bdb 1291 /*
rempig 5:9cc383153bdb 1292 case TOUCHTEST1:
rempig 5:9cc383153bdb 1293 printf("TOUCHING1\n");
rempig 5:9cc383153bdb 1294 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1295 i2c.start();
rempig 5:9cc383153bdb 1296 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1297 i2c.write(0x00);
rempig 5:9cc383153bdb 1298 i2c.stop();
rempig 5:9cc383153bdb 1299 //wait_ms(50);
rempig 5:9cc383153bdb 1300 i2c.start();
rempig 5:9cc383153bdb 1301 i2c.write(addrsht);
rempig 5:9cc383153bdb 1302 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1303 i2c.stop();
rempig 5:9cc383153bdb 1304
rempig 5:9cc383153bdb 1305 printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1306 printf("0x%02x\n", i2cr);
rempig 5:9cc383153bdb 1307 i2cr = 0;
rempig 5:9cc383153bdb 1308 wait_ms(100);
rempig 5:9cc383153bdb 1309
rempig 5:9cc383153bdb 1310 STATEMACHINE = TOUCHTEST2;
rempig 5:9cc383153bdb 1311 break;
rempig 5:9cc383153bdb 1312
rempig 5:9cc383153bdb 1313 case TOUCHTEST2:
rempig 5:9cc383153bdb 1314 printf("TOUCHING2\n");
rempig 5:9cc383153bdb 1315 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1316 i2c.start();
rempig 5:9cc383153bdb 1317 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1318 i2c.write(0x01);
rempig 5:9cc383153bdb 1319 i2c.stop();
rempig 5:9cc383153bdb 1320 //wait_ms(50);
rempig 5:9cc383153bdb 1321 i2c.start();
rempig 5:9cc383153bdb 1322 i2c.write(addrsht);
rempig 5:9cc383153bdb 1323 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1324 i2c.stop();
rempig 5:9cc383153bdb 1325
rempig 5:9cc383153bdb 1326 printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1327 printf("0x%02x\n", i2cr);
rempig 5:9cc383153bdb 1328 i2cr = 0;
rempig 5:9cc383153bdb 1329 wait_ms(100);
rempig 5:9cc383153bdb 1330
rempig 5:9cc383153bdb 1331 STATEMACHINE = TOUCHTEST3;
rempig 5:9cc383153bdb 1332 break;
rempig 5:9cc383153bdb 1333
rempig 5:9cc383153bdb 1334 case TOUCHTEST3:
rempig 5:9cc383153bdb 1335 printf("TOUCHING3\n");
rempig 5:9cc383153bdb 1336 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1337 i2c.start();
rempig 5:9cc383153bdb 1338 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1339 i2c.write(0x04);
rempig 5:9cc383153bdb 1340 i2c.stop();
rempig 5:9cc383153bdb 1341 //wait_ms(50);
rempig 5:9cc383153bdb 1342 i2c.start();
rempig 5:9cc383153bdb 1343 i2c.write(addrsht);
rempig 5:9cc383153bdb 1344 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1345 i2c.stop();
rempig 5:9cc383153bdb 1346
rempig 5:9cc383153bdb 1347 printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1348 printf("0x%02x\n", i2cr);
rempig 5:9cc383153bdb 1349 i2cr = 0;
rempig 5:9cc383153bdb 1350 wait_ms(100);
rempig 5:9cc383153bdb 1351
rempig 5:9cc383153bdb 1352 STATEMACHINE = TOUCHTEST4;
rempig 5:9cc383153bdb 1353 break;
rempig 5:9cc383153bdb 1354
rempig 5:9cc383153bdb 1355 case TOUCHTEST4:
rempig 5:9cc383153bdb 1356 printf("TOUCHING4\n");
rempig 5:9cc383153bdb 1357 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1358 i2c.start();
rempig 5:9cc383153bdb 1359 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1360 i2c.write(0x05);
rempig 5:9cc383153bdb 1361 i2c.stop();
rempig 5:9cc383153bdb 1362 //wait_ms(50);
rempig 5:9cc383153bdb 1363 i2c.start();
rempig 5:9cc383153bdb 1364 i2c.write(addrsht);
rempig 5:9cc383153bdb 1365 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1366 i2c.stop();
rempig 5:9cc383153bdb 1367
rempig 5:9cc383153bdb 1368 printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1369 printf("0x%02x\n", i2cr);
rempig 5:9cc383153bdb 1370 i2cr = 0;
rempig 5:9cc383153bdb 1371 wait_ms(100);
rempig 5:9cc383153bdb 1372
rempig 5:9cc383153bdb 1373 STATEMACHINE = TOUCHTEST5;
rempig 5:9cc383153bdb 1374 break;
rempig 5:9cc383153bdb 1375 */
rempig 5:9cc383153bdb 1376 case TOUCHDETECT:
rempig 5:9cc383153bdb 1377 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1378 i2c.start();
rempig 5:9cc383153bdb 1379 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1380 i2c.write(0x01);
rempig 5:9cc383153bdb 1381 i2c.write(0x1D);
rempig 5:9cc383153bdb 1382 i2c.stop();
rempig 5:9cc383153bdb 1383 wait_ms(50);
rempig 5:9cc383153bdb 1384 i2c.start();
rempig 5:9cc383153bdb 1385 i2c.write(addrsht);
rempig 5:9cc383153bdb 1386 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1387 i2c.stop();
rempig 5:9cc383153bdb 1388 i2crkey = (i2cr >> 2) & 0x01;
rempig 5:9cc383153bdb 1389 // int i2crkeytemp = i2cr;
rempig 5:9cc383153bdb 1390 // printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1391 // printf("INT : ");
rempig 5:9cc383153bdb 1392 // printf("0x%02x\n", i2crkey);
rempig 5:9cc383153bdb 1393
rempig 5:9cc383153bdb 1394 // printf("INTTEMP : ");
rempig 5:9cc383153bdb 1395 // printf("0x%02x\n", i2crkeytemp);
rempig 5:9cc383153bdb 1396 if (i2crkey == 0x00) {
rempig 5:9cc383153bdb 1397 STATEMACHINE = TOUCHTEST5;
rempig 5:9cc383153bdb 1398 }
rempig 5:9cc383153bdb 1399 i2cr = 0;
rempig 5:9cc383153bdb 1400 i2crkey = 0;
rempig 5:9cc383153bdb 1401
rempig 5:9cc383153bdb 1402 // wait_ms(100);
rempig 5:9cc383153bdb 1403
rempig 5:9cc383153bdb 1404 break;
rempig 5:9cc383153bdb 1405
rempig 5:9cc383153bdb 1406 case TOUCHTEST5:
rempig 5:9cc383153bdb 1407 // printf("TOUCHING5\n");
rempig 5:9cc383153bdb 1408 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1409 i2c.start();
rempig 5:9cc383153bdb 1410 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1411 i2c.write(0x11);
rempig 5:9cc383153bdb 1412 i2c.stop();
rempig 5:9cc383153bdb 1413 wait_ms(50);
rempig 5:9cc383153bdb 1414 i2c.start();
rempig 5:9cc383153bdb 1415 i2c.write(addrsht);
rempig 5:9cc383153bdb 1416 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1417 i2c.stop();
rempig 5:9cc383153bdb 1418 i2crkey = i2cr;
rempig 5:9cc383153bdb 1419 // printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1420 printf("KEY : ");
rempig 5:9cc383153bdb 1421 printf("0x%02x\n", i2crkey);
rempig 5:9cc383153bdb 1422 i2cr = 0;
rempig 5:9cc383153bdb 1423 wait_ms(100);
rempig 5:9cc383153bdb 1424
rempig 5:9cc383153bdb 1425 //STATEMACHINE = SDTEST1;
rempig 5:9cc383153bdb 1426 STATEMACHINE = TOUCHTEST6;
rempig 5:9cc383153bdb 1427
rempig 5:9cc383153bdb 1428 break;
rempig 5:9cc383153bdb 1429
rempig 5:9cc383153bdb 1430 case TOUCHTEST6:
rempig 5:9cc383153bdb 1431 // printf("TOUCHING6\n");
rempig 5:9cc383153bdb 1432 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1433 i2c.start();
rempig 5:9cc383153bdb 1434 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1435 i2c.write(0x12);
rempig 5:9cc383153bdb 1436 i2c.stop();
rempig 5:9cc383153bdb 1437 wait_ms(50);
rempig 5:9cc383153bdb 1438 i2c.start();
rempig 5:9cc383153bdb 1439 i2c.write(addrsht);
rempig 5:9cc383153bdb 1440 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1441 i2c.stop();
rempig 5:9cc383153bdb 1442 // printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1443 // printf("0x%02x\n", i2cr);
rempig 5:9cc383153bdb 1444
rempig 5:9cc383153bdb 1445 i2crxhi = (i2cr & 0x70) >> 4; // we want to check bits 0, 3 and 8
rempig 5:9cc383153bdb 1446 // printf("0x%02x\n", i2crxhi);
rempig 5:9cc383153bdb 1447
rempig 5:9cc383153bdb 1448 i2cryhi = (i2cr & 0x07); // we want to check bits 0, 3 and 8
rempig 5:9cc383153bdb 1449 // printf("0x%02x\n", i2cryhi);
rempig 5:9cc383153bdb 1450 i2cr = 0;
rempig 5:9cc383153bdb 1451 wait_ms(100);
rempig 5:9cc383153bdb 1452
rempig 5:9cc383153bdb 1453 STATEMACHINE = TOUCHTEST7;
rempig 5:9cc383153bdb 1454 break;
rempig 5:9cc383153bdb 1455
rempig 5:9cc383153bdb 1456 case TOUCHTEST7:
rempig 5:9cc383153bdb 1457 // printf("TOUCHING7\n");
rempig 5:9cc383153bdb 1458 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1459 i2c.start();
rempig 5:9cc383153bdb 1460 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1461 i2c.write(0x13);
rempig 5:9cc383153bdb 1462 i2c.stop();
rempig 5:9cc383153bdb 1463 wait_ms(50);
rempig 5:9cc383153bdb 1464 i2c.start();
rempig 5:9cc383153bdb 1465 i2c.write(addrsht);
rempig 5:9cc383153bdb 1466 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1467 i2c.stop();
rempig 5:9cc383153bdb 1468
rempig 5:9cc383153bdb 1469 // printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1470 // printf("0x%02x\n", i2cr);
rempig 5:9cc383153bdb 1471
rempig 5:9cc383153bdb 1472 i2crxlo = i2cr;
rempig 5:9cc383153bdb 1473 // printf("0x%02x\n", i2crxlo);
rempig 5:9cc383153bdb 1474 i2cr = 0;
rempig 5:9cc383153bdb 1475 wait_ms(100);
rempig 5:9cc383153bdb 1476
rempig 5:9cc383153bdb 1477 STATEMACHINE = TOUCHTEST8;
rempig 5:9cc383153bdb 1478
rempig 5:9cc383153bdb 1479 break;
rempig 5:9cc383153bdb 1480
rempig 5:9cc383153bdb 1481 case TOUCHTEST8:
rempig 5:9cc383153bdb 1482 //printf("TOUCHING8\n");
rempig 5:9cc383153bdb 1483
rempig 5:9cc383153bdb 1484 addrsht = (addr2 << 1) | 0x01; //control bit = 1
rempig 5:9cc383153bdb 1485 i2c.start();
rempig 5:9cc383153bdb 1486 i2c.write((addr2 << 1));
rempig 5:9cc383153bdb 1487 i2c.write(0x14);
rempig 5:9cc383153bdb 1488 i2c.stop();
rempig 5:9cc383153bdb 1489 wait_ms(50);
rempig 5:9cc383153bdb 1490 i2c.start();
rempig 5:9cc383153bdb 1491 i2c.write(addrsht);
rempig 5:9cc383153bdb 1492 i2cr = i2c.read(addrsht);
rempig 5:9cc383153bdb 1493 i2c.stop();
rempig 5:9cc383153bdb 1494
rempig 5:9cc383153bdb 1495 // printf("0x%02x\n", addrsht);
rempig 5:9cc383153bdb 1496 // printf("0x%02x\n", i2cr);
rempig 5:9cc383153bdb 1497
rempig 5:9cc383153bdb 1498 i2crylo = i2cr;
rempig 5:9cc383153bdb 1499 // printf("0x%02x\n", i2crylo);
rempig 5:9cc383153bdb 1500
rempig 5:9cc383153bdb 1501 printf("Deciphered Values\r\n");
rempig 5:9cc383153bdb 1502
rempig 5:9cc383153bdb 1503 i2crx = (i2crxhi << 8) | i2crxlo;
rempig 5:9cc383153bdb 1504 i2cry = (i2cryhi << 8) | i2crylo;
rempig 5:9cc383153bdb 1505
rempig 5:9cc383153bdb 1506 printf("X : ");
rempig 5:9cc383153bdb 1507 printf("%d\r\n", i2crx);
rempig 5:9cc383153bdb 1508 printf("Y : ");
rempig 5:9cc383153bdb 1509 printf("%d\r\n", i2cry);
rempig 5:9cc383153bdb 1510
rempig 5:9cc383153bdb 1511 /*
rempig 5:9cc383153bdb 1512 bool touch1 = false;
rempig 5:9cc383153bdb 1513 bool touch2 = false;
rempig 5:9cc383153bdb 1514 bool touch3 = false;
rempig 5:9cc383153bdb 1515 bool touch4 = false;
rempig 5:9cc383153bdb 1516 bool touch5 = false;
rempig 5:9cc383153bdb 1517 bool touchkey1 = false;
rempig 5:9cc383153bdb 1518 bool touchkey2 = false;
rempig 5:9cc383153bdb 1519 bool touchkey3 = false;
rempig 5:9cc383153bdb 1520 */
rempig 5:9cc383153bdb 1521
rempig 5:9cc383153bdb 1522 bool feedBack1 = ((i2crx>=0) && (i2crx <= 79) && (i2cry>=0) && (i2cry <= 59));
rempig 5:9cc383153bdb 1523 bool feedBack2 = ((i2crx>=239) && (i2crx <= 319) && (i2cry>=0) && (i2cry <= 59));
rempig 5:9cc383153bdb 1524 bool feedBack3 = ((i2crx>=0) && (i2crx <= 79) && (i2cry>=179) && (i2cry <= 239));
rempig 5:9cc383153bdb 1525 bool feedBack4 = ((i2crx>=239) && (i2crx <= 319) && (i2cry>=179) && (i2cry <= 239));
rempig 5:9cc383153bdb 1526 bool feedBack5 = ((i2crx>=79) && (i2crx <= 159) && (i2cry>=59) && (i2cry <= 119));
rempig 5:9cc383153bdb 1527 bool feedBackkey1 = (i2crkey == 0x02);
rempig 5:9cc383153bdb 1528 bool feedBackkey2 = (i2crkey == 0x04);
rempig 5:9cc383153bdb 1529 bool feedBackkey3 = (i2crkey == 0x08);
rempig 5:9cc383153bdb 1530
rempig 5:9cc383153bdb 1531 if (feedBack1 || feedBack2 || feedBack3 || feedBack4 || feedBack5 || feedBackkey1 || feedBackkey2 || feedBackkey3) {
rempig 5:9cc383153bdb 1532 FeedbackTouch(true);
rempig 5:9cc383153bdb 1533 } else {
rempig 5:9cc383153bdb 1534 FeedbackTouch(false);
rempig 5:9cc383153bdb 1535 }
rempig 5:9cc383153bdb 1536
rempig 5:9cc383153bdb 1537 if (feedBack1) {
rempig 5:9cc383153bdb 1538 touch1 = true;
rempig 5:9cc383153bdb 1539 printf("X : ");
rempig 5:9cc383153bdb 1540 printf("%d\r\n", i2crx);
rempig 5:9cc383153bdb 1541 printf("Y : ");
rempig 5:9cc383153bdb 1542 printf("%d\r\n", i2cry);
rempig 5:9cc383153bdb 1543 printf("touch1 pressed\r\n");
rempig 5:9cc383153bdb 1544 }
rempig 5:9cc383153bdb 1545
rempig 5:9cc383153bdb 1546 if (feedBack2) {
rempig 5:9cc383153bdb 1547 touch2 = true;
rempig 5:9cc383153bdb 1548 printf("touch2 pressed\r\n");
rempig 5:9cc383153bdb 1549
rempig 5:9cc383153bdb 1550 }
rempig 5:9cc383153bdb 1551 if (feedBack3) {
rempig 5:9cc383153bdb 1552 touch3 = true;
rempig 5:9cc383153bdb 1553 printf("touch3 pressed\r\n");
rempig 5:9cc383153bdb 1554
rempig 5:9cc383153bdb 1555 }
rempig 5:9cc383153bdb 1556 if (feedBack4) {
rempig 5:9cc383153bdb 1557 touch4 = true;
rempig 5:9cc383153bdb 1558 printf("touch4 pressed\r\n");
rempig 5:9cc383153bdb 1559
rempig 5:9cc383153bdb 1560 }
rempig 5:9cc383153bdb 1561
rempig 5:9cc383153bdb 1562 if (feedBack5) {
rempig 5:9cc383153bdb 1563 touch5 = true;
rempig 5:9cc383153bdb 1564 printf("touch5 pressed\r\n");
rempig 5:9cc383153bdb 1565
rempig 5:9cc383153bdb 1566 }
rempig 5:9cc383153bdb 1567
rempig 5:9cc383153bdb 1568 if (feedBackkey1) {
rempig 5:9cc383153bdb 1569 touchkey1=true;
rempig 5:9cc383153bdb 1570 printf("touchkey1 pressed\r\n");
rempig 5:9cc383153bdb 1571 }
rempig 5:9cc383153bdb 1572
rempig 5:9cc383153bdb 1573 if (feedBackkey2) {
rempig 5:9cc383153bdb 1574 touchkey2=true;
rempig 5:9cc383153bdb 1575 printf("touchkey2 pressed\r\n");
rempig 5:9cc383153bdb 1576
rempig 5:9cc383153bdb 1577 }
rempig 5:9cc383153bdb 1578
rempig 5:9cc383153bdb 1579 if (feedBackkey3) {
rempig 5:9cc383153bdb 1580 touchkey3=true;
rempig 5:9cc383153bdb 1581 printf("touchkey3 pressed\r\n");
rempig 5:9cc383153bdb 1582
rempig 5:9cc383153bdb 1583 }
rempig 5:9cc383153bdb 1584
rempig 5:9cc383153bdb 1585 // touchresult = touch1 & touch2 & touch3 & touch4 & touch5 & touchkey1 & touchkey2 & touchkey3;
rempig 5:9cc383153bdb 1586 /*
rempig 5:9cc383153bdb 1587 if (touchresult) {
rempig 5:9cc383153bdb 1588 printf("touchresult : ");
rempig 5:9cc383153bdb 1589 printf("%s\r\n", touchresult ? "true" : "false");
rempig 5:9cc383153bdb 1590 STATEMACHINE = GOODDONE;
rempig 5:9cc383153bdb 1591 printf("Done Test\r\n");
rempig 5:9cc383153bdb 1592 } else {
rempig 5:9cc383153bdb 1593 wait_ms(100);
rempig 5:9cc383153bdb 1594 printf("touchresult : ");
rempig 5:9cc383153bdb 1595 printf("%s\r\n", touchresult ? "true" : "false");
rempig 5:9cc383153bdb 1596 printf("touch1 : ");
rempig 5:9cc383153bdb 1597 printf("%s\r\n", touch1 ? "true" : "false");
rempig 5:9cc383153bdb 1598 printf("touch2 : ");
rempig 5:9cc383153bdb 1599 printf("%s\r\n", touch2 ? "true" : "false");
rempig 5:9cc383153bdb 1600 printf("touch3 : ");
rempig 5:9cc383153bdb 1601 printf("%s\r\n", touch3 ? "true" : "false");
rempig 5:9cc383153bdb 1602 printf("touch4 : ");
rempig 5:9cc383153bdb 1603 printf("%s\r\n", touch4 ? "true" : "false");
rempig 5:9cc383153bdb 1604 printf("touch5 : ");
rempig 5:9cc383153bdb 1605 printf("%s\r\n", touch5 ? "true" : "false");
rempig 5:9cc383153bdb 1606 printf("touchkey1 : ");
rempig 5:9cc383153bdb 1607 printf("%s\r\n", touchkey1 ? "true" : "false");
rempig 5:9cc383153bdb 1608 printf("touchkey2 : ");
rempig 5:9cc383153bdb 1609 printf("%s\r\n", touchkey2 ? "true" : "false");
rempig 5:9cc383153bdb 1610 printf("touchkey3 : ");
rempig 5:9cc383153bdb 1611 printf("%s\r\n", touchkey3 ? "true" : "false");
rempig 5:9cc383153bdb 1612
rempig 5:9cc383153bdb 1613 STATEMACHINE = TOUCHDETECT;
rempig 5:9cc383153bdb 1614 }
rempig 5:9cc383153bdb 1615 */
rempig 5:9cc383153bdb 1616 i2cr = 0;
rempig 5:9cc383153bdb 1617 i2crkey = 0;
rempig 5:9cc383153bdb 1618
rempig 5:9cc383153bdb 1619
rempig 5:9cc383153bdb 1620 break;
rempig 5:9cc383153bdb 1621
rempig 5:9cc383153bdb 1622 case GOODDONE:
rempig 5:9cc383153bdb 1623 RefreshScreenGood();
rempig 5:9cc383153bdb 1624 STATEMACHINE = DONESTATE;
rempig 5:9cc383153bdb 1625 break;
rempig 5:9cc383153bdb 1626
rempig 5:9cc383153bdb 1627 case DONESTATE:
rempig 5:9cc383153bdb 1628 break;
rempig 5:9cc383153bdb 1629
rempig 5:9cc383153bdb 1630
rempig 5:9cc383153bdb 1631 default:
rempig 5:9cc383153bdb 1632
rempig 5:9cc383153bdb 1633 break;
rempig 5:9cc383153bdb 1634 }
rempig 5:9cc383153bdb 1635 } //end while
rempig 5:9cc383153bdb 1636 }