//-------------------------------------------------------------- // Init vom externen SDRAM // Return_wert : // -> ERROR , wenn SDRAM nicht gefunden wurde // -> SUCCESS , wenn SDRAM gefunden wurde //-------------------------------------------------------------- ErrorStatus UB_SDRAM_Init(void) { ErrorStatus ret_wert=ERROR; uint16_t oldwert,istwert; static uint8_t init_ok=0; // initialisierung darf nur einmal gemacht werden if(init_ok!=0) { if(init_ok==1) { return(SUCCESS); } else { return(ERROR); } } // IO-Lines initialisieren P_SDRAM_InitIO(); // FMC initialisieren P_SDRAM_InitFMC(); //----------------------------------------- // check ob SDRAM vorhanden ist // schreib-/lese-Test auf Adr 0x00 //----------------------------------------- oldwert=UB_SDRAM_Read16b(0x00); UB_SDRAM_Write16b(0x00, 0x5A3C); istwert=UB_SDRAM_Read16b(0x00); UB_SDRAM_Write16b(0x00, oldwert); if(istwert==0x5A3C) ret_wert=SUCCESS; // RAM vorhanden // init Mode speichern if(ret_wert==SUCCESS) { init_ok=1; } else { init_ok=2; } return(ret_wert); }
//-------------------------------------------------------------- // Init vom externen SDRAM // Return_wert : // -> ERROR , wenn SDRAM nicht gefunden wurde // -> SUCCESS , wenn SDRAM gefunden wurde //-------------------------------------------------------------- ErrorStatus UB_SDRAM_Init(void) { ErrorStatus result = ERROR; uint16_t old_value, new_value; static uint8_t init_ok = 0; // Initialization may be made only once if (init_ok == 0) { init_ok = 2; // IO-Lines initialisieren P_SDRAM_InitIO(); // FMC initialisieren P_SDRAM_InitFMC(); //----------------------------------------- // check ob SDRAM vorhanden ist // schreib-/lese-Test auf Adr 0x00 //----------------------------------------- old_value = UB_SDRAM_Read16b(0); UB_SDRAM_Write16b(0, 0x5A3C); new_value = UB_SDRAM_Read16b(0); UB_SDRAM_Write16b(0, old_value); if (new_value == 0x5A3C) { init_ok = 1; result = SUCCESS; } } else if (init_ok == 1) { result = SUCCESS; } return result; }