IAP class library for LPC1768, LPC11U24, LPC1114, LPC812 and LPC824
Dependents: MakerBotServer SystemManagement IAP_testing Arch_Pro_TCPSocket ... more
Revision 8:1d79b2bb1131, committed 2018-08-16
- Comitter:
- okano
- Date:
- Thu Aug 16 06:11:23 2018 +0000
- Parent:
- 7:c8bf974ecb33
- Child:
- 9:26095608ac1a
- Commit message:
- "write_page" function added for LPC81X/LPC82X
Changed in this revision
| IAP.cpp | Show annotated file Show diff for this revision Revisions of this file |
| IAP.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/IAP.cpp Tue Mar 10 04:19:23 2015 +0000
+++ b/IAP.cpp Thu Aug 16 06:11:23 2018 +0000
@@ -25,6 +25,8 @@
* revision 3.0 09-Jan-2015 LPC812 and LPC824 support added
* revision 3.1 13-Jan-2015 LPC1114 support added
* revision 3.1.1 16-Jan-2015 Target MCU name changed for better compatibility across the platforms
+ * revision 3.1.2 10-Mar-2015 merged with pull requests. reinvoke_isp() added and modified read_serial() to return a pointer.
+ * revision 3.1.3 16-Aug-2018 "write_page" function added for LPC81X/LPC82X
*/
#include "mbed.h"
@@ -218,4 +220,10 @@
return ( (int)IAP_result[ 0 ] );
}
+int IAP::write_page( char *source_addr, int target_page )
+{
+ prepare( target_page / (LPC8XX_SCTR_SIZE / LPC8XX_PAGE_SIZE), target_page / (LPC8XX_SCTR_SIZE / LPC8XX_PAGE_SIZE) );
+ return ( write( source_addr, (char *)(target_page * LPC8XX_PAGE_SIZE), LPC8XX_PAGE_SIZE ) );
+}
+
#endif
--- a/IAP.h Tue Mar 10 04:19:23 2015 +0000
+++ b/IAP.h Thu Aug 16 06:11:23 2018 +0000
@@ -25,6 +25,8 @@
* revision 3.0 09-Jan-2015 LPC812 and LPC824 support added
* revision 3.1 13-Jan-2015 LPC1114 support added
* revision 3.1.1 16-Jan-2015 Target MCU name changed for better compatibility across the platforms
+ * revision 3.1.2 10-Mar-2015 merged with pull requests. reinvoke_isp() added and modified read_serial() to return a pointer.
+ * revision 3.1.3 16-Aug-2018 "write_page" function added for LPC81X/LPC82X
*/
@@ -473,6 +475,8 @@
int read_eeprom( char *source_addr, char *target_addr, int size );
#elif defined(TARGET_LPC81X) || defined(TARGET_LPC82X)
+#define LPC8XX_SCTR_SIZE 1024
+#define LPC8XX_PAGE_SIZE 64
/** Erase page(s) (LPC812, LPC824)
*
@@ -482,6 +486,14 @@
*/
int erase_page( int start, int end );
+ /** Write page (LPC812, LPC824)
+ *
+ * @param source_addr Source EEPROM address from which data bytes are to be read.
+ * @param target_page Target page number.
+ * @return error code: CMD_SUCCESS | SRC_ADDR_ERROR (Address not a word boundary) | DST_ADDR_ERROR (Address not on correct boundary) | SRC_ADDR_NOT_MAPPED | DST_ADDR_NOT_MAPPED | COUNT_ERROR (Byte count is not 256 | 512 | 1024 | 4096) | SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION | BUSY BUSY | INVALID_SECTOR (error from parepare command)
+ */
+ int write_page( char *source_addr, int target_page );
+
#endif
private:
IAP (In-Application Programming)