Das Problem tritt bei EVE4-Modulen auf, wenn sich der Treiber mit dem Flash-Speicher verbindet, aber nicht initialisiert. Manchmal müssen die Module unter verschiedenen Umgebungsbedingungen arbeiten. Dieser Fehler tritt auf, wenn die Temperaturbedingungen wie folgt sind 5°C.
Um dieses Problem zu lösen, fügen Sie den folgenden Init-Code zum Start des Moduls hinzu:
void App_Common_Init(Gpu_Hal_Context_t *phost)
{Gpu_HalInit_t halinit;uint8_t chipid;Gpu_Hal_Init(&halinit);Gpu_Hal_Open(phost);Gpu_Hal_Powercycle(phost,TRUE);/* FT81x wird nach POR im SPI Single-Kanal seinWenn wir hier mit FT4222 im Mehrkanalbetrieb sind, danneine ausdrückliche Umstellung auf einen einzigen Kanal ist unerlässlich*/Gpu_HostCommand(phost,0x68);Gpu_Hal_Sleep(300);Gpu_HostCommand(phost,GPU_EXTERNAL_OSC);Gpu_81X_SelectSysCLK(phost, GPU_SYSCLK_72M);Gpu_Hal_Sleep(100);Gpu_HostCommand_Ext3(phost, 0x71| (0x14 << 10)|(0x02 << 8)); //Aufziehen in AusschaltenGpu_HostCommand_Ext3(phost, 0x71| (0x15 << 10)|(0x02 << 8));Gpu_HostCommand_Ext3(phost, 0x71| (0x16 << 10)|(0x02 << 8));Gpu_HostCommand_Ext3(phost, 0x71| (0x17 << 10)|(0x02 << 8));Gpu_HostCommand_Ext3(phost, 0x71| (0x18 << 10)|(0x02 << 8));Gpu_HostCommand_Ext3(phost, 0x71| (0x19 << 10)|(0x02 << 8));Gpu_HostCommand_Ext3(phost, 0x43); // zum Herunterfahren übergehenGpu_Hal_Sleep(100);Gpu_HostCommand(phost,GPU_ACTIVE_M);Gpu_Hal_Sleep(300);Gpu_Hal_Wr32(phost, REG_FREQUENCY, 72000000);uint32_t freq = Gpu_Hal_Rd32(phost, REG_FREQUENCY);/* Lesen Register ID, um zu prüfen, ob die Chip-ID-Serie korrekt ist */chipid = Gpu_Hal_Rd8(phost, REG_ID);while(chipid != 0x7C){chipid = Gpu_Hal_Rd8(phost, REG_ID);Gpu_Hal_Sleep(100);}/* Lesen REG_CPURESET, um sicherzustellen, dass 0 zurückgegeben wird */{uint8_t motor_status;/* Lesen REG_CPURESET, um zu prüfen, ob die Motoren bereit sind.Bit 0 für Coprozessor Motor,Bit 1 für Touch Engine,Bit 2 für Audio-Engine.*/engine_status = Gpu_Hal_Rd8(phost, REG_CPURESET);while(motor_status != 0x00){engine_status = Gpu_Hal_Rd8(phost, REG_CPURESET);Gpu_Hal_Sleep(100);}}Gpu_Hal_Wr16(phost, REG_PWM_HZ,10000);Gpu_Hal_Wr8(phost, REG_PWM_DUTY,128);uint16_t pwmHz = Gpu_Hal_Rd16(phost, REG_PWM_HZ);Gpu_Hal_Wr16(phost, REG_PCLK_FREQ, DispPLCLKFREQ);Gpu_Hal_Wr8(phost, REG_PCLK_2X, DispPCLK2x);/* Konfiguration der LCD-Anzeige */Gpu_Hal_Wr16(phost, REG_HCYCLE, DispHCycle);Gpu_Hal_Wr16(phost, REG_HOFFSET, DispHOffset);Gpu_Hal_Wr16(phost, REG_HSYNC0, DispHSync0);Gpu_Hal_Wr16(phost, REG_HSYNC1, DispHSync1);Gpu_Hal_Wr16(phost, REG_VCYCLE, DispVCycle);Gpu_Hal_Wr16(phost, REG_VOFFSET, DispVOffset);Gpu_Hal_Wr16(phost, REG_VSYNC0, DispVSync0);Gpu_Hal_Wr16(phost, REG_VSYNC1, DispVSync1);Gpu_Hal_Wr8(phost, REG_SWIZZLE, DispSwizzle);Gpu_Hal_Wr8(phost, REG_PCLK_POL, DispPCLKPol);Gpu_Hal_Wr16(phost, REG_HSIZE, DispWidth);Gpu_Hal_Wr16(phost, REG_VSIZE, DispHeight);Gpu_Hal_Wr16(phost, REG_CSPREAD, DispCSpread);Gpu_Hal_Wr16(phost, REG_DITHER, DispDither);//Gpu_Hal_Wr16(phost, REG_OUTBITS, 0x1b6);/* GPIO Konfiguration */#if definiert(FT81X_ENABLE)Gpu_Hal_Wr16(phost, REG_GPIOX_DIR, 0xffff);Gpu_Hal_Wr16(phost, REG_GPIOX, 0xfc00);#elseGpu_Hal_Wr8(phost, REG_GPIO_DIR,0xff);Gpu_Hal_Wr8(phost, REG_GPIO,0xff);#endifGpu_ClearScreen(phost);/* nachdem diese ist die Anzeige auf dem LCD-Display sichtbar */Gpu_Hal_Wr8(phost, REG_PCLK,DispPCLK);phost->cmd_fifo_wp = Gpu_Hal_Rd16(phost,REG_CMD_WRITE);
}