EEPROM emulation for Nucleo F746ZG

Dependencies:   mbed

Committer:
ImageWriter
Date:
Tue Dec 04 12:34:09 2018 +0000
Revision:
3:1002a12961c5
Parent:
0:1756c3542c95
today new

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mega64 0:1756c3542c95 1
mega64 0:1756c3542c95 2 #include "mbed.h"
mega64 0:1756c3542c95 3 #include "eeprom.h"
mega64 0:1756c3542c95 4 #include <ctype.h>
mega64 0:1756c3542c95 5
mega64 0:1756c3542c95 6
mega64 0:1756c3542c95 7
mega64 0:1756c3542c95 8 uint16_t n = 0;
mega64 0:1756c3542c95 9 /* Virtual address defined by the user: 0xFFFF value is prohibited */
ImageWriter 3:1002a12961c5 10 uint16_t VirtAddVarTab[NB_OF_VAR] = {0x5555, 0x6666, 0x7777, 0x8888};
ImageWriter 3:1002a12961c5 11 uint16_t VarDataTab[] = {0, 0, 0, 0};
mega64 0:1756c3542c95 12
mega64 0:1756c3542c95 13
mega64 0:1756c3542c95 14
mega64 0:1756c3542c95 15 int main()
mega64 0:1756c3542c95 16 {
mega64 0:1756c3542c95 17
mega64 0:1756c3542c95 18 /* Unlock the Flash Program Erase controller */
mega64 0:1756c3542c95 19 HAL_FLASH_Unlock();
mega64 0:1756c3542c95 20
mega64 0:1756c3542c95 21 EE_Init();
mega64 0:1756c3542c95 22
mega64 0:1756c3542c95 23 printf("EEPROM emulation test\n");
mega64 0:1756c3542c95 24
mega64 0:1756c3542c95 25 printf("\n\rType one of the following commands and press space or enter");
ImageWriter 3:1002a12961c5 26 printf("\n\r READ - read all variables\n\r WRITE1 <n> - write first variable\n\r WRITE2 <n> - write second variable\n\r WRITE3 <n> - write third variable\n\r WRITE4 <n> - write 4th variable");
mega64 0:1756c3542c95 27 printf("\n\rwhere <n> is uint16_t value (0-65535)");
mega64 0:1756c3542c95 28 printf("\n\r");
mega64 0:1756c3542c95 29
mega64 0:1756c3542c95 30
mega64 0:1756c3542c95 31 char command[20];
mega64 0:1756c3542c95 32 char arg[10];
mega64 0:1756c3542c95 33 int i;
mega64 0:1756c3542c95 34
mega64 0:1756c3542c95 35 while(1) {
mega64 0:1756c3542c95 36 scanf("%s", command);
mega64 0:1756c3542c95 37 i=0;
mega64 0:1756c3542c95 38 while(command[i])
mega64 0:1756c3542c95 39 {
mega64 0:1756c3542c95 40 command[i]=toupper(command[i]);
mega64 0:1756c3542c95 41 i++;
mega64 0:1756c3542c95 42 }
mega64 0:1756c3542c95 43
mega64 0:1756c3542c95 44
mega64 0:1756c3542c95 45 if (strcmp("READ", command)==0) {
ImageWriter 3:1002a12961c5 46 for (i=0; i<4; i++) {
mega64 0:1756c3542c95 47 EE_ReadVariable(VirtAddVarTab[i], &VarDataTab[i]);
mega64 0:1756c3542c95 48 };
ImageWriter 3:1002a12961c5 49 printf("\nvar1=%6u, var2=%6u, var3=%6u var3=%6u",VarDataTab[0],VarDataTab[1],VarDataTab[2],VarDataTab[3]);
mega64 0:1756c3542c95 50 }
mega64 0:1756c3542c95 51 ///////////////////////////////////////////////////////////////////////////////////////////////////////
mega64 0:1756c3542c95 52 else if (strcmp("WRITE1", command)==0) {
mega64 0:1756c3542c95 53 scanf("%s", arg);
mega64 0:1756c3542c95 54 printf("\nok");
mega64 0:1756c3542c95 55 n=atoi(arg);
mega64 0:1756c3542c95 56 EE_WriteVariable(VirtAddVarTab[0], n);
mega64 0:1756c3542c95 57 }
mega64 0:1756c3542c95 58 ////////////////////////////////////////////////////////////////////////////////////
mega64 0:1756c3542c95 59 else if (strcmp("WRITE2", command)==0) {
mega64 0:1756c3542c95 60 scanf("%s", arg);
mega64 0:1756c3542c95 61 printf("\nok");
mega64 0:1756c3542c95 62 n=atoi(arg);
mega64 0:1756c3542c95 63 EE_WriteVariable(VirtAddVarTab[1], n);
mega64 0:1756c3542c95 64 }
mega64 0:1756c3542c95 65 ////////////////////////////////////////////////////////////////////////////////////
mega64 0:1756c3542c95 66 else if (strcmp("WRITE3", command)==0) {
mega64 0:1756c3542c95 67 scanf("%s", arg);
mega64 0:1756c3542c95 68 printf("\nok");
mega64 0:1756c3542c95 69 n=atoi(arg);
mega64 0:1756c3542c95 70 EE_WriteVariable(VirtAddVarTab[2], n);
mega64 0:1756c3542c95 71 }
mega64 0:1756c3542c95 72 ////////////////////////////////////////////////////////////////////////////////////
ImageWriter 3:1002a12961c5 73 else if (strcmp("WRITE4", command)==0) {
ImageWriter 3:1002a12961c5 74 scanf("%s", arg);
ImageWriter 3:1002a12961c5 75 printf("\nok");
ImageWriter 3:1002a12961c5 76 n=atoi(arg);
ImageWriter 3:1002a12961c5 77 EE_WriteVariable(VirtAddVarTab[3], n);
ImageWriter 3:1002a12961c5 78 }
ImageWriter 3:1002a12961c5 79 ////////////////////////////////////////////////////////////////////////////////////
mega64 0:1756c3542c95 80 else if (strcmp("T1", command)==0) {
mega64 0:1756c3542c95 81 // multiple write test. After test var1 = 1000
mega64 0:1756c3542c95 82 printf("\nok");
ImageWriter 3:1002a12961c5 83 for (n=0;n<1001;n++){
ImageWriter 3:1002a12961c5 84 EE_WriteVariable(VirtAddVarTab[0], n);
ImageWriter 3:1002a12961c5 85 printf("*");
ImageWriter 3:1002a12961c5 86 }
ImageWriter 3:1002a12961c5 87 printf("\nComplete.\n");
mega64 0:1756c3542c95 88 }
mega64 0:1756c3542c95 89 ////////////////////////////////////////////////////////////////////////////////////
mega64 0:1756c3542c95 90 else if (strcmp("T2", command)==0) {
mega64 0:1756c3542c95 91 // multiple write test. After test var2 = 1001
mega64 0:1756c3542c95 92 printf("\nok");
ImageWriter 3:1002a12961c5 93 for (n=0;n<1002;n++){
ImageWriter 3:1002a12961c5 94 EE_WriteVariable(VirtAddVarTab[1], n);
ImageWriter 3:1002a12961c5 95 printf("*");
ImageWriter 3:1002a12961c5 96 }
ImageWriter 3:1002a12961c5 97 printf("\nComplete.\n");
mega64 0:1756c3542c95 98 }
mega64 0:1756c3542c95 99 ////////////////////////////////////////////////////////////////////////////////////
mega64 0:1756c3542c95 100 else if (strcmp("T3", command)==0) {
mega64 0:1756c3542c95 101 // multiple write test. After test var3 = 1002
mega64 0:1756c3542c95 102 printf("\nok");
ImageWriter 3:1002a12961c5 103 for (n=0;n<1003;n++){
ImageWriter 3:1002a12961c5 104 EE_WriteVariable(VirtAddVarTab[2], n);
ImageWriter 3:1002a12961c5 105 printf("*");
ImageWriter 3:1002a12961c5 106 }
ImageWriter 3:1002a12961c5 107 printf("\nComplete.");
ImageWriter 3:1002a12961c5 108 }
ImageWriter 3:1002a12961c5 109 ////////////////////////////////////////////////////////////////////////////////////
ImageWriter 3:1002a12961c5 110 else if (strcmp("T4", command)==0) {
ImageWriter 3:1002a12961c5 111 // multiple write test. After test var3 = 1002
ImageWriter 3:1002a12961c5 112 printf("\nok");
ImageWriter 3:1002a12961c5 113 for (n=0;n<1004;n++){
ImageWriter 3:1002a12961c5 114 EE_WriteVariable(VirtAddVarTab[3], n);
ImageWriter 3:1002a12961c5 115 printf("*");
ImageWriter 3:1002a12961c5 116 }
ImageWriter 3:1002a12961c5 117 printf("\nComplete.");
mega64 0:1756c3542c95 118 }
mega64 0:1756c3542c95 119 ////////////////////////////////////////////////////////////////////////////////////
mega64 0:1756c3542c95 120
mega64 0:1756c3542c95 121 else perror("\nThere is no command matching. Try again");
mega64 0:1756c3542c95 122
mega64 0:1756c3542c95 123 command[0] = arg[0] = 0;
mega64 0:1756c3542c95 124 printf("\n\r");
mega64 0:1756c3542c95 125 }
mega64 0:1756c3542c95 126
mega64 0:1756c3542c95 127
mega64 0:1756c3542c95 128 }