2015-02-06 06:02 AM
I'm developing a prototype using STM32F4 - to start a first prototype I started to write the software for the STM32F429I-DISCO board. I used clive's init code to drive the 64Mbit SDRAM onboard - it works like a charm. Now on the prototype I will need 128Mbit so I had a professional de-solder the original memory chip and exchanged it for a 128Mbit Type: AS4C8M16S.
Both chips are pin-compatible and the only differences I can spot are concerning timing and adressing. This chips has 9 Column Adress lines while the other had only 8. The significant change was: FMC_Bank5_6->SDCR[0] = 0x00002800; to FMC_Bank5_6->SDCR[0] = 0x00002801; When I run the application the memory is configured and I get into main but then it seems to crash. In my memory view I can see some (weird) values in the memory. How do I have to adjust the timing to get this RAM to work? Thanks in advance.2015-02-06 10:15 AM
Generally all the timing parameters have a similar naming convention.
What you have to do is consider the speed at which you are running the part/bus, and quantify the timing in cycles of that clock (say 84 or 90 MHz, vs the 100,133,166 MHz of the part) 90 MHz -> 11.11 ns cycles, if something needs >=50ns that would be 5 cycles Also review the refresh period, vs the rows it has to traverse, vs the clock speed.2015-02-09 12:17 AM
2015-02-09 12:34 AM
Edit: when I say ''crashing'' I mean the hard fault handler is called.