<?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 Re: LPC1778 - problems with SRAM byte read access in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1778-problems-with-SRAM-byte-read-access/m-p/520802#M3825</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rda on Fri Mar 27 03:05:43 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Forget about the fact that the first read access succeeds - when using volatile pointers BYTE (8-bit) access fails immediately.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Could the problem be related to the scrambled address lines in combination with the address shift feature?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:47:47 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:47:47Z</dc:date>
    <item>
      <title>LPC1778 - problems with SRAM byte read access</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1778-problems-with-SRAM-byte-read-access/m-p/520801#M3824</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rda on Wed Mar 25 02:28:45 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;currently I am trying to connect an ISSI IS62WV25616BLL SRAM to an LPC1778. The SRAM is working if I access WORD (16-bit) or DWORD (32-bit) data. BYTE (8-bit) access causes an invalid value upon the second (!) read access, as the following code illustrates (the heap is on the SRAM):&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;unsigned char *cptr = (unsigned char *)malloc(2);
cptr[0] = 0xDE;
print("cptr[0]=0x%02X\n", cptr[0]);
print("cptr[0]=0x%02X\n", cptr[0]);
free(cptr);

unsigned short *sptr = (unsigned short *)malloc(4);
sptr[0] = 0xCAFE;
print("sptr[0]=0x%04X\n", sptr[0]);
print("sptr[0]=0x%04X\n", sptr[0]);
free(sptr);

unsigned int *iptr = (unsigned int *)malloc(8);
iptr[0] = 0xDEADBEEF;
print("iptr[0]=0x%08X\n", iptr[0]);
print("iptr[0]=0x%08X\n", iptr[0]);
free(iptr);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The following output is produced:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;cptr[0]=0xDE
cptr[0]=0x06
sptr[0]=0xCAFE
sptr[0]=0xCAFE
iptr[0]=0xDEADBEEF
iptr[0]=0xDEADBEEF&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;As you can see the data value after the second BYTE read access is corrupted while both the WORD and DWORD values are correct.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The SRAM is connected to the LPC1778 as follows:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;P3.00[EMC_D0]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO3
P3.01[EMC_D1]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO4
P3.02[EMC_D2]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO6
P3.03[EMC_D3]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO14
P3.04[EMC_D4]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO13
P3.05[EMC_D5]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO12
P3.06[EMC_D6]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO10
P3.07[EMC_D7]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO9
P3.08[EMC_D8]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO0
P3.09[EMC_D9]&amp;nbsp;&amp;nbsp;&amp;nbsp; IO2
P3.10[EMC_D10]&amp;nbsp;&amp;nbsp; IO5
P3.11[EMC_D11]&amp;nbsp;&amp;nbsp; IO1
P3.12[EMC_D12]&amp;nbsp;&amp;nbsp; IO15
P3.13[EMC_D13]&amp;nbsp;&amp;nbsp; IO7
P3.14[EMC_D14]&amp;nbsp;&amp;nbsp; IO11
P3.15[EMC_D15]&amp;nbsp;&amp;nbsp; IO8

P4.00[EMC_A0]&amp;nbsp;&amp;nbsp;&amp;nbsp; A11
P4.01[EMC_A1]&amp;nbsp;&amp;nbsp;&amp;nbsp; A13
P4.02[EMC_A2]&amp;nbsp;&amp;nbsp;&amp;nbsp; A10
P4.03[EMC_A3]&amp;nbsp;&amp;nbsp;&amp;nbsp; A12
P4.04[EMC_A4]&amp;nbsp;&amp;nbsp;&amp;nbsp; A9
P4.05[EMC_A5]&amp;nbsp;&amp;nbsp;&amp;nbsp; A8
P4.06[EMC_A6]&amp;nbsp;&amp;nbsp;&amp;nbsp; A15
P4.07[EMC_A7]&amp;nbsp;&amp;nbsp;&amp;nbsp; A14
P4.08[EMC_A8]&amp;nbsp;&amp;nbsp;&amp;nbsp; A7
P4.09[EMC_A9]&amp;nbsp;&amp;nbsp;&amp;nbsp; A6
P4.10[EMC_A10]&amp;nbsp;&amp;nbsp; A5
P4.11[EMC_A11]&amp;nbsp;&amp;nbsp; A3
P4.12[EMC_A12]&amp;nbsp;&amp;nbsp; A0
P4.13[EMC_A13]&amp;nbsp;&amp;nbsp; A1
P4.14[EMC_A14]&amp;nbsp;&amp;nbsp; A4
P4.15[EMC_A15]&amp;nbsp;&amp;nbsp; A2
P4.16[EMC_A16]&amp;nbsp;&amp;nbsp; A16
P4.17[EMC_A17]&amp;nbsp;&amp;nbsp; A17
P4.24[EMC_OE]&amp;nbsp;&amp;nbsp;&amp;nbsp; OE
P4.25[EMC_WE]&amp;nbsp;&amp;nbsp;&amp;nbsp; WE
P4.26[EMC_BLS0]&amp;nbsp; LB
P4.27[EMC_BLS1]&amp;nbsp; UB
P4.30[EMC_CS0]&amp;nbsp;&amp;nbsp; CS1&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The scrambled order of (lower) address (A0..A15) and data (D0..D15) connections simplifies the routing and should(?) not matter.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The following code initializes the EMC:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;PCONP |= 1&amp;lt;&amp;lt;11/*PCEMC*/;

IOCON_P3_00 = 1&amp;lt;&amp;lt;0/*EMC_D[0]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_01 = 1&amp;lt;&amp;lt;0/*EMC_D[1]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_02 = 1&amp;lt;&amp;lt;0/*EMC_D[2]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_03 = 1&amp;lt;&amp;lt;0/*EMC_D[3]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_04 = 1&amp;lt;&amp;lt;0/*EMC_D[4]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_05 = 1&amp;lt;&amp;lt;0/*EMC_D[5]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_06 = 1&amp;lt;&amp;lt;0/*EMC_D[6]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_07 = 1&amp;lt;&amp;lt;0/*EMC_D[7]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_08 = 1&amp;lt;&amp;lt;0/*EMC_D[8]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_09 = 1&amp;lt;&amp;lt;0/*EMC_D[9]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_10 = 1&amp;lt;&amp;lt;0/*EMC_D[10]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_11 = 1&amp;lt;&amp;lt;0/*EMC_D[11]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_12 = 1&amp;lt;&amp;lt;0/*EMC_D[12]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_13 = 1&amp;lt;&amp;lt;0/*EMC_D[13]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_14 = 1&amp;lt;&amp;lt;0/*EMC_D[14]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P3_15 = 1&amp;lt;&amp;lt;0/*EMC_D[15]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;

IOCON_P4_00 = 1&amp;lt;&amp;lt;0/*EMC_A[0]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_01 = 1&amp;lt;&amp;lt;0/*EMC_A[1]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_02 = 1&amp;lt;&amp;lt;0/*EMC_A[2]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_03 = 1&amp;lt;&amp;lt;0/*EMC_A[3]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_04 = 1&amp;lt;&amp;lt;0/*EMC_A[4]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_05 = 1&amp;lt;&amp;lt;0/*EMC_A[5]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_06 = 1&amp;lt;&amp;lt;0/*EMC_A[6]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_07 = 1&amp;lt;&amp;lt;0/*EMC_A[7]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_08 = 1&amp;lt;&amp;lt;0/*EMC_A[8]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_09 = 1&amp;lt;&amp;lt;0/*EMC_A[9]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_10 = 1&amp;lt;&amp;lt;0/*EMC_A[10]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_11 = 1&amp;lt;&amp;lt;0/*EMC_A[11]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_12 = 1&amp;lt;&amp;lt;0/*EMC_A[12]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_13 = 1&amp;lt;&amp;lt;0/*EMC_A[13]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_14 = 1&amp;lt;&amp;lt;0/*EMC_A[14]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_15 = 1&amp;lt;&amp;lt;0/*EMC_A[15]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_16 = 1&amp;lt;&amp;lt;0/*EMC_A[16]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_17 = 1&amp;lt;&amp;lt;0/*EMC_A[17]*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_24 = 1&amp;lt;&amp;lt;0/*EMC_OE*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_25 = 1&amp;lt;&amp;lt;0/*EMC_WE*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_26 = 1&amp;lt;&amp;lt;0/*EMC_BLS0*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_27 = 1&amp;lt;&amp;lt;0/*EMC_BLS1*/ | 1&amp;lt;&amp;lt;5/*HYS*/;
IOCON_P4_30 = 1&amp;lt;&amp;lt;0/*EMC_CS*/ | 1&amp;lt;&amp;lt;5/*HYS*/;

EMCControl = 0;

SCS &amp;amp;= ~(1&amp;lt;&amp;lt;0/*EMCSC*/);
EMCCLKSEL = 1;// CCLK=120MHz

EMCConfig = 0;
EMCStaticConfig0 = 1&amp;lt;&amp;lt;0/*MW*/ | 1&amp;lt;&amp;lt;7/*PB*/;
EMCStaticWaitWen0 = 0;// 10ns
EMCStaticWaitOen0 = 0;// 10ns
EMCStaticWaitRd0 = 3;// 55ns
EMCStaticWaitWr0 = 2;// 55ns

EMCControl = 1&amp;lt;&amp;lt;0/*E*/;&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any ideas about what's wrong?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:47:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1778-problems-with-SRAM-byte-read-access/m-p/520801#M3824</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:47:46Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1778 - problems with SRAM byte read access</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1778-problems-with-SRAM-byte-read-access/m-p/520802#M3825</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rda on Fri Mar 27 03:05:43 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Forget about the fact that the first read access succeeds - when using volatile pointers BYTE (8-bit) access fails immediately.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Could the problem be related to the scrambled address lines in combination with the address shift feature?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:47:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1778-problems-with-SRAM-byte-read-access/m-p/520802#M3825</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:47:47Z</dc:date>
    </item>
  </channel>
</rss>

