<?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 LPC43xx with EMC SDRAM fails under higher load in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC43xx-with-EMC-SDRAM-fails-under-higher-load/m-p/592721#M22410</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear LPC Community,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use a LPC4357 at 204MHz with an external SDRAM at 102MHz.&lt;/P&gt;&lt;P&gt;The SDRAM is a Micron MT48LC8M32B2 (&lt;A href="https://www.micron.com/~/media/documents/products/data-sheet/dram/256mbsdramx32.pdf" rel="nofollow noopener noreferrer" target="_blank"&gt;datasheet link&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I ~thought~ all was working fine (with quite frequent writes and reads of a few hundred to a few kBytes as a shared buffer between the cores - all DMA transfers), but now another function was added which reads larger chunks up 512kB and writes them to an SD card (also using some direct DMA transfer and the SDMMC DMA mode as part of the SDIF driver). The read also 'works' (the 512kB are written correct on the card) but afterwards the data in the SDRAM gets corrupted, at least for a while. I see 'gaps' (blank areas) and repeats of data from earlier in the SDRAM but can't really make out what exactly happens.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's my SDRAM initialization code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14709640196128461 jive_macro_code jive_text_macro" data-hasrefreshed="true" data-renderedposition="308_8_1168_2176" jivemacro_uid="_14709640196128461"&gt;&lt;P&gt;#define&amp;nbsp; BUFFER_BASE&amp;nbsp; 0x28000000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define&amp;nbsp; MS 8350&amp;nbsp; // for() loop count to delay 1 ms (measured)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void SDRAM_Init (void) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t pclk, temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint64_t tmpclk;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t i = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t MODE;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t OFFSET;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet( 2&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 10&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A1&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 11&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A2&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 12&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A3&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 13&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A4&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 0&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A5&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A6&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A7&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A8&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A9&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A10&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A11&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A12&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 0&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A13&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC1));&amp;nbsp; //A14&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D1&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D2&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 10&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D3&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 11&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D4&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 12&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D5&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 13&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D6&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 14&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D7&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 4&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D8&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D9&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D10&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D11&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 0&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D12&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D13&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D14&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 3&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D15&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D16&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 3&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D17&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 4&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D18&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D19&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D20&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D21&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D22&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D23&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D24&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D25&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D26&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D27&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D28&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 10&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D29&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 11&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D30&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 12&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D31&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 11&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; // CKEOUT0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_ClockPinMuxSet(0, (SCU_PINIO_FAST | SCU_MODE_FUNC0));&amp;nbsp; // CLK0 connected to EMC_CLK0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_ClockPinMuxSet(1, (SCU_PINIO_FAST | SCU_MODE_FUNC0));&amp;nbsp; // CLK1 connected to EMC_CLK1&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_ClockPinMuxSet(2, (SCU_PINIO_FAST | SCU_MODE_FUNC0));&amp;nbsp; // CLK2 connected to EMC_CLK3&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_ClockPinMuxSet(3, (SCU_PINIO_FAST | SCU_MODE_FUNC0));&amp;nbsp; // CLK3 connected to EMC_CLK2&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 12&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //DQMOUT0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 10&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //DQMOUT1&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D,&amp;nbsp; 0&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //DQMOUT2&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E,&amp;nbsp; 13&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //DQMOUT3&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 4&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //CAS&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //RAS&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //WE&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //DYCS0&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Select EMC clock-out */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;SFSCLK[0] = SCU_PINIO_FAST;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;SFSCLK[1] = SCU_PINIO_FAST;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;SFSCLK[2] = SCU_PINIO_FAST;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;SFSCLK[3] = SCU_PINIO_FAST;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Setup EMC Delays */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;EMCDELAYCLK = 0x7777; // ~3.5 ns delay&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_CCU1-&amp;gt;CLKCCU[CLK_MX_EMC_DIV].CFG |= (1 &amp;lt;&amp;lt; 5);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_CREG-&amp;gt;CREG6 |= (1 &amp;lt;&amp;lt; 16);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; pclk = Chip_Clock_GetEMCRate();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONTROL&amp;nbsp;&amp;nbsp; = 0x00000001;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONFIG&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1 &amp;lt;&amp;lt; 14 | 0 &amp;lt;&amp;lt; 12 | 2 &amp;lt;&amp;lt; 9 | 1 &amp;lt;&amp;lt; 7; /* RBC 256Mb, 8Mx32, 4 banks, row=12, column=9 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRASCAS0&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;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRASCAS0&amp;nbsp;&amp;nbsp; |= (3UL &amp;lt;&amp;lt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp; //CAS latency&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREADCONFIG = 0x00000001; /* Command delayed strategy, using EMCCLKDELAY */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 20);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRAS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 42);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICSREX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 63);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICAPR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000005;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICDAL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000005;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICWR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 63);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRFC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 63);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICXSR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 63);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRRD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 14);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICMRD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000002;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(i = 0; i &amp;lt; 100*MS; i++);&amp;nbsp; /* wait 100ms */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000183; /* Issue NOP command */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(i = 0; i &amp;lt; 200*MS; i++);&amp;nbsp; /* wait 200ms */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000103; /* Issue PALL command */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH&amp;nbsp;&amp;nbsp;&amp;nbsp; = EMC_SDRAM_REFRESH(pclk,70); /* ( n * 16 ) -&amp;gt; 32 clock cycles */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(i = 0; i &amp;lt; 200*MS; i++);&amp;nbsp; /* wait 200ms */ /* wait 128 AHB clock cycles */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; tmpclk = (uint64_t)15625*(uint64_t)pclk/1000000000/16;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH&amp;nbsp;&amp;nbsp;&amp;nbsp; = tmpclk; /* ( n * 16 ) -&amp;gt; 736 clock cycles -&amp;gt; 15.330uS at 48MHz &amp;lt;= 15.625uS ( 64ms / 4096 row ) */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000083; /* Issue MODE command */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Timing for 48/60/72MHZ Bus&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MODE = (2 &amp;lt;&amp;lt; 0) | (0 &amp;lt;&amp;lt; 3) | (3 &amp;lt;&amp;lt; 4) | (0 &amp;lt;&amp;lt; 9);&amp;nbsp; // burst = 4, seq. mode, latency = 3, write burst = 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; OFFSET = 9 + 2 + 2;&amp;nbsp; // RBC: 9 col + 32 bit (=2) + 2 bank select&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; temp = *((volatile uint32_t *)(BUFFER_BASE + (MODE &amp;lt;&amp;lt; OFFSET)));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; temp = temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000000; /* Issue NORMAL command */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //[re]enable buffers&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp; |= 1&amp;lt;&amp;lt;19;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please, does anyone see what the issue may be? Or if not this code, what else can cause this problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 12 Aug 2016 01:16:14 GMT</pubDate>
    <dc:creator>zzzmqp</dc:creator>
    <dc:date>2016-08-12T01:16:14Z</dc:date>
    <item>
      <title>LPC43xx with EMC SDRAM fails under higher load</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC43xx-with-EMC-SDRAM-fails-under-higher-load/m-p/592721#M22410</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Dear LPC Community,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use a LPC4357 at 204MHz with an external SDRAM at 102MHz.&lt;/P&gt;&lt;P&gt;The SDRAM is a Micron MT48LC8M32B2 (&lt;A href="https://www.micron.com/~/media/documents/products/data-sheet/dram/256mbsdramx32.pdf" rel="nofollow noopener noreferrer" target="_blank"&gt;datasheet link&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I ~thought~ all was working fine (with quite frequent writes and reads of a few hundred to a few kBytes as a shared buffer between the cores - all DMA transfers), but now another function was added which reads larger chunks up 512kB and writes them to an SD card (also using some direct DMA transfer and the SDMMC DMA mode as part of the SDIF driver). The read also 'works' (the 512kB are written correct on the card) but afterwards the data in the SDRAM gets corrupted, at least for a while. I see 'gaps' (blank areas) and repeats of data from earlier in the SDRAM but can't really make out what exactly happens.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's my SDRAM initialization code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14709640196128461 jive_macro_code jive_text_macro" data-hasrefreshed="true" data-renderedposition="308_8_1168_2176" jivemacro_uid="_14709640196128461"&gt;&lt;P&gt;#define&amp;nbsp; BUFFER_BASE&amp;nbsp; 0x28000000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define&amp;nbsp; MS 8350&amp;nbsp; // for() loop count to delay 1 ms (measured)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void SDRAM_Init (void) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t pclk, temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint64_t tmpclk;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t i = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t MODE;&lt;/P&gt;&lt;P&gt;&amp;nbsp; uint32_t OFFSET;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet( 2&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 10&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A1&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 11&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A2&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 12&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A3&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 13&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A4&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 0&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A5&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A6&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A7&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A8&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //A9&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A10&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A11&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A12&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; 0&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //A13&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC1));&amp;nbsp; //A14&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D1&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D2&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 10&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D3&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 11&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D4&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 12&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D5&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 13&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D6&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 14&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D7&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 4&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D8&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D9&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D10&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D11&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 0&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D12&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D13&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D14&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; 3&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D15&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 2&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D16&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 3&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D17&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 4&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D18&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D19&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D20&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D21&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D22&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //D23&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D24&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D25&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 7&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D26&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 8&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D27&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D28&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 10&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D29&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 11&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D30&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E&amp;nbsp; ,&amp;nbsp; 12&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //D31&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 11&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; // CKEOUT0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_ClockPinMuxSet(0, (SCU_PINIO_FAST | SCU_MODE_FUNC0));&amp;nbsp; // CLK0 connected to EMC_CLK0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_ClockPinMuxSet(1, (SCU_PINIO_FAST | SCU_MODE_FUNC0));&amp;nbsp; // CLK1 connected to EMC_CLK1&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_ClockPinMuxSet(2, (SCU_PINIO_FAST | SCU_MODE_FUNC0));&amp;nbsp; // CLK2 connected to EMC_CLK3&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_ClockPinMuxSet(3, (SCU_PINIO_FAST | SCU_MODE_FUNC0));&amp;nbsp; // CLK3 connected to EMC_CLK2&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 12&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //DQMOUT0&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 10&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //DQMOUT1&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0D,&amp;nbsp; 0&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC2));&amp;nbsp; //DQMOUT2&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 0X0E,&amp;nbsp; 13&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //DQMOUT3&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 4&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //CAS&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 5&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //RAS&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 1&amp;nbsp; ,&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //WE&lt;/P&gt;&lt;P&gt;&amp;nbsp; Chip_SCU_PinMuxSet(&amp;nbsp; 6&amp;nbsp; ,&amp;nbsp; 9&amp;nbsp; ,&amp;nbsp; (SCU_PINIO_FAST | SCU_MODE_FUNC3));&amp;nbsp; //DYCS0&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Select EMC clock-out */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;SFSCLK[0] = SCU_PINIO_FAST;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;SFSCLK[1] = SCU_PINIO_FAST;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;SFSCLK[2] = SCU_PINIO_FAST;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;SFSCLK[3] = SCU_PINIO_FAST;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Setup EMC Delays */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_SCU-&amp;gt;EMCDELAYCLK = 0x7777; // ~3.5 ns delay&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_CCU1-&amp;gt;CLKCCU[CLK_MX_EMC_DIV].CFG |= (1 &amp;lt;&amp;lt; 5);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_CREG-&amp;gt;CREG6 |= (1 &amp;lt;&amp;lt; 16);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; pclk = Chip_Clock_GetEMCRate();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONTROL&amp;nbsp;&amp;nbsp; = 0x00000001;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;CONFIG&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000000;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1 &amp;lt;&amp;lt; 14 | 0 &amp;lt;&amp;lt; 12 | 2 &amp;lt;&amp;lt; 9 | 1 &amp;lt;&amp;lt; 7; /* RBC 256Mb, 8Mx32, 4 banks, row=12, column=9 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRASCAS0&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;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRASCAS0&amp;nbsp;&amp;nbsp; |= (3UL &amp;lt;&amp;lt; 8);&amp;nbsp;&amp;nbsp;&amp;nbsp; //CAS latency&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREADCONFIG = 0x00000001; /* Command delayed strategy, using EMCCLKDELAY */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 20);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRAS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 42);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICSREX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 63);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICAPR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000005;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICDAL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000005;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICWR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 63);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRFC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 63);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICXSR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 63);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICRRD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = NS2CLK(pclk, 14);&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICMRD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000002;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(i = 0; i &amp;lt; 100*MS; i++);&amp;nbsp; /* wait 100ms */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000183; /* Issue NOP command */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(i = 0; i &amp;lt; 200*MS; i++);&amp;nbsp; /* wait 200ms */&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000103; /* Issue PALL command */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH&amp;nbsp;&amp;nbsp;&amp;nbsp; = EMC_SDRAM_REFRESH(pclk,70); /* ( n * 16 ) -&amp;gt; 32 clock cycles */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(i = 0; i &amp;lt; 200*MS; i++);&amp;nbsp; /* wait 200ms */ /* wait 128 AHB clock cycles */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; tmpclk = (uint64_t)15625*(uint64_t)pclk/1000000000/16;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICREFRESH&amp;nbsp;&amp;nbsp;&amp;nbsp; = tmpclk; /* ( n * 16 ) -&amp;gt; 736 clock cycles -&amp;gt; 15.330uS at 48MHz &amp;lt;= 15.625uS ( 64ms / 4096 row ) */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000083; /* Issue MODE command */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //Timing for 48/60/72MHZ Bus&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; MODE = (2 &amp;lt;&amp;lt; 0) | (0 &amp;lt;&amp;lt; 3) | (3 &amp;lt;&amp;lt; 4) | (0 &amp;lt;&amp;lt; 9);&amp;nbsp; // burst = 4, seq. mode, latency = 3, write burst = 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; OFFSET = 9 + 2 + 2;&amp;nbsp; // RBC: 9 col + 32 bit (=2) + 2 bank select&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; temp = *((volatile uint32_t *)(BUFFER_BASE + (MODE &amp;lt;&amp;lt; OFFSET)));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; temp = temp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00000000; /* Issue NORMAL command */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //[re]enable buffers&lt;/P&gt;&lt;P&gt;&amp;nbsp; LPC_EMC-&amp;gt;DYNAMICCONFIG0&amp;nbsp;&amp;nbsp;&amp;nbsp; |= 1&amp;lt;&amp;lt;19;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please, does anyone see what the issue may be? Or if not this code, what else can cause this problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Aug 2016 01:16:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC43xx-with-EMC-SDRAM-fails-under-higher-load/m-p/592721#M22410</guid>
      <dc:creator>zzzmqp</dc:creator>
      <dc:date>2016-08-12T01:16:14Z</dc:date>
    </item>
    <item>
      <title>Re: LPC43xx with EMC SDRAM fails under higher load</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC43xx-with-EMC-SDRAM-fails-under-higher-load/m-p/592722#M22411</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;On this board, EMC_CLK0 drives the SDRAM clock pin.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;References I found in AN11508:&lt;/SPAN&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;When x32 data width SDRAM is used, EMC_CLK1 or EMC_CLK3 may be used to drive SDRAM clock while EMC_CLK01 and EMC_CLK23 are used for FBCLK.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;The key to running the EMC at full speed is to use EMC_CLK01 (CLK0 pin with SFSCLK0 = function 5) and EMC_CLK23 (CLK2 pin with SFSCLK2 = function 5) for the four byte lane feedback clocks, while using EMC_CLK1 (CLK1 pin) and / or EMC_CLK2 (CLK3 pin) to drive the SDRAM clocks.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can't change the EMC_CLKx pin to CLK1 or CLK3 to try as this is a BGA256 package, but can &lt;STRONG&gt;using EMC_CLK0 be the reason for the issue described above&lt;/STRONG&gt;?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 13 Aug 2016 17:28:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC43xx-with-EMC-SDRAM-fails-under-higher-load/m-p/592722#M22411</guid>
      <dc:creator>zzzmqp</dc:creator>
      <dc:date>2016-08-13T17:28:46Z</dc:date>
    </item>
  </channel>
</rss>

