This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

SDRAM issue

Hi All,

We have interfaced 1 SDRAM to LPC3250 (Lower 16 bit data line) .This SDRAM is from Micron technolgies 32 MB(MT48LC16M16A2).

Now problem is that we are not sure whether ,can we run our application code from the SDRAM ,because access from processor will be 32 bit wide , since we didn't connected anything on upper data line we will read junk values .

After seeing the refrence schematics provided by NXP we concluded that there is mistake in our hardware we should have connected 2 SDRAM (one on upper 16 bit and othe on Lower 16 bit) .

Question :

Is there still some way to run our code , can we build our code with THUMB instruction (16 bit)and run the code.

Please give your valuable feedback.

Thanks & Regards
Sumit

Parents Reply Children
  • If it has support for just 16-bit data width, then it must also have a configuration setting informing it that you only use 16-bit data width. Have you found such a configuration, and made sure it is correct?

  • Hi all,

    We configured LPC3250 to 16 bit mode but still we are not able to write into locations which are multiple of 2 as seen in log.
    Write operation is short (16 bit) ,below are the logs of write and read to SDR-SDRAM.

    Only one SDR-SDRAM is interfaced to LPC3250 on

    Chip select - EMC_DYCS0
    Data Bus D0- D15
    Address Line A0- A14
    EMC_DQM0
    EMC_DQM1
    EMC_CLK
    EMC_CLKEN
    EMC_RAS
    EMC_WR
    EMC_CAS
    EMC_CLK

    Write :
    Mem Loc: value
    0x80000000 0x1111
    0x80000002 0x2222
    0x80000004 0x3333
    0x80000006 0x4444
    0x80000008 0x5555
    0x8000000A 0x6666

    Read :
    Mem Loc: value
    0x80000000 0x1111
    0x80000002 0x1111
    0x80000004 0x3333
    0x80000006 0x3333
    0x80000008 0x5555
    0x8000000A 0x5555

    Please throw some light on the matter

    Thanks & Regards
    Sumit

  • Hi all,

    To the earlier post we would like to add another observation

    if write happens only on location which are offset of 2 starting from 0x80000002, when we are reading nothing is written into memory please refer below log for clarity

    Write :
    Mem Loc: value

    0x80000002 0x2222
    0x80000006 0x4444
    0x8000000A 0x6666

    Read :
    Mem Loc: value
    0x80000000 0x33cc
    0x80000002 0x33cc
    0x80000004 0x33cc
    0x80000006 0x33cc
    0x80000008 0x33cc
    0x8000000A 0x33cc

    Please throw some light on the matter

    Thanks & Regards
    Sumit

  • "But why it fails if it support both ,can you please elaborate it"

    "Please throw some light on the matter"

    You must configure both the controller and the SDRAM correctly. There are plenty of combinations that don't work correctly - Looks like you've got one of them.

  • But if it is configuration problem then we should not write a single location properly,Can you provide any link where we can find some code (tested) where LPC3250 is interfaced with SDRAM on 16 bit interface for cross checking our code.

    Thanks & Regards
    Sumit

  • "But if it is configuration problem then we should not write a single location properly"

    That is not correct. There are many configuration combinations - Some of those can appear to partially work.

  • If the processor thinks the memory interface is 32 bit wide but the interface is only 16 bit wide, you obviously have a good change that a 4 byte wide write at first address of the memory will result in two of the bytes being correctly saved (since they map to the existing 16 bits) and two bytes fails to save. If you only test using 16-bit integers, you will not notice this.

    Don't be so quick making assumptions. Only assume what you can prove. What you can't prove should be downgraded to maybe a suspicion. After all, a large percentage of all software errors are caused by people who have made incorrect assumptions.