I've built a custom AVR32UC3A0256 board based on the EVK110 development kit, but I use an 8MB ISSI SDRAM model instead of the 32MB Micron's model ( the model that comes with the EVK110 ) . ISSI's model is pincompatible with Micron's model. The only diference is that it uses one adress bit less.
I configured all AVR32 registers involved in the SDRAM access and I can read and write the entire memory, but my problem apears when I read sequentially a "big part" of the memory. I mean, if I exectue a large quantity of sequential reads over the memory I start to loose data, but if I insert some SDRAM write instuctions while I'am reading the SDRAM I don't lose any data. It seems like the SDRAM does not refresh properly while is being sequentially read , and the problem disapears if I force some write instruction while I'm reading.
// fill a part of the SDRAM for (i = 0; i <260000;i++){ sdram[i]=(unsigned long)(i%255); } float_aux=long_aux; // check written values for (i = 0; i <260000;i++){ /* If I uncoment this part of the code, it works if ((i%2048)==0){ sdram[i]=i%255; }*/ if (sdram[i]!=(unsigned long)(i%255)){ num_errors++; }else{ num_ok++; }//if }//for
It seems like the SDRAM doesn't refresh properly while is being sequentially read unless I place some write instructions in the middle. Probably I'am not configuring properly any of the registers.
Any idea?
Thanks