sd lecture

Dependencies:   mbed Lecture_SD

Committer:
valentinbruchet
Date:
Tue Mar 16 14:58:12 2021 +0000
Revision:
4:3269abcc9c73
Parent:
3:46c0511e25af
Child:
5:66c8b598de04
eeprom

Who changed what in which revision?

UserRevisionLine numberNew contents of line
olympux 0:ea2bec485611 1 #include "mbed.h"
olympux 0:ea2bec485611 2 #include "eeprom_flash.h"
pathae 2:68c9ff91504c 3 Serial pc(USBTX, USBRX); //Initalise PC serial comms
pathae 2:68c9ff91504c 4 DigitalOut myled(LED1);
olympux 0:ea2bec485611 5 /*
valentinbruchet 4:3269abcc9c73 6 * Must call this first to enable writing
valentinbruchet 4:3269abcc9c73 7 */
olympux 0:ea2bec485611 8 void enableEEPROMWriting() {
valentinbruchet 4:3269abcc9c73 9 HAL_StatusTypeDef status = HAL_FLASH_Unlock();
valentinbruchet 4:3269abcc9c73 10 FLASH_PageErase(EEPROM_START_ADDRESS); // required to re-write
valentinbruchet 4:3269abcc9c73 11 CLEAR_BIT(FLASH->CR, FLASH_CR_PER); // Bug fix: bit PER has been set in Flash_PageErase(), must clear it here
olympux 0:ea2bec485611 12 }
olympux 0:ea2bec485611 13 void disableEEPROMWriting() {
valentinbruchet 4:3269abcc9c73 14 HAL_FLASH_Lock();
olympux 0:ea2bec485611 15 }
olympux 0:ea2bec485611 16 /*
valentinbruchet 4:3269abcc9c73 17 * Writing functions
valentinbruchet 4:3269abcc9c73 18 * Must call enableEEPROMWriting() first
valentinbruchet 4:3269abcc9c73 19 */
olympux 0:ea2bec485611 20 HAL_StatusTypeDef writeEEPROMHalfWord(uint32_t address, uint16_t data) {
valentinbruchet 4:3269abcc9c73 21 HAL_StatusTypeDef status;
valentinbruchet 4:3269abcc9c73 22 address = address + EEPROM_START_ADDRESS;
valentinbruchet 4:3269abcc9c73 23 status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, address, data);
valentinbruchet 4:3269abcc9c73 24 return status;
olympux 0:ea2bec485611 25 }
olympux 0:ea2bec485611 26 /*
valentinbruchet 4:3269abcc9c73 27 * Reading functions
valentinbruchet 4:3269abcc9c73 28 */
olympux 0:ea2bec485611 29 uint16_t readEEPROMHalfWord(uint32_t address) {
valentinbruchet 4:3269abcc9c73 30 uint16_t val = 0;
valentinbruchet 4:3269abcc9c73 31 address = address + EEPROM_START_ADDRESS;
valentinbruchet 4:3269abcc9c73 32 val = *(__IO uint16_t*)address;
valentinbruchet 4:3269abcc9c73 33 return val;
olympux 0:ea2bec485611 34 }
pathae 2:68c9ff91504c 35 //Programme de test
pathae 2:68c9ff91504c 36 int main() {
valentinbruchet 4:3269abcc9c73 37 int tab[40]= {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
pathae 2:68c9ff91504c 38 int adresse = 0x00;
pathae 2:68c9ff91504c 39 int lecture;
pathae 2:68c9ff91504c 40 pc.baud(9600);
pathae 2:68c9ff91504c 41 /* Ecriture*/
pathae 2:68c9ff91504c 42 enableEEPROMWriting(); //autorisation d'ecriture dans l'eeprom
valentinbruchet 4:3269abcc9c73 43 writeEEPROMHalfWord(adresse, tab[0]);
valentinbruchet 4:3269abcc9c73 44 writeEEPROMHalfWord(adresse+2, tab[1]);
valentinbruchet 4:3269abcc9c73 45 writeEEPROMHalfWord(adresse+4, tab[2]);
valentinbruchet 4:3269abcc9c73 46 writeEEPROMHalfWord(adresse+6, tab[3]);
valentinbruchet 4:3269abcc9c73 47 writeEEPROMHalfWord(adresse+8, tab[4]);
valentinbruchet 4:3269abcc9c73 48 writeEEPROMHalfWord(adresse+10, tab[5]);
valentinbruchet 4:3269abcc9c73 49 writeEEPROMHalfWord(adresse+12, tab[6]);
valentinbruchet 4:3269abcc9c73 50 writeEEPROMHalfWord(adresse+14, tab[7]);
valentinbruchet 4:3269abcc9c73 51 writeEEPROMHalfWord(adresse+16, tab[8]);
valentinbruchet 4:3269abcc9c73 52 writeEEPROMHalfWord(adresse+18, tab[9]);
valentinbruchet 4:3269abcc9c73 53 writeEEPROMHalfWord(adresse+20, tab[10]);
valentinbruchet 4:3269abcc9c73 54 writeEEPROMHalfWord(adresse+22, tab[11]);
valentinbruchet 4:3269abcc9c73 55 writeEEPROMHalfWord(adresse+24, tab[12]);
valentinbruchet 4:3269abcc9c73 56 writeEEPROMHalfWord(adresse+26, tab[13]);
valentinbruchet 4:3269abcc9c73 57 writeEEPROMHalfWord(adresse+28, tab[14]);
valentinbruchet 4:3269abcc9c73 58 writeEEPROMHalfWord(adresse+30, tab[15]);
valentinbruchet 4:3269abcc9c73 59 writeEEPROMHalfWord(adresse+32, tab[16]);
valentinbruchet 4:3269abcc9c73 60 writeEEPROMHalfWord(adresse+34, tab[17]);
valentinbruchet 4:3269abcc9c73 61 writeEEPROMHalfWord(adresse+36, tab[18]);
valentinbruchet 4:3269abcc9c73 62 writeEEPROMHalfWord(adresse+38, tab[19]);
valentinbruchet 4:3269abcc9c73 63 writeEEPROMHalfWord(adresse+40, tab[20]);
valentinbruchet 4:3269abcc9c73 64 writeEEPROMHalfWord(adresse+42, tab[21]);
valentinbruchet 4:3269abcc9c73 65 writeEEPROMHalfWord(adresse+44, tab[22]);
valentinbruchet 4:3269abcc9c73 66 writeEEPROMHalfWord(adresse+46, tab[23]);
valentinbruchet 4:3269abcc9c73 67 writeEEPROMHalfWord(adresse+48, tab[24]);
valentinbruchet 4:3269abcc9c73 68 writeEEPROMHalfWord(adresse+50, tab[25]);
valentinbruchet 4:3269abcc9c73 69 writeEEPROMHalfWord(adresse+52, tab[26]);
valentinbruchet 4:3269abcc9c73 70 writeEEPROMHalfWord(adresse+54, tab[27]);
valentinbruchet 4:3269abcc9c73 71 writeEEPROMHalfWord(adresse+56, tab[28]);
valentinbruchet 4:3269abcc9c73 72 writeEEPROMHalfWord(adresse+58, tab[29]);
valentinbruchet 4:3269abcc9c73 73 writeEEPROMHalfWord(adresse+60, tab[30]);
valentinbruchet 4:3269abcc9c73 74 writeEEPROMHalfWord(adresse+62, tab[31]);
valentinbruchet 4:3269abcc9c73 75 writeEEPROMHalfWord(adresse+64, tab[32]);
valentinbruchet 4:3269abcc9c73 76 writeEEPROMHalfWord(adresse+66, tab[33]);
valentinbruchet 4:3269abcc9c73 77 writeEEPROMHalfWord(adresse+68, tab[34]);
valentinbruchet 4:3269abcc9c73 78 writeEEPROMHalfWord(adresse+70, tab[35]);
valentinbruchet 4:3269abcc9c73 79 writeEEPROMHalfWord(adresse+72, tab[36]);
valentinbruchet 4:3269abcc9c73 80 writeEEPROMHalfWord(adresse+74, tab[37]);
valentinbruchet 4:3269abcc9c73 81 writeEEPROMHalfWord(adresse+76, tab[38]);
valentinbruchet 4:3269abcc9c73 82 writeEEPROMHalfWord(adresse+78, tab[39]);
pathae 2:68c9ff91504c 83 disableEEPROMWriting(); //Interdiction d'ecriture
valentinbruchet 4:3269abcc9c73 84 myled=!myled;
valentinbruchet 4:3269abcc9c73 85 wait(0.5);
valentinbruchet 4:3269abcc9c73 86 myled=!myled;
valentinbruchet 4:3269abcc9c73 87 wait(0.5);
pathae 2:68c9ff91504c 88 /*lecture et affichage*/
pathae 2:68c9ff91504c 89 lecture=readEEPROMHalfWord(adresse);
pathae 2:68c9ff91504c 90 pc.printf ("valeur lue: %d\n\r",lecture);
pathae 2:68c9ff91504c 91 lecture=readEEPROMHalfWord(adresse+2);
pathae 2:68c9ff91504c 92 pc.printf ("valeur lue: %d\n\r",lecture);
pathae 2:68c9ff91504c 93 lecture=readEEPROMHalfWord(adresse+4);
pathae 2:68c9ff91504c 94 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 95 lecture=readEEPROMHalfWord(adresse+6);
valentinbruchet 4:3269abcc9c73 96 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 97 lecture=readEEPROMHalfWord(adresse+8);
valentinbruchet 4:3269abcc9c73 98 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 99 lecture=readEEPROMHalfWord(adresse+10);
valentinbruchet 4:3269abcc9c73 100 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 101 lecture=readEEPROMHalfWord(adresse+12);
valentinbruchet 4:3269abcc9c73 102 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 103 lecture=readEEPROMHalfWord(adresse+14);
valentinbruchet 4:3269abcc9c73 104 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 105 lecture=readEEPROMHalfWord(adresse+16);
valentinbruchet 4:3269abcc9c73 106 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 107 lecture=readEEPROMHalfWord(adresse+18);
valentinbruchet 4:3269abcc9c73 108 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 109 lecture=readEEPROMHalfWord(adresse+20);
valentinbruchet 4:3269abcc9c73 110 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 111 lecture=readEEPROMHalfWord(adresse+22);
valentinbruchet 4:3269abcc9c73 112 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 113 lecture=readEEPROMHalfWord(adresse+24);
valentinbruchet 4:3269abcc9c73 114 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 115 lecture=readEEPROMHalfWord(adresse+26);
valentinbruchet 4:3269abcc9c73 116 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 117 lecture=readEEPROMHalfWord(adresse+28);
valentinbruchet 4:3269abcc9c73 118 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 119 lecture=readEEPROMHalfWord(adresse+30);
valentinbruchet 4:3269abcc9c73 120 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 121 lecture=readEEPROMHalfWord(adresse+32);
valentinbruchet 4:3269abcc9c73 122 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 123 lecture=readEEPROMHalfWord(adresse+34);
valentinbruchet 4:3269abcc9c73 124 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 125 lecture=readEEPROMHalfWord(adresse+36);
valentinbruchet 4:3269abcc9c73 126 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 127 lecture=readEEPROMHalfWord(adresse+38);
valentinbruchet 4:3269abcc9c73 128 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 129 lecture=readEEPROMHalfWord(adresse+40);
valentinbruchet 4:3269abcc9c73 130 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 131 lecture=readEEPROMHalfWord(adresse+42);
valentinbruchet 4:3269abcc9c73 132 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 133 lecture=readEEPROMHalfWord(adresse+44);
valentinbruchet 4:3269abcc9c73 134 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 135 lecture=readEEPROMHalfWord(adresse+46);
valentinbruchet 4:3269abcc9c73 136 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 137 lecture=readEEPROMHalfWord(adresse+48);
valentinbruchet 4:3269abcc9c73 138 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 139 lecture=readEEPROMHalfWord(adresse+50);
valentinbruchet 4:3269abcc9c73 140 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 141 lecture=readEEPROMHalfWord(adresse+52);
valentinbruchet 4:3269abcc9c73 142 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 143 lecture=readEEPROMHalfWord(adresse+54);
valentinbruchet 4:3269abcc9c73 144 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 145 lecture=readEEPROMHalfWord(adresse+56);
valentinbruchet 4:3269abcc9c73 146 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 147 lecture=readEEPROMHalfWord(adresse+58);
valentinbruchet 4:3269abcc9c73 148 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 149 lecture=readEEPROMHalfWord(adresse+60);
valentinbruchet 4:3269abcc9c73 150 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 151 lecture=readEEPROMHalfWord(adresse+62);
valentinbruchet 4:3269abcc9c73 152 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 153 lecture=readEEPROMHalfWord(adresse+64);
valentinbruchet 4:3269abcc9c73 154 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 155 lecture=readEEPROMHalfWord(adresse+68);
valentinbruchet 4:3269abcc9c73 156 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 157 lecture=readEEPROMHalfWord(adresse+70);
valentinbruchet 4:3269abcc9c73 158 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 159 lecture=readEEPROMHalfWord(adresse+72);
valentinbruchet 4:3269abcc9c73 160 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 161 lecture=readEEPROMHalfWord(adresse+76);
valentinbruchet 4:3269abcc9c73 162 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 163 lecture=readEEPROMHalfWord(adresse+78);
valentinbruchet 4:3269abcc9c73 164 pc.printf ("valeur lue: %d\n\r",lecture);
valentinbruchet 4:3269abcc9c73 165 while(1);
valentinbruchet 4:3269abcc9c73 166 }