<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Trouble getting SDRAM up and going in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563731#M16727</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bunrockter on Tue Aug 07 00:32:29 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using the Hitex LPC4350 eval board. I have been able to get it up and running and get my code going. It is now time to hook up an external LCD, but I need to have SDRAM working to have a place to store a frame buffer that is big enough.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First off I am seeing some weird behavior. I am using crossworks, and after initializing the RAM (I hope), when I look at it in the memory viewer the first 32 bit word will change its higher addressed 16 bits between 2 values when I request a memory read. Then eventually all of the memory becomes 0xAAAAAAAA including the registers. The JTAG can't stop the processor, I have to reset the board to get control back.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have even and a verification error that tells me that the JTAG and what crossworks thought it programmed were not the same. A few times there were all A's and other times there were interleaved block that were invalid.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now I am at the point, that as soon as I enter the break point on the first line of my code to initialize SDRAM the processor hangs, and I have to reset. If I comment out the call to the method things work just fine, and my other code works great.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Needless to say I am confused, as the first line of code is just a write to a bit int the ECM Control register that should already be set on reset. Is there something else going on? Anyways here is my code&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bun&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //EMC Config&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONTROL |= (1UL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable EMC&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONTROL |= (1UL &amp;lt;&amp;lt; 2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Low Power Clocks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONTROL &amp;amp;= !(1UL &amp;lt;&amp;lt; 1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable normal memory map mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONFIG |= (1UL &amp;lt;&amp;lt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set clk to half mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //clock configuration&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_CCU1-&amp;gt;CLK_M4_EMC_CFG |= (1 &amp;lt;&amp;lt; 5);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set the clock divider into the emc to divide by 2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_CREG-&amp;gt;CREG6 |= (1 &amp;lt;&amp;lt; 16);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Configuration common to all dynamic memories&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1UL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set All clocks high&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(15625UL)&amp;gt;&amp;gt;4;&amp;nbsp;&amp;nbsp; // Multiples of 16 CLK (1=16)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREADCONFIG&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(1UL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Do not leave at 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(18UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRP- (n+1 (my data sheet has tRP but no tPR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRAS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(42UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRAS - (n+1) (Data sheet says 42-1000)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICSREX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(66UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tSREX,tXSR- (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICAPR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 3UL -1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tAPR - n+1&amp;nbsp; (Not found in data sheet)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICDAL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(18UL) +2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tDAL,tAPW - 2 clk + trp (18ns) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICWR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2UL -1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tWRt,tDPL,tRWL,,tRDL - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(60UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRC - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRFC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(60UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRFC,tRC - (n+1)&amp;nbsp; TODO: couldn't find value used tRC&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICXSR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(66UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tXSR - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRRD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(12UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRRD - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICMRD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2UL -1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tMRD,tRSA - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Configuration specific to each memory by chip select (only setting up chip select 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Address mapping for our part (IS42S16400F-6TL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // 14 12&amp;nbsp; 11:9&amp;nbsp; 8:7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // 0&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 001&amp;nbsp;&amp;nbsp; 01&amp;nbsp;&amp;nbsp; 64 Mb (4Mx16), 4 banks, row length = 12, column length = 8&amp;nbsp; enhanced&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // 0&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 001&amp;nbsp;&amp;nbsp; 01&amp;nbsp;&amp;nbsp; 64 Mb (4Mx16), 4 banks, row length = 12, column length = 8&amp;nbsp; normal&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1UL &amp;lt;&amp;lt; 7);&amp;nbsp;&amp;nbsp;&amp;nbsp; //AM0 12:7 Address mapping&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1UL &amp;lt;&amp;lt; 9);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1UL &amp;lt;&amp;lt; 12);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRASCAS0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (3UL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //RAS latency&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRASCAS0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (3UL &amp;lt;&amp;lt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp; //CAS latency picked from datasheet and drives all other values&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Initialization of the SDRAM&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL = (1UL &amp;lt;&amp;lt; 0) | (1UL &amp;lt;&amp;lt; 1) | (0 &amp;lt;&amp;lt; 7); //CS=1 CE=1 OP=Normal&amp;nbsp;&amp;nbsp; Send idle&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; waitUS(100);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL = (1UL &amp;lt;&amp;lt; 0) | (1UL &amp;lt;&amp;lt; 1) | (2 &amp;lt;&amp;lt; 7); //CS=1 CE=1 OP=Precharge&amp;nbsp; Send precharge&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; waitUS(100);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH = N_TO_EMC_CLOCKS(15625UL) &amp;gt;&amp;gt;4;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; waitUS(100);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL = (1UL &amp;lt;&amp;lt; 0) | (1UL &amp;lt;&amp;lt; 1) | (1 &amp;lt;&amp;lt; 7); //CS=1 CE=1 OP=MODE Send mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_t modeRegValue = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= 3UL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //8 burst&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= (0UL &amp;lt;&amp;lt; 3); //Sequential&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= (3UL &amp;lt;&amp;lt; 4); //CAS of 3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= (0UL &amp;lt;&amp;lt; 7); //standard&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= (0UL &amp;lt;&amp;lt; 9); //programed&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue = SDRAM0_ADDR + (modeRegValue &amp;lt;&amp;lt; (8 + 1 + 2));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue = *((volatile uint32_t *)modeRegValue);&amp;nbsp; // Set mode register! &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; waitUS(200);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL = 0;//(0UL &amp;lt;&amp;lt; 0) | (0UL &amp;lt;&amp;lt; 1) | (0 &amp;lt;&amp;lt; 7); //CS=0 CE=0 OP=MODE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0 = (1UL &amp;lt;&amp;lt; 19);&amp;nbsp;&amp;nbsp; //enable buffers&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Mem Test&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; volatile uint32_t * ramPtr = (volatile uint32_t *)(SDRAM0_ADDR);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_t testVal = 0x102;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; while((uint32_t)ramPtr &amp;lt; (SDRAM0_ADDR + 4000000UL))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *ramPtr = testVal;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++ramPtr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; testVal += 0x101;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:48:46 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:48:46Z</dc:date>
    <item>
      <title>Trouble getting SDRAM up and going</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563731#M16727</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bunrockter on Tue Aug 07 00:32:29 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using the Hitex LPC4350 eval board. I have been able to get it up and running and get my code going. It is now time to hook up an external LCD, but I need to have SDRAM working to have a place to store a frame buffer that is big enough.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First off I am seeing some weird behavior. I am using crossworks, and after initializing the RAM (I hope), when I look at it in the memory viewer the first 32 bit word will change its higher addressed 16 bits between 2 values when I request a memory read. Then eventually all of the memory becomes 0xAAAAAAAA including the registers. The JTAG can't stop the processor, I have to reset the board to get control back.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have even and a verification error that tells me that the JTAG and what crossworks thought it programmed were not the same. A few times there were all A's and other times there were interleaved block that were invalid.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now I am at the point, that as soon as I enter the break point on the first line of my code to initialize SDRAM the processor hangs, and I have to reset. If I comment out the call to the method things work just fine, and my other code works great.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Needless to say I am confused, as the first line of code is just a write to a bit int the ECM Control register that should already be set on reset. Is there something else going on? Anyways here is my code&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bun&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //EMC Config&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONTROL |= (1UL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable EMC&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONTROL |= (1UL &amp;lt;&amp;lt; 2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Low Power Clocks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONTROL &amp;amp;= !(1UL &amp;lt;&amp;lt; 1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Enable normal memory map mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONFIG |= (1UL &amp;lt;&amp;lt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set clk to half mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //clock configuration&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_CCU1-&amp;gt;CLK_M4_EMC_CFG |= (1 &amp;lt;&amp;lt; 5);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set the clock divider into the emc to divide by 2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_CREG-&amp;gt;CREG6 |= (1 &amp;lt;&amp;lt; 16);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Configuration common to all dynamic memories&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1UL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set All clocks high&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(15625UL)&amp;gt;&amp;gt;4;&amp;nbsp;&amp;nbsp; // Multiples of 16 CLK (1=16)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREADCONFIG&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(1UL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Do not leave at 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(18UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRP- (n+1 (my data sheet has tRP but no tPR&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRAS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(42UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRAS - (n+1) (Data sheet says 42-1000)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICSREX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(66UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tSREX,tXSR- (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICAPR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 3UL -1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tAPR - n+1&amp;nbsp; (Not found in data sheet)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICDAL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(18UL) +2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tDAL,tAPW - 2 clk + trp (18ns) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICWR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2UL -1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tWRt,tDPL,tRWL,,tRDL - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(60UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRC - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRFC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(60UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRFC,tRC - (n+1)&amp;nbsp; TODO: couldn't find value used tRC&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICXSR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(66UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tXSR - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRRD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = N_TO_EMC_CLOCKS(12UL) - 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tRRD - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICMRD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2UL -1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // tMRD,tRSA - (n+1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Configuration specific to each memory by chip select (only setting up chip select 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Address mapping for our part (IS42S16400F-6TL)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // 14 12&amp;nbsp; 11:9&amp;nbsp; 8:7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // 0&amp;nbsp; 0&amp;nbsp;&amp;nbsp; 001&amp;nbsp;&amp;nbsp; 01&amp;nbsp;&amp;nbsp; 64 Mb (4Mx16), 4 banks, row length = 12, column length = 8&amp;nbsp; enhanced&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // 0&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 001&amp;nbsp;&amp;nbsp; 01&amp;nbsp;&amp;nbsp; 64 Mb (4Mx16), 4 banks, row length = 12, column length = 8&amp;nbsp; normal&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1UL &amp;lt;&amp;lt; 7);&amp;nbsp;&amp;nbsp;&amp;nbsp; //AM0 12:7 Address mapping&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1UL &amp;lt;&amp;lt; 9);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1UL &amp;lt;&amp;lt; 12);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRASCAS0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (3UL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //RAS latency&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRASCAS0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (3UL &amp;lt;&amp;lt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp; //CAS latency picked from datasheet and drives all other values&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Initialization of the SDRAM&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL = (1UL &amp;lt;&amp;lt; 0) | (1UL &amp;lt;&amp;lt; 1) | (0 &amp;lt;&amp;lt; 7); //CS=1 CE=1 OP=Normal&amp;nbsp;&amp;nbsp; Send idle&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; waitUS(100);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL = (1UL &amp;lt;&amp;lt; 0) | (1UL &amp;lt;&amp;lt; 1) | (2 &amp;lt;&amp;lt; 7); //CS=1 CE=1 OP=Precharge&amp;nbsp; Send precharge&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH = 1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; waitUS(100);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH = N_TO_EMC_CLOCKS(15625UL) &amp;gt;&amp;gt;4;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; waitUS(100);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL = (1UL &amp;lt;&amp;lt; 0) | (1UL &amp;lt;&amp;lt; 1) | (1 &amp;lt;&amp;lt; 7); //CS=1 CE=1 OP=MODE Send mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_t modeRegValue = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= 3UL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //8 burst&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= (0UL &amp;lt;&amp;lt; 3); //Sequential&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= (3UL &amp;lt;&amp;lt; 4); //CAS of 3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= (0UL &amp;lt;&amp;lt; 7); //standard&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue |= (0UL &amp;lt;&amp;lt; 9); //programed&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue = SDRAM0_ADDR + (modeRegValue &amp;lt;&amp;lt; (8 + 1 + 2));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; modeRegValue = *((volatile uint32_t *)modeRegValue);&amp;nbsp; // Set mode register! &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; waitUS(200);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL = 0;//(0UL &amp;lt;&amp;lt; 0) | (0UL &amp;lt;&amp;lt; 1) | (0 &amp;lt;&amp;lt; 7); //CS=0 CE=0 OP=MODE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0 = (1UL &amp;lt;&amp;lt; 19);&amp;nbsp;&amp;nbsp; //enable buffers&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //Mem Test&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; volatile uint32_t * ramPtr = (volatile uint32_t *)(SDRAM0_ADDR);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; uint32_t testVal = 0x102;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; while((uint32_t)ramPtr &amp;lt; (SDRAM0_ADDR + 4000000UL))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *ramPtr = testVal;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++ramPtr;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; testVal += 0x101;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:48:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563731#M16727</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:48:46Z</dc:date>
    </item>
    <item>
      <title>Re: Trouble getting SDRAM up and going</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563732#M16728</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by PhilYoung on Tue Aug 07 14:38:13 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I would be inclined to follow the user manual rules more carefully on this register, i.e. do not simply or bits, it specifically states that bits 31:3 read as undefined but must NOT be set, so you should apply a mask when updating the EMC control register.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In&amp;nbsp; most cases it doesn't matter, but there are always exceptions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:48:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563732#M16728</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:48:47Z</dc:date>
    </item>
    <item>
      <title>Re: Trouble getting SDRAM up and going</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563733#M16729</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bunrockter on Tue Aug 07 21:51:53 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the tip. I made the change, however, I am still having issues. I have commented out all of my SDRAM code, and I put a break point on the first functiuon that I call from SystemInit. That function sets the clock. As soon as I hit a break point. All of the registers in my debug windows read 0xfefefefe and the board CPU never returns control after I hit the execute line command. Any clue as to whats going on? Did I overwrite the boot code or something in ROM somehow?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help is appreciated. Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:48:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563733#M16729</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:48:47Z</dc:date>
    </item>
    <item>
      <title>Re: Trouble getting SDRAM up and going</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563734#M16730</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bunrockter on Tue Aug 07 23:08:07 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Well, After I started my program and stopped it during the start up script I hit the reset button inside of crossworks, and magically all of my register went to their normal values? However when I switch PLL1 to external oscilator mode it dies :(&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; just about had the PLL1 worked out when it crapped out again, and now it is writing 0xFEFEFEFE to the registers, and the reset button isn't working. I am at a loss here&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:48:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563734#M16730</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:48:48Z</dc:date>
    </item>
    <item>
      <title>Re: Trouble getting SDRAM up and going</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563735#M16731</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bunrockter on Thu Aug 09 00:35:28 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Crossworks support thinks it is a bad program in my flash? I booted from a different flash source and it didn't help. I ended up moving my files into a new project, and now it works?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyways, I followed your advice and tried to use ='s instead of oring with the registers, I am still not having much luck. I dropped my CPU clock down to 165 since the chip can only run at 166 &amp;amp; that keeps me from having to cut the EMCclock in half.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I put my code in a file this time so that formatting will be preserved. If anyone spots anything I don't I would greatly appreciate the help. right now when I write to the SDRAM and then try to do a read with my JTAG I get back different data every time.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Bun&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:48:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563735#M16731</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:48:48Z</dc:date>
    </item>
    <item>
      <title>Re: Trouble getting SDRAM up and going</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563736#M16732</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bunrockter on Wed Sep 26 17:39:59 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;My problem was the timing register. I had to look at a different example before I found out that there was even a timing register. I think I have it set at 3.5 nS.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:48:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Trouble-getting-SDRAM-up-and-going/m-p/563736#M16732</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:48:49Z</dc:date>
    </item>
  </channel>
</rss>

