Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 25LCxxx_SPI mbed
Revision 0:57d1e986a50c, committed 2015-07-17
- Comitter:
- mariob
- Date:
- Fri Jul 17 09:48:38 2015 +0000
- Commit message:
- test of the enhanced 25LCxxx driver
Changed in this revision
diff -r 000000000000 -r 57d1e986a50c 25LCxxx_SPI.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/25LCxxx_SPI.lib Fri Jul 17 09:48:38 2015 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/mariob/code/25LCxxx_SPI/#be69a9f6f738
diff -r 000000000000 -r 57d1e986a50c main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Fri Jul 17 09:48:38 2015 +0000
@@ -0,0 +1,176 @@
+/**
+ This code tests the latest version of the library Ser25lcxxx, using
+ a 25LC256 eeprom (256KB)
+
+ author: Mario Bambagini
+*/
+
+#include "mbed.h"
+
+#include "Ser25lcxxx.h"
+
+
+void printMemory (unsigned char *s, int len);
+
+void waitKey();
+
+
+#define PAGESIZE 64
+#define PAGENUMBER 4096
+#define EEPROM_SIZE (PAGESIZE*PAGENUMBER)
+
+#define BUFFER_SIZE (PAGESIZE*4)
+
+
+struct test_serialization {
+ unsigned char data_1;
+ unsigned int data_2;
+ unsigned long data_3;
+};
+
+int main()
+{
+ unsigned char buf[BUFFER_SIZE];
+ memset(buf, 0x00, BUFFER_SIZE);
+
+ printf("******* START *******\r\n\r\n");
+
+ /**************************** INITIALIZATION ****************************/
+ printf("INIT\r\n");
+ Ser25LCxxx flash(p7, p5, p6, p9, PAGENUMBER, PAGESIZE);
+
+ waitKey();
+
+ /****************************** CONFIG TEST ******************************/
+ printf("EEPROM fully writable: %s\r\n",
+ (flash.isFullyWritable()?"YES":"NO"));
+ printf("EEPROM half writable: %s\r\n",(flash.isHalfWritable()?"YES":"NO"));
+ printf("EEPROM not writable: %s\r\n", (flash.isNotWritable()?"YES":"NO"));
+ waitKey();
+
+ /***************************** READING TEST *****************************/
+ printf("READ 2 pages:\r\n");
+ int num = flash.read(0, 2*PAGESIZE, buf);
+ printMemory(buf,2*PAGESIZE);
+ printf("%d bytes: %s\r\n", num, ((num==(2*PAGESIZE))?"OK":"NOT OK"));
+
+ waitKey();
+
+ /***************************** WRITING TEST *****************************/
+ printf("WRITE first 20 bytes\r\n");
+ memset(buf, 0x01, 20);
+ num = flash.write(0, 20, buf);
+ printf("%d bytes: %s\r\n\r\n", num, ((num==20)?"OK":"NOT OK"));
+
+ printf("WRITE 10 bytes within a page (from addr 30)\r\n");
+ memset(buf, 0x02, 10);
+ num = flash.write(30, 10, buf);
+ printf("%d bytes: %s\r\n\r\n", num, ((num==10)?"OK":"NOT OK"));
+
+ printf("WRITE 30 bytes on two consecutive pages (from addr 50)\r\n");
+ memset(buf, 0x03, 30);
+ num = flash.write(50, 30, buf);
+ printf("%d bytes: %s\r\n\r\n", num, ((num==30)?"OK":"NOT OK"));
+
+ printf("READ 2 pages:\r\n");
+ num = flash.read(0, 2*PAGESIZE, buf);
+ printMemory(buf,2*PAGESIZE);
+ printf("%d bytes: %s\r\n", num, ((num==(2*PAGESIZE))?"OK":"NOT OK"));
+
+ waitKey();
+
+ /*************************** ERASING PAGE TEST ***************************/
+ printf("ERASE second page\r\n");
+ num = flash.clearPage(1);
+ printf("%d bytes: %s\r\n", num, ((num==PAGESIZE)?"OK":"NOT OK"));
+
+ printf("READ 2 pages:\r\n");
+ num = flash.read(0, 2*PAGESIZE, buf);
+ printMemory(buf,2*PAGESIZE);
+ printf("%d bytes: %s\r\n", num, ((num==(2*PAGESIZE))?"OK":"NOT OK"));
+
+ waitKey();
+
+ /************************** SERIALIZATION TEST **************************/
+ struct test_serialization var_ser, var_deser;
+ var_ser.data_1 = 0xAA;
+ var_ser.data_2 = 0x7777;
+ var_ser.data_3 = 0x33333333;
+ printf("Serialize data at addr 20\r\n");
+ num = flash.write(20, sizeof(test_serialization),
+ (const unsigned char*)(&var_ser));
+ printf("%d bytes: %s\r\n", num,
+ ((num==sizeof(test_serialization))?"OK":"NOT OK"));
+ var_deser.data_1 = 0;
+ var_deser.data_2 = 0;
+ var_deser.data_3 = 0;
+ printf("De-serialize data from addr 20\r\n");
+ num = flash.read(20, sizeof(test_serialization),
+ (unsigned char*)(&var_deser));
+ printf("%d bytes: %s\r\n", num,
+ ((num==sizeof(test_serialization))?"OK":"NOT OK"));
+ printf("Same data: %s\r\n", (((var_ser.data_1==var_deser.data_1) &&
+ (var_ser.data_2==var_deser.data_2) &&
+ (var_ser.data_3==var_deser.data_3))?
+ "OK":"NOT OK"));
+ printf("READ 2 pages:\r\n");
+ num = flash.read(0, 2*PAGESIZE, buf);
+ printMemory(buf,2*PAGESIZE);
+ printf("%d bytes: %s\r\n", num, ((num==(2*PAGESIZE))?"OK":"NOT OK"));
+
+ waitKey();
+
+ /************************** ERASING MEMORY TEST **************************/
+ printf("ERASE memory\r\n");
+ num = flash.clearMem();
+ printf("%d bytes: %s\r\n", num, ((num==(EEPROM_SIZE))?"OK":"NOT OK"));
+
+ printf("READ 2 pages:\r\n");
+ num = flash.read(0, 2*PAGESIZE, buf);
+ printMemory(buf,2*PAGESIZE);
+ printf("%d bytes: %s\r\n", num, ((num==(2*PAGESIZE))?"OK":"NOT OK"));
+
+ waitKey();
+
+ /**************************** PROTECTION TEST ****************************/
+
+ printf("Setting whole EEPROM as not writable\r\n");
+ flash.setNotWritable();
+
+ printf("EEPROM not writable: %s\r\n", (flash.isNotWritable()?"YES":"NO"));
+
+ printf("WRITE first page\r\n");
+ memset(buf, 0x00, PAGESIZE);
+ num = flash.write(0, PAGESIZE, buf);
+ printf("%d bytes: %s\r\n", num, ((num==(PAGESIZE))?"OK":"NOT OK"));
+
+ printf("READ 2 pages:\r\n");
+ num = flash.read(0, 2*PAGESIZE, buf);
+ printMemory(buf,2*PAGESIZE);
+ printf("%d bytes: %s\r\n", num, ((num==(2*PAGESIZE))?"OK":"NOT OK"));
+ printf("DATA IS NOT CHANGED\r\n");
+
+ printf("Setting whole EEPROM as writable\r\n");
+ flash.setFullyWritable();
+
+ printf("\r\nDONE\r\n");
+
+ while(1);
+}
+
+void printMemory (unsigned char *s, int len)
+{
+ int i = 0;
+ while (i<len) {
+ printf("%02X ", s[i]);
+ if (((++i)%32)==0)
+ printf("\r\n");
+ }
+}
+
+void waitKey ()
+{
+ char a;
+ printf("Press a key to continue...\r\n\r\n");
+ scanf("%c", &a);
+}
diff -r 000000000000 -r 57d1e986a50c mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Jul 17 09:48:38 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/da0ca467f8b5 \ No newline at end of file