Version 1
Dependencies: mbed-os-retarget-segger-rtt SPI_MX25R
source/main.cpp@3:3e570f67f243, 2020-09-04 (annotated)
- Committer:
- d4rth_j0k3r
- Date:
- Fri Sep 04 13:36:18 2020 +0000
- Revision:
- 3:3e570f67f243
- Parent:
- 1:1fbbef4e4497
Fnish
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
d4rth_j0k3r | 0:11abb8d64f62 | 1 | /* Pneumoscope Version 1.0 |
d4rth_j0k3r | 0:11abb8d64f62 | 2 | Florian CHAYS |
d4rth_j0k3r | 0:11abb8d64f62 | 3 | */ |
d4rth_j0k3r | 0:11abb8d64f62 | 4 | |
d4rth_j0k3r | 1:1fbbef4e4497 | 5 | #include <cctype> |
d4rth_j0k3r | 0:11abb8d64f62 | 6 | #include <events/mbed_events.h> |
d4rth_j0k3r | 0:11abb8d64f62 | 7 | #include "mbed.h" |
d4rth_j0k3r | 0:11abb8d64f62 | 8 | #include "ble/BLE.h" |
d4rth_j0k3r | 0:11abb8d64f62 | 9 | #include "SPI_MX25R.h" |
d4rth_j0k3r | 0:11abb8d64f62 | 10 | #include <main.h> |
d4rth_j0k3r | 0:11abb8d64f62 | 11 | |
d4rth_j0k3r | 0:11abb8d64f62 | 12 | /* ========================== |
d4rth_j0k3r | 0:11abb8d64f62 | 13 | = MAIN = |
d4rth_j0k3r | 0:11abb8d64f62 | 14 | ==========================*/ |
d4rth_j0k3r | 0:11abb8d64f62 | 15 | int main() |
d4rth_j0k3r | 0:11abb8d64f62 | 16 | { |
d4rth_j0k3r | 0:11abb8d64f62 | 17 | MS_State = ST_INIT; |
d4rth_j0k3r | 0:11abb8d64f62 | 18 | int go_out = 1; |
d4rth_j0k3r | 0:11abb8d64f62 | 19 | |
d4rth_j0k3r | 0:11abb8d64f62 | 20 | while(go_out){ |
d4rth_j0k3r | 0:11abb8d64f62 | 21 | switch(MS_State){ |
d4rth_j0k3r | 0:11abb8d64f62 | 22 | case ST_INIT : |
d4rth_j0k3r | 0:11abb8d64f62 | 23 | init(); |
d4rth_j0k3r | 0:11abb8d64f62 | 24 | break; |
d4rth_j0k3r | 0:11abb8d64f62 | 25 | |
d4rth_j0k3r | 0:11abb8d64f62 | 26 | case ST_P1 : |
d4rth_j0k3r | 0:11abb8d64f62 | 27 | test_flash_1(); |
d4rth_j0k3r | 0:11abb8d64f62 | 28 | MS_State = ST_P2; |
d4rth_j0k3r | 0:11abb8d64f62 | 29 | break; |
d4rth_j0k3r | 0:11abb8d64f62 | 30 | |
d4rth_j0k3r | 0:11abb8d64f62 | 31 | case ST_P2 : |
d4rth_j0k3r | 0:11abb8d64f62 | 32 | test_flash_2(); |
d4rth_j0k3r | 0:11abb8d64f62 | 33 | MS_State = ST_P3; |
d4rth_j0k3r | 0:11abb8d64f62 | 34 | break; |
d4rth_j0k3r | 3:3e570f67f243 | 35 | |
d4rth_j0k3r | 3:3e570f67f243 | 36 | case ST_P3 : |
d4rth_j0k3r | 3:3e570f67f243 | 37 | test_flash_3(); |
d4rth_j0k3r | 3:3e570f67f243 | 38 | MS_State = ST_P4; |
d4rth_j0k3r | 3:3e570f67f243 | 39 | break; |
d4rth_j0k3r | 0:11abb8d64f62 | 40 | |
d4rth_j0k3r | 3:3e570f67f243 | 41 | case ST_P4 : |
d4rth_j0k3r | 0:11abb8d64f62 | 42 | test_ADC(); |
d4rth_j0k3r | 0:11abb8d64f62 | 43 | MS_State = ST_END; |
d4rth_j0k3r | 0:11abb8d64f62 | 44 | break; |
d4rth_j0k3r | 0:11abb8d64f62 | 45 | |
d4rth_j0k3r | 0:11abb8d64f62 | 46 | case ST_END : |
d4rth_j0k3r | 0:11abb8d64f62 | 47 | printf("\n\r==== TESTS RESULTS ====\n\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 48 | printf("Test done with %d data\n\r",MAX_DATA); |
d4rth_j0k3r | 3:3e570f67f243 | 49 | printf("1. Flash 1-by-1 : %d\n\r",nr_error[0]); |
d4rth_j0k3r | 3:3e570f67f243 | 50 | printf("2. Flash array : %d\n\r",nr_error[1]); |
d4rth_j0k3r | 3:3e570f67f243 | 51 | printf("3. Flash multiples arrays : %d\n\r",nr_error[1]); |
d4rth_j0k3r | 0:11abb8d64f62 | 52 | printf("\nRestart test session (0/1)?\n\r") ; |
d4rth_j0k3r | 0:11abb8d64f62 | 53 | printf("> ") ; |
d4rth_j0k3r | 0:11abb8d64f62 | 54 | scanf("%d", &go_out) ; |
d4rth_j0k3r | 0:11abb8d64f62 | 55 | printf("Choice %d",go_out); |
d4rth_j0k3r | 0:11abb8d64f62 | 56 | if (go_out) MS_State = ST_INIT; |
d4rth_j0k3r | 0:11abb8d64f62 | 57 | break; |
d4rth_j0k3r | 0:11abb8d64f62 | 58 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 59 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 60 | printf("\n\r==== SESSION ENDED ====\n\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 61 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 62 | |
d4rth_j0k3r | 0:11abb8d64f62 | 63 | /* =========================== |
d4rth_j0k3r | 0:11abb8d64f62 | 64 | = FUNCTIONS = |
d4rth_j0k3r | 0:11abb8d64f62 | 65 | ===========================*/ |
d4rth_j0k3r | 0:11abb8d64f62 | 66 | |
d4rth_j0k3r | 0:11abb8d64f62 | 67 | // ==== INITIALIZATION ==== |
d4rth_j0k3r | 0:11abb8d64f62 | 68 | void init(){ |
d4rth_j0k3r | 0:11abb8d64f62 | 69 | printf("\n\r==== Pneumoscope TestBench ====\n\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 70 | printf("Enter size of array\n\r") ; |
d4rth_j0k3r | 0:11abb8d64f62 | 71 | printf("> ") ; |
d4rth_j0k3r | 0:11abb8d64f62 | 72 | scanf("%d", &MAX_DATA) ; |
d4rth_j0k3r | 0:11abb8d64f62 | 73 | |
d4rth_j0k3r | 3:3e570f67f243 | 74 | start_add = 0; |
d4rth_j0k3r | 3:3e570f67f243 | 75 | |
d4rth_j0k3r | 0:11abb8d64f62 | 76 | // Resistance to size of 0 |
d4rth_j0k3r | 0:11abb8d64f62 | 77 | MAX_DATA = (MAX_DATA == 0) ? 16 : MAX_DATA; |
d4rth_j0k3r | 0:11abb8d64f62 | 78 | printf("\n\rTest with %d bytes\n\r",MAX_DATA); |
d4rth_j0k3r | 0:11abb8d64f62 | 79 | |
d4rth_j0k3r | 0:11abb8d64f62 | 80 | for (int i = 0; i < 3; i++){ |
d4rth_j0k3r | 0:11abb8d64f62 | 81 | nr_error[i] = 0; |
d4rth_j0k3r | 0:11abb8d64f62 | 82 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 83 | |
d4rth_j0k3r | 3:3e570f67f243 | 84 | button.rise(&flip_led); // Button Interrupt |
d4rth_j0k3r | 3:3e570f67f243 | 85 | |
d4rth_j0k3r | 0:11abb8d64f62 | 86 | // Next State |
d4rth_j0k3r | 0:11abb8d64f62 | 87 | MS_State = ST_P1; |
d4rth_j0k3r | 0:11abb8d64f62 | 88 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 89 | |
d4rth_j0k3r | 0:11abb8d64f62 | 90 | // ==== TEST FLASH 1 ==== |
d4rth_j0k3r | 0:11abb8d64f62 | 91 | void test_flash_1(){ |
d4rth_j0k3r | 0:11abb8d64f62 | 92 | printf("\n\r==== 1. Flash Memory Test 1-by-1 ====\n\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 93 | clear_memory(); |
d4rth_j0k3r | 0:11abb8d64f62 | 94 | |
d4rth_j0k3r | 0:11abb8d64f62 | 95 | uint8_t data_in, data_out; |
d4rth_j0k3r | 0:11abb8d64f62 | 96 | |
d4rth_j0k3r | 3:3e570f67f243 | 97 | for (int address = start_add; address < MAX_DATA; address++){ |
d4rth_j0k3r | 0:11abb8d64f62 | 98 | // Generating data to be written |
d4rth_j0k3r | 0:11abb8d64f62 | 99 | data_in = rand() % 256; |
d4rth_j0k3r | 0:11abb8d64f62 | 100 | data_out = 0; |
d4rth_j0k3r | 0:11abb8d64f62 | 101 | |
d4rth_j0k3r | 0:11abb8d64f62 | 102 | // Send data |
d4rth_j0k3r | 0:11abb8d64f62 | 103 | spi_mem.writeEnable(); |
d4rth_j0k3r | 0:11abb8d64f62 | 104 | spi_mem.programPage(address, &data_in, 1); |
d4rth_j0k3r | 0:11abb8d64f62 | 105 | while(spi_mem.readStatus() & 0x01){} |
d4rth_j0k3r | 0:11abb8d64f62 | 106 | |
d4rth_j0k3r | 0:11abb8d64f62 | 107 | // Read data written |
d4rth_j0k3r | 0:11abb8d64f62 | 108 | data_out = spi_mem.read8(address); |
d4rth_j0k3r | 3:3e570f67f243 | 109 | nr_error[0] += error_check(address, data_in, data_out); |
d4rth_j0k3r | 3:3e570f67f243 | 110 | //if (nr_error[0]) break; |
d4rth_j0k3r | 0:11abb8d64f62 | 111 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 112 | |
d4rth_j0k3r | 0:11abb8d64f62 | 113 | read_range(MAX_DATA); |
d4rth_j0k3r | 0:11abb8d64f62 | 114 | if (!nr_error[0]){ |
d4rth_j0k3r | 0:11abb8d64f62 | 115 | printf("Test passed successfully\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 116 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 117 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 118 | |
d4rth_j0k3r | 0:11abb8d64f62 | 119 | // ==== TEST FLASH 2 ==== |
d4rth_j0k3r | 0:11abb8d64f62 | 120 | void test_flash_2(){ |
d4rth_j0k3r | 0:11abb8d64f62 | 121 | printf("\n\n\r==== 2. Flash Memory Test Array ====\n\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 122 | clear_memory(); |
d4rth_j0k3r | 0:11abb8d64f62 | 123 | |
d4rth_j0k3r | 0:11abb8d64f62 | 124 | uint8_t data_in[MAX_DATA], data_out[MAX_DATA]; |
d4rth_j0k3r | 0:11abb8d64f62 | 125 | int address; |
d4rth_j0k3r | 0:11abb8d64f62 | 126 | |
d4rth_j0k3r | 0:11abb8d64f62 | 127 | // Generating data to be written |
d4rth_j0k3r | 3:3e570f67f243 | 128 | for (address = start_add; address < MAX_DATA; address++){ |
d4rth_j0k3r | 0:11abb8d64f62 | 129 | data_in[address] = rand() % 256; |
d4rth_j0k3r | 0:11abb8d64f62 | 130 | data_out[address] = 0; |
d4rth_j0k3r | 0:11abb8d64f62 | 131 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 132 | |
d4rth_j0k3r | 0:11abb8d64f62 | 133 | // Send data |
d4rth_j0k3r | 0:11abb8d64f62 | 134 | spi_mem.writeEnable(); |
d4rth_j0k3r | 3:3e570f67f243 | 135 | spi_mem.programPage(start_add, data_in, MAX_DATA); |
d4rth_j0k3r | 0:11abb8d64f62 | 136 | while(spi_mem.readStatus() & 0x01){} // Check status |
d4rth_j0k3r | 0:11abb8d64f62 | 137 | printf("[INFO] Data sent\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 138 | |
d4rth_j0k3r | 0:11abb8d64f62 | 139 | // Read data written |
d4rth_j0k3r | 3:3e570f67f243 | 140 | printf("Checking In/Out Data "); |
d4rth_j0k3r | 3:3e570f67f243 | 141 | for (address = start_add; address < MAX_DATA; address++){ |
d4rth_j0k3r | 0:11abb8d64f62 | 142 | printf("."); |
d4rth_j0k3r | 0:11abb8d64f62 | 143 | data_out[address] = spi_mem.read8(address); |
d4rth_j0k3r | 3:3e570f67f243 | 144 | nr_error[1] += error_check(address, data_in[address], data_out[address]); |
d4rth_j0k3r | 3:3e570f67f243 | 145 | //if (nr_error[1]) break; |
d4rth_j0k3r | 0:11abb8d64f62 | 146 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 147 | printf("\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 148 | |
d4rth_j0k3r | 0:11abb8d64f62 | 149 | read_range(MAX_DATA); |
d4rth_j0k3r | 0:11abb8d64f62 | 150 | if (!nr_error[1]){ |
d4rth_j0k3r | 0:11abb8d64f62 | 151 | printf("Test passed successfully\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 152 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 153 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 154 | |
d4rth_j0k3r | 3:3e570f67f243 | 155 | // ==== TEST FLASH 3 ==== |
d4rth_j0k3r | 3:3e570f67f243 | 156 | void test_flash_3(){ |
d4rth_j0k3r | 3:3e570f67f243 | 157 | printf("\n\n\r==== 3. Flash Memory Test Multiple Arrays ====\n\n\r"); |
d4rth_j0k3r | 3:3e570f67f243 | 158 | clear_memory(); |
d4rth_j0k3r | 3:3e570f67f243 | 159 | |
d4rth_j0k3r | 3:3e570f67f243 | 160 | uint8_t data_size = 4; |
d4rth_j0k3r | 3:3e570f67f243 | 161 | uint8_t data_in[256*data_size], data_out[256*data_size]; |
d4rth_j0k3r | 3:3e570f67f243 | 162 | uint8_t buffer[256]; |
d4rth_j0k3r | 3:3e570f67f243 | 163 | int address; |
d4rth_j0k3r | 3:3e570f67f243 | 164 | |
d4rth_j0k3r | 3:3e570f67f243 | 165 | // Generating data to be written |
d4rth_j0k3r | 3:3e570f67f243 | 166 | for (int iter = 0; iter < 256*data_size; iter++){ |
d4rth_j0k3r | 3:3e570f67f243 | 167 | data_in[iter] = rand() % 256; |
d4rth_j0k3r | 3:3e570f67f243 | 168 | data_out[iter] = 0; |
d4rth_j0k3r | 3:3e570f67f243 | 169 | } |
d4rth_j0k3r | 3:3e570f67f243 | 170 | for (int iter = 0; iter < 256; iter++){ |
d4rth_j0k3r | 3:3e570f67f243 | 171 | buffer[iter] = 0; |
d4rth_j0k3r | 3:3e570f67f243 | 172 | } |
d4rth_j0k3r | 3:3e570f67f243 | 173 | |
d4rth_j0k3r | 3:3e570f67f243 | 174 | for (int nbr = 0; nbr < data_size; nbr++){ |
d4rth_j0k3r | 3:3e570f67f243 | 175 | // Send data |
d4rth_j0k3r | 3:3e570f67f243 | 176 | for (int idx = 0; idx < 256; idx++){ |
d4rth_j0k3r | 3:3e570f67f243 | 177 | buffer[idx] = data_in[nbr*256+idx]; |
d4rth_j0k3r | 3:3e570f67f243 | 178 | } |
d4rth_j0k3r | 3:3e570f67f243 | 179 | spi_mem.writeEnable(); |
d4rth_j0k3r | 3:3e570f67f243 | 180 | spi_mem.programPage(nbr*256, buffer, 256); |
d4rth_j0k3r | 3:3e570f67f243 | 181 | while(spi_mem.readStatus() & 0x01){} // Check status |
d4rth_j0k3r | 3:3e570f67f243 | 182 | } |
d4rth_j0k3r | 3:3e570f67f243 | 183 | printf("[INFO] Data sent\n\r"); |
d4rth_j0k3r | 3:3e570f67f243 | 184 | |
d4rth_j0k3r | 3:3e570f67f243 | 185 | // Read data written |
d4rth_j0k3r | 3:3e570f67f243 | 186 | printf("Checking In/Out Data "); |
d4rth_j0k3r | 3:3e570f67f243 | 187 | for (address = 0; address < data_size*256; address++){ |
d4rth_j0k3r | 3:3e570f67f243 | 188 | printf("."); |
d4rth_j0k3r | 3:3e570f67f243 | 189 | data_out[address] = spi_mem.read8(address); |
d4rth_j0k3r | 3:3e570f67f243 | 190 | nr_error[2] += error_check(address, data_in[address], data_out[address]); |
d4rth_j0k3r | 3:3e570f67f243 | 191 | //if (nr_error[1]) break; |
d4rth_j0k3r | 3:3e570f67f243 | 192 | } |
d4rth_j0k3r | 3:3e570f67f243 | 193 | printf("\n\r"); |
d4rth_j0k3r | 3:3e570f67f243 | 194 | |
d4rth_j0k3r | 3:3e570f67f243 | 195 | read_range(data_size*256); |
d4rth_j0k3r | 3:3e570f67f243 | 196 | if (!nr_error[2]){ |
d4rth_j0k3r | 3:3e570f67f243 | 197 | printf("Test passed successfully\n\r"); |
d4rth_j0k3r | 3:3e570f67f243 | 198 | } |
d4rth_j0k3r | 3:3e570f67f243 | 199 | } |
d4rth_j0k3r | 3:3e570f67f243 | 200 | |
d4rth_j0k3r | 0:11abb8d64f62 | 201 | // ==== TEST ADC ==== |
d4rth_j0k3r | 0:11abb8d64f62 | 202 | void test_ADC(){ |
d4rth_j0k3r | 3:3e570f67f243 | 203 | printf("\n\n\r==== 4. ADC Test ====\n\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 204 | clear_memory(); |
d4rth_j0k3r | 0:11abb8d64f62 | 205 | |
d4rth_j0k3r | 0:11abb8d64f62 | 206 | // ADC 12 bits framerate 200 ksps during 10 sec : 4 Mo |
d4rth_j0k3r | 0:11abb8d64f62 | 207 | |
d4rth_j0k3r | 0:11abb8d64f62 | 208 | uint8_t data_in[2], data_out[2]; |
d4rth_j0k3r | 0:11abb8d64f62 | 209 | float analog_in, analog_out; |
d4rth_j0k3r | 3:3e570f67f243 | 210 | int max_adc = 32; |
d4rth_j0k3r | 0:11abb8d64f62 | 211 | |
d4rth_j0k3r | 0:11abb8d64f62 | 212 | // Generating data to be written |
d4rth_j0k3r | 0:11abb8d64f62 | 213 | for (int i = 0; i < max_adc; i++){ |
d4rth_j0k3r | 0:11abb8d64f62 | 214 | analog_in = Mic_Pat.read(); |
d4rth_j0k3r | 0:11abb8d64f62 | 215 | printf("%d : float = %f / hex = %x\n\r",i, analog_in, *(unsigned int*)&analog_in); |
d4rth_j0k3r | 0:11abb8d64f62 | 216 | data_in[0] = ((*(unsigned int*)&analog_in) >> 8) & 0xFF; |
d4rth_j0k3r | 0:11abb8d64f62 | 217 | data_in[1] = (*(unsigned int*)&analog_in) & 0xFF; |
d4rth_j0k3r | 0:11abb8d64f62 | 218 | |
d4rth_j0k3r | 0:11abb8d64f62 | 219 | // Send data |
d4rth_j0k3r | 0:11abb8d64f62 | 220 | spi_mem.writeEnable(); |
d4rth_j0k3r | 0:11abb8d64f62 | 221 | spi_mem.programPage(2*i, data_in, 2); |
d4rth_j0k3r | 0:11abb8d64f62 | 222 | while(spi_mem.readStatus() & 0x01){} // Check status |
d4rth_j0k3r | 0:11abb8d64f62 | 223 | wait_us(5); |
d4rth_j0k3r | 0:11abb8d64f62 | 224 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 225 | read_range(max_adc*2); |
d4rth_j0k3r | 0:11abb8d64f62 | 226 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 227 | |
d4rth_j0k3r | 0:11abb8d64f62 | 228 | // ========================= |
d4rth_j0k3r | 0:11abb8d64f62 | 229 | // ==== OTHER FUNCTIONS ==== |
d4rth_j0k3r | 3:3e570f67f243 | 230 | void flip_led(){ |
d4rth_j0k3r | 3:3e570f67f243 | 231 | myled = !myled; |
d4rth_j0k3r | 3:3e570f67f243 | 232 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 233 | |
d4rth_j0k3r | 0:11abb8d64f62 | 234 | void read_range(int max_data){ |
d4rth_j0k3r | 0:11abb8d64f62 | 235 | printf("[INFO] Memory State :"); |
d4rth_j0k3r | 0:11abb8d64f62 | 236 | uint8_t data[max_data] ; |
d4rth_j0k3r | 0:11abb8d64f62 | 237 | int current_address = 0; |
d4rth_j0k3r | 0:11abb8d64f62 | 238 | for (int i = 0 ; current_address < max_data; i++ ) { |
d4rth_j0k3r | 0:11abb8d64f62 | 239 | printf("\n\r%d : ", current_address ) ; |
d4rth_j0k3r | 0:11abb8d64f62 | 240 | for (int j = 0 ; j < 8 ; j++ ) { |
d4rth_j0k3r | 0:11abb8d64f62 | 241 | data[j] = spi_mem.read8(current_address ) ; |
d4rth_j0k3r | 0:11abb8d64f62 | 242 | printf("%02X ", data[j]) ; |
d4rth_j0k3r | 0:11abb8d64f62 | 243 | current_address++; |
d4rth_j0k3r | 0:11abb8d64f62 | 244 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 245 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 246 | printf("\n\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 247 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 248 | |
d4rth_j0k3r | 0:11abb8d64f62 | 249 | void clear_memory(){ |
d4rth_j0k3r | 0:11abb8d64f62 | 250 | spi_mem.writeEnable(); |
d4rth_j0k3r | 0:11abb8d64f62 | 251 | spi_mem.sectorErase(0); |
d4rth_j0k3r | 3:3e570f67f243 | 252 | while(spi_mem.readStatus() & 0x01){} // Check status |
d4rth_j0k3r | 0:11abb8d64f62 | 253 | printf("[INFO] Memory Cleared\n\r"); |
d4rth_j0k3r | 0:11abb8d64f62 | 254 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 255 | |
d4rth_j0k3r | 0:11abb8d64f62 | 256 | bool error_check(int index, unsigned char data_in, unsigned char data_out){ |
d4rth_j0k3r | 0:11abb8d64f62 | 257 | if (data_in != data_out){ |
d4rth_j0k3r | 0:11abb8d64f62 | 258 | printf("[ERROR] Address %d : In = %d / Out = %d\n\r",index ,data_in,data_out); |
d4rth_j0k3r | 0:11abb8d64f62 | 259 | return 1; |
d4rth_j0k3r | 0:11abb8d64f62 | 260 | }else{ |
d4rth_j0k3r | 0:11abb8d64f62 | 261 | return 0; |
d4rth_j0k3r | 0:11abb8d64f62 | 262 | } |
d4rth_j0k3r | 0:11abb8d64f62 | 263 | } |