<?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 Debugging EMC in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Debugging-EMC/m-p/546931#M13378</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by arainho on Tue Jan 29 03:21:02 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;HI All,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am debugging a new board and I am having a bit of trouble with EMC (with a MT48LC4M32B2P). &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's basicaly working but when I write to one memory address say 0xa0000 0000 it´s replicated at 0xa0000 0100, it I write at 0xa0000 0100 it also writes at 0xa0000 0000. So basicaly 256 bytes replicate to the next 256 bytes. I tought it might be a short in the address lines, but have checked all address lines and they are ok. It also does the same thing when I change to Row, Bank, Col mode.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any ideas on debugging this.&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;Alfredo&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;===================================================&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void EMCInit(void) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; volatile uint32_t CmdDly;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; volatile uint32_t Dummy;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; volatile uint32_t i;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SC-&amp;gt;PCONP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1 &amp;lt;&amp;lt; 11);&amp;nbsp;&amp;nbsp; // Turn on EMC peripheral clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SC-&amp;gt;EMCDLYCTL&amp;nbsp; = 0x00001010;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;Control&amp;nbsp;&amp;nbsp; = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // EMC enable&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;Config&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Port init&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_0&amp;nbsp; |= 1;&amp;nbsp; // D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_1&amp;nbsp; |= 1;&amp;nbsp; // D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_2&amp;nbsp; |= 1;&amp;nbsp; // D2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_3&amp;nbsp; |= 1;&amp;nbsp; // D3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_4&amp;nbsp; |= 1;&amp;nbsp; // D4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_5&amp;nbsp; |= 1;&amp;nbsp; // D5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_6&amp;nbsp; |= 1;&amp;nbsp; // D6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_7&amp;nbsp; |= 1;&amp;nbsp; // D7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_8&amp;nbsp; |= 1;&amp;nbsp; // D8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_9&amp;nbsp; |= 1;&amp;nbsp; // D9&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_10 |= 1;&amp;nbsp; // D10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_11 |= 1;&amp;nbsp; // D11&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_12 |= 1;&amp;nbsp; // D12&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_13 |= 1;&amp;nbsp; // D13&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_14 |= 1;&amp;nbsp; // D14&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_15 |= 1;&amp;nbsp; // D15&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_16 |= 1;&amp;nbsp; // D16&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_17 |= 1;&amp;nbsp; // D17&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_18 |= 1;&amp;nbsp; // D18&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_19 |= 1;&amp;nbsp; // D19&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_20 |= 1;&amp;nbsp; // D20&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_21 |= 1;&amp;nbsp; // D21&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_22 |= 1;&amp;nbsp; // D22&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_23 |= 1;&amp;nbsp; // D23&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_24 |= 1;&amp;nbsp; // D24&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_25 |= 1;&amp;nbsp; // D25&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_26 |= 1;&amp;nbsp; // D26&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_27 |= 1;&amp;nbsp; // D27&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_28 |= 1;&amp;nbsp; // D28&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_29 |= 1;&amp;nbsp; // D29&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_30 |= 1;&amp;nbsp; // D30&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_31 |= 1;&amp;nbsp; // D31&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_0&amp;nbsp; |= 1;&amp;nbsp; // A0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_1&amp;nbsp; |= 1;&amp;nbsp; // A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_2&amp;nbsp; |= 1;&amp;nbsp; // A2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_3&amp;nbsp; |= 1;&amp;nbsp; // A3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_4&amp;nbsp; |= 1;&amp;nbsp; // A4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_5&amp;nbsp; |= 1;&amp;nbsp; // A5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_6&amp;nbsp; |= 1;&amp;nbsp; // A6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_7&amp;nbsp; |= 1;&amp;nbsp; // A7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_8&amp;nbsp; |= 1;&amp;nbsp; // A8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_9&amp;nbsp; |= 1;&amp;nbsp; // A9&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_10 |= 1;&amp;nbsp; // A10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_11 |= 1;&amp;nbsp; // A11&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_12 |= 1;&amp;nbsp; // A12&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_13 |= 1;&amp;nbsp; // A13&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_14 |= 1;&amp;nbsp; // A14&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_25 |= 1;&amp;nbsp; // WE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_16 |= 1;&amp;nbsp; // CAS&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_17 |= 1;&amp;nbsp; // RAS&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_28 |= 1;&amp;nbsp; // DQMOUT0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_29 |= 1;&amp;nbsp; // DQMOUT1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_30 |= 1;&amp;nbsp; // DQMOUT2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_31 |= 1;&amp;nbsp; // DQMOUT3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_18 |= 1;&amp;nbsp; // CLKOUT0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_19 |= 1;&amp;nbsp; // CLKOUT1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_24 |= 1;&amp;nbsp; // CKEOUT0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_20 |= 1;&amp;nbsp; // DYCS0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Setup EMC config for SDRAM, timings for 60MHz bus&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;DynamicConfig0&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00005500;&amp;nbsp; // 128MB, 4Mx32, 4 banks, 12 rows, 8 columns, buffers disabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicRasCas0&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000202;&amp;nbsp; // 2 RAS, 2 CAS latency */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicReadConfig = 0x00000001;&amp;nbsp; // Command delayed strategy, using EMCCLKDELAY&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; = 0x00000002;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000005;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000008;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000001;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000005;&amp;nbsp; // n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clock cycles&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; = 0x00000001;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000008;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000008;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000008;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000001;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000001;&amp;nbsp; // n + 1 clock cycles&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; delayMs(100);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicControl&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000183;&amp;nbsp; // Issue NOP command&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; delayMs(200);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicControl&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000103;&amp;nbsp; // Issue PALL command&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicRefresh&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000002;&amp;nbsp; // n * 16 clock cycles&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; for (i = 0; i &amp;lt; 0x80; i++);&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; // Wait 128 AHB clock cycles&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicRefresh&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x0000003A;&amp;nbsp; // n * 16 clock cycles&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Init SDRAM&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;DynamicControl = 0x00000083;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Issue MODE command&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; Dummy = *((volatile uint32_t*)(SDRAM_BASE_ADDR | (0x22 &amp;lt;&amp;lt; (8+2))));&amp;nbsp; // 4 burst, 2 CAS latency , col row bank&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicControl = 0x00000000;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Issue NORMAL command&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicConfig0 = 0x000085500;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable buffers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Auto calibrate timings&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; CmdDly = _CalibrateOsc();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Find best delay values&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; _TestSDRAM();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; _FindDelay(0);&amp;nbsp; // EMCDLY&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; _FindDelay(1);&amp;nbsp; // FBCLKDLY&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; _AdjustEMCTiming(CmdDly);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 18:30:54 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T18:30:54Z</dc:date>
    <item>
      <title>Debugging EMC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Debugging-EMC/m-p/546931#M13378</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by arainho on Tue Jan 29 03:21:02 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;HI All,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am debugging a new board and I am having a bit of trouble with EMC (with a MT48LC4M32B2P). &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's basicaly working but when I write to one memory address say 0xa0000 0000 it´s replicated at 0xa0000 0100, it I write at 0xa0000 0100 it also writes at 0xa0000 0000. So basicaly 256 bytes replicate to the next 256 bytes. I tought it might be a short in the address lines, but have checked all address lines and they are ok. It also does the same thing when I change to Row, Bank, Col mode.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any ideas on debugging this.&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;Alfredo&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;===================================================&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void EMCInit(void) &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; volatile uint32_t CmdDly;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; volatile uint32_t Dummy;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; volatile uint32_t i;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SC-&amp;gt;PCONP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1 &amp;lt;&amp;lt; 11);&amp;nbsp;&amp;nbsp; // Turn on EMC peripheral clock&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_SC-&amp;gt;EMCDLYCTL&amp;nbsp; = 0x00001010;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;Control&amp;nbsp;&amp;nbsp; = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // EMC enable&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;Config&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Port init&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_0&amp;nbsp; |= 1;&amp;nbsp; // D0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_1&amp;nbsp; |= 1;&amp;nbsp; // D1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_2&amp;nbsp; |= 1;&amp;nbsp; // D2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_3&amp;nbsp; |= 1;&amp;nbsp; // D3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_4&amp;nbsp; |= 1;&amp;nbsp; // D4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_5&amp;nbsp; |= 1;&amp;nbsp; // D5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_6&amp;nbsp; |= 1;&amp;nbsp; // D6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_7&amp;nbsp; |= 1;&amp;nbsp; // D7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_8&amp;nbsp; |= 1;&amp;nbsp; // D8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_9&amp;nbsp; |= 1;&amp;nbsp; // D9&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_10 |= 1;&amp;nbsp; // D10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_11 |= 1;&amp;nbsp; // D11&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_12 |= 1;&amp;nbsp; // D12&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_13 |= 1;&amp;nbsp; // D13&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_14 |= 1;&amp;nbsp; // D14&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_15 |= 1;&amp;nbsp; // D15&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_16 |= 1;&amp;nbsp; // D16&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_17 |= 1;&amp;nbsp; // D17&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_18 |= 1;&amp;nbsp; // D18&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_19 |= 1;&amp;nbsp; // D19&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_20 |= 1;&amp;nbsp; // D20&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_21 |= 1;&amp;nbsp; // D21&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_22 |= 1;&amp;nbsp; // D22&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_23 |= 1;&amp;nbsp; // D23&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_24 |= 1;&amp;nbsp; // D24&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_25 |= 1;&amp;nbsp; // D25&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_26 |= 1;&amp;nbsp; // D26&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_27 |= 1;&amp;nbsp; // D27&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_28 |= 1;&amp;nbsp; // D28&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_29 |= 1;&amp;nbsp; // D29&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_30 |= 1;&amp;nbsp; // D30&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P3_31 |= 1;&amp;nbsp; // D31&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_0&amp;nbsp; |= 1;&amp;nbsp; // A0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_1&amp;nbsp; |= 1;&amp;nbsp; // A1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_2&amp;nbsp; |= 1;&amp;nbsp; // A2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_3&amp;nbsp; |= 1;&amp;nbsp; // A3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_4&amp;nbsp; |= 1;&amp;nbsp; // A4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_5&amp;nbsp; |= 1;&amp;nbsp; // A5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_6&amp;nbsp; |= 1;&amp;nbsp; // A6&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_7&amp;nbsp; |= 1;&amp;nbsp; // A7&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_8&amp;nbsp; |= 1;&amp;nbsp; // A8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_9&amp;nbsp; |= 1;&amp;nbsp; // A9&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_10 |= 1;&amp;nbsp; // A10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_11 |= 1;&amp;nbsp; // A11&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_12 |= 1;&amp;nbsp; // A12&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_13 |= 1;&amp;nbsp; // A13&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_14 |= 1;&amp;nbsp; // A14&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P4_25 |= 1;&amp;nbsp; // WE&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_16 |= 1;&amp;nbsp; // CAS&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_17 |= 1;&amp;nbsp; // RAS&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_28 |= 1;&amp;nbsp; // DQMOUT0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_29 |= 1;&amp;nbsp; // DQMOUT1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_30 |= 1;&amp;nbsp; // DQMOUT2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_31 |= 1;&amp;nbsp; // DQMOUT3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_18 |= 1;&amp;nbsp; // CLKOUT0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_19 |= 1;&amp;nbsp; // CLKOUT1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_24 |= 1;&amp;nbsp; // CKEOUT0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_IOCON-&amp;gt;P2_20 |= 1;&amp;nbsp; // DYCS0&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Setup EMC config for SDRAM, timings for 60MHz bus&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;DynamicConfig0&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00005500;&amp;nbsp; // 128MB, 4Mx32, 4 banks, 12 rows, 8 columns, buffers disabled&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicRasCas0&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000202;&amp;nbsp; // 2 RAS, 2 CAS latency */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicReadConfig = 0x00000001;&amp;nbsp; // Command delayed strategy, using EMCCLKDELAY&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; = 0x00000002;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000005;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000008;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000001;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000005;&amp;nbsp; // n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clock cycles&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; = 0x00000001;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000008;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000008;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000008;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000001;&amp;nbsp; // n + 1 clock cycles&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; = 0x00000001;&amp;nbsp; // n + 1 clock cycles&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; delayMs(100);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicControl&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000183;&amp;nbsp; // Issue NOP command&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; delayMs(200);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicControl&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000103;&amp;nbsp; // Issue PALL command&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicRefresh&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000002;&amp;nbsp; // n * 16 clock cycles&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; for (i = 0; i &amp;lt; 0x80; i++);&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; // Wait 128 AHB clock cycles&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicRefresh&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x0000003A;&amp;nbsp; // n * 16 clock cycles&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Init SDRAM&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;DynamicControl = 0x00000083;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Issue MODE command&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; Dummy = *((volatile uint32_t*)(SDRAM_BASE_ADDR | (0x22 &amp;lt;&amp;lt; (8+2))));&amp;nbsp; // 4 burst, 2 CAS latency , col row bank&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicControl = 0x00000000;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Issue NORMAL command&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; LPC_EMC-&amp;gt;DynamicConfig0 = 0x000085500;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable buffers&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Auto calibrate timings&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; CmdDly = _CalibrateOsc();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // Find best delay values&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; //&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; _TestSDRAM();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; _FindDelay(0);&amp;nbsp; // EMCDLY&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; _FindDelay(1);&amp;nbsp; // FBCLKDLY&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; _AdjustEMCTiming(CmdDly);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:30:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Debugging-EMC/m-p/546931#M13378</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:30:54Z</dc:date>
    </item>
    <item>
      <title>Re: Debugging EMC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Debugging-EMC/m-p/546932#M13379</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by arainho on Tue Jan 29 12:05:31 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Decided to replace the SDRam chip and now it´s working like it should!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Alfredo&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:30:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Debugging-EMC/m-p/546932#M13379</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:30:56Z</dc:date>
    </item>
  </channel>
</rss>

