<?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>LPC MicrocontrollersのトピックLPC1549  read/write EEPROM with IAP commands</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513900#M416</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Gmatarrubia on Thu Mar 05 14:18:10 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I need to write/read some variables in EEPROM memory. I'm using mbed libraries that It doesn't have any API for that purpose. So I'm trying to use IAP commands. This is my code:&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;
#include "mbed.h"

enum command_code
&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; IAPCommand_EEPROM_Write = 61,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IAPCommand_EEPROM_Read,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };

#define&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_LOCATION&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x03000200
typedef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (*IAP_call)(unsigned int [], unsigned int []);

IAP_call&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry = reinterpret_cast&amp;lt;IAP_call&amp;gt;(IAP_LOCATION);
unsigned int&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 5 ];
unsigned int&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_result[ 5 ];
int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cclk_kHz = SystemCoreClock / 1000;

int write_eeprom( uint32_t source_addr, uint32_t target_addr, int size ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 0 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = IAPCommand_EEPROM_Write;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 1 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = target_addr;&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; Destination EEPROM address where data bytes are to be written.
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 2 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = (unsigned int)source_addr;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Source RAM address from which data bytes are to be read. This address should be a word boundary.
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 3 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = size;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Number of bytes to be written. Should be 256 | 512 | 1024 | 4096.
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 4 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = cclk_kHz;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; CPU Clock Frequency (CCLK) in kHz.

&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry( IAP_command, IAP_result );

&amp;nbsp;&amp;nbsp;&amp;nbsp; return ( (int)IAP_result[ 0 ] );
}

int main () {
&amp;nbsp;&amp;nbsp;&amp;nbsp; int num=15;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int addrEEPROM = 0x100;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write_eeprom((uint32_t)&amp;amp;num,add,256);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
&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 code, IAP_LOCATION and so on is based on the datasheet. But I always get an "hardfault"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Someone knows how to read/write in the EEPROM?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;regards.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:09:32 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:09:32Z</dc:date>
    <item>
      <title>LPC1549  read/write EEPROM with IAP commands</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513900#M416</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Gmatarrubia on Thu Mar 05 14:18:10 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I need to write/read some variables in EEPROM memory. I'm using mbed libraries that It doesn't have any API for that purpose. So I'm trying to use IAP commands. This is my code:&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;
#include "mbed.h"

enum command_code
&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; IAPCommand_EEPROM_Write = 61,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IAPCommand_EEPROM_Read,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };

#define&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_LOCATION&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x03000200
typedef&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void (*IAP_call)(unsigned int [], unsigned int []);

IAP_call&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry = reinterpret_cast&amp;lt;IAP_call&amp;gt;(IAP_LOCATION);
unsigned int&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 5 ];
unsigned int&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_result[ 5 ];
int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cclk_kHz = SystemCoreClock / 1000;

int write_eeprom( uint32_t source_addr, uint32_t target_addr, int size ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 0 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = IAPCommand_EEPROM_Write;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 1 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = target_addr;&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; Destination EEPROM address where data bytes are to be written.
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 2 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = (unsigned int)source_addr;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Source RAM address from which data bytes are to be read. This address should be a word boundary.
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 3 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = size;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Number of bytes to be written. Should be 256 | 512 | 1024 | 4096.
&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP_command[ 4 ]&amp;nbsp;&amp;nbsp;&amp;nbsp; = cclk_kHz;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; CPU Clock Frequency (CCLK) in kHz.

&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry( IAP_command, IAP_result );

&amp;nbsp;&amp;nbsp;&amp;nbsp; return ( (int)IAP_result[ 0 ] );
}

int main () {
&amp;nbsp;&amp;nbsp;&amp;nbsp; int num=15;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int addrEEPROM = 0x100;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write_eeprom((uint32_t)&amp;amp;num,add,256);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
&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 code, IAP_LOCATION and so on is based on the datasheet. But I always get an "hardfault"&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Someone knows how to read/write in the EEPROM?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;regards.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:09:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513900#M416</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:09:32Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1549  read/write EEPROM with IAP commands</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513901#M417</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Thu Mar 05 14:32:50 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;LPCOpen &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fnxpfile%2Flpcopen-software-development-platform-lpc15xx-packages" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc15xx-packages&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;is including a sample: periph_eeprom, which should show you how to init / read and write&amp;nbsp; :)&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:09:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513901#M417</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:09:33Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1549  read/write EEPROM with IAP commands</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513902#M418</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Gmatarrubia on Fri Mar 06 05:38:33 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I had seen this example but I cannot use #include "chip.h" because I'm using #include "mbed.h" and I cannot use both at the same time.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've just get a successful write/read in the EEPROM. I've added in mbed libraries the code necessary to use IAP commands.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;regards.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:09:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513902#M418</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:09:34Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1549  read/write EEPROM with IAP commands</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513903#M419</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;... and no one can do a better thing than pointing to a useless example&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Jul 2017 10:08:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513903#M419</guid>
      <dc:creator>juanabelaira</dc:creator>
      <dc:date>2017-07-20T10:08:53Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1549  read/write EEPROM with IAP commands</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513904#M420</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE style="color: #51626f; border: 0px;"&gt;&lt;P&gt;is add the address of EEPROM? should we enter 0x03000100 or simply 0x100 is passed as EEPROM address?

&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;PRE style="border: 0px;"&gt;write_eeprom((uint32_t)&amp;amp;num,add,256);&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Jun 2018 12:51:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1549-read-write-EEPROM-with-IAP-commands/m-p/513904#M420</guid>
      <dc:creator>athmesh_n</dc:creator>
      <dc:date>2018-06-07T12:51:20Z</dc:date>
    </item>
  </channel>
</rss>

