Some test with Nucleo and SPI EEPROM.

Dependencies:   mbed

Committer:
kaliczp
Date:
Tue Jan 20 02:16:06 2015 +0000
Revision:
2:1ad4d6a0ebfe
Parent:
1:c667d1f8e407
Read write free strings.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kaliczp 0:a063a7db08f8 1 #include "mbed.h"
kaliczp 0:a063a7db08f8 2
kaliczp 0:a063a7db08f8 3 DigitalIn mybutton(USER_BUTTON); // Activate button
kaliczp 0:a063a7db08f8 4 DigitalOut chipselect(D10); // ChipSelect (CS) pin
kaliczp 0:a063a7db08f8 5 SPI eeprom(SPI_MOSI, SPI_MISO, SPI_SCK); // Activate SPI to ST eeprom
kaliczp 2:1ad4d6a0ebfe 6 Serial pc(SERIAL_TX, SERIAL_RX);
kaliczp 0:a063a7db08f8 7
kaliczp 0:a063a7db08f8 8 #define WREN 0x06
kaliczp 0:a063a7db08f8 9 #define RDSR 0x05
kaliczp 0:a063a7db08f8 10 #define READ_LOW 0x03
kaliczp 1:c667d1f8e407 11 #define WRITE_LOW 0x02
kaliczp 0:a063a7db08f8 12
kaliczp 0:a063a7db08f8 13 int main() {
kaliczp 2:1ad4d6a0ebfe 14 char char_in = 't';
kaliczp 2:1ad4d6a0ebfe 15 char char_out;
kaliczp 2:1ad4d6a0ebfe 16 int i = 0;
kaliczp 2:1ad4d6a0ebfe 17
kaliczp 0:a063a7db08f8 18 chipselect =1;
kaliczp 0:a063a7db08f8 19 eeprom.frequency(1000000); // set 1 MHz clock rate
kaliczp 0:a063a7db08f8 20 while(1) {
kaliczp 0:a063a7db08f8 21 if (mybutton == 0) { // Button is pressed
kaliczp 0:a063a7db08f8 22 chipselect = 0;
kaliczp 0:a063a7db08f8 23 eeprom.write(RDSR);
kaliczp 0:a063a7db08f8 24 eeprom.write(0x00);
kaliczp 0:a063a7db08f8 25 chipselect = 1;
kaliczp 0:a063a7db08f8 26 chipselect = 0;
kaliczp 0:a063a7db08f8 27 eeprom.write(WREN);
kaliczp 0:a063a7db08f8 28 chipselect = 1;
kaliczp 0:a063a7db08f8 29 wait_us(1);
kaliczp 2:1ad4d6a0ebfe 30 while((char_in == 'y') == (char_in == 'n')){
kaliczp 2:1ad4d6a0ebfe 31 pc.printf("\n\rDo you want type in some characters? Answer (y/n): ");
kaliczp 2:1ad4d6a0ebfe 32 char_in=pc.getc();
kaliczp 2:1ad4d6a0ebfe 33 pc.putc(char_in);
kaliczp 2:1ad4d6a0ebfe 34 if((char_in != 'n') == (char_in != 'y')) {
kaliczp 2:1ad4d6a0ebfe 35 pc.printf("\n\rPlease substitute %c with (y/n)-t", char_in);
kaliczp 2:1ad4d6a0ebfe 36 }
kaliczp 2:1ad4d6a0ebfe 37 }
kaliczp 2:1ad4d6a0ebfe 38 if(char_in == 'y'){
kaliczp 2:1ad4d6a0ebfe 39 pc.printf("\n\rWrite something (max. 16 chars): ");
kaliczp 2:1ad4d6a0ebfe 40 i = 0;
kaliczp 2:1ad4d6a0ebfe 41 while(i < 16){
kaliczp 2:1ad4d6a0ebfe 42 char_in=pc.getc();
kaliczp 2:1ad4d6a0ebfe 43 if(char_in == '\n'){
kaliczp 2:1ad4d6a0ebfe 44 i = 16;
kaliczp 2:1ad4d6a0ebfe 45 break;
kaliczp 2:1ad4d6a0ebfe 46 }
kaliczp 2:1ad4d6a0ebfe 47 chipselect = 0;
kaliczp 2:1ad4d6a0ebfe 48 eeprom.write(WREN);
kaliczp 2:1ad4d6a0ebfe 49 chipselect = 1;
kaliczp 2:1ad4d6a0ebfe 50 wait_us(1);
kaliczp 2:1ad4d6a0ebfe 51 chipselect = 0;
kaliczp 2:1ad4d6a0ebfe 52 eeprom.write(WRITE_LOW);
kaliczp 2:1ad4d6a0ebfe 53 eeprom.write(i);
kaliczp 2:1ad4d6a0ebfe 54 eeprom.write(char_in);
kaliczp 2:1ad4d6a0ebfe 55 chipselect = 1;
kaliczp 2:1ad4d6a0ebfe 56 i++;
kaliczp 2:1ad4d6a0ebfe 57 pc.putc(char_in);
kaliczp 2:1ad4d6a0ebfe 58 }
kaliczp 2:1ad4d6a0ebfe 59 char_in = 't';
kaliczp 2:1ad4d6a0ebfe 60 }
kaliczp 2:1ad4d6a0ebfe 61 if(char_in == 'n'){
kaliczp 2:1ad4d6a0ebfe 62 pc.printf("\n\rFirst page: ");
kaliczp 2:1ad4d6a0ebfe 63 for(i=0; i<16; i++){
kaliczp 2:1ad4d6a0ebfe 64 chipselect = 0;
kaliczp 2:1ad4d6a0ebfe 65 eeprom.write(READ_LOW);
kaliczp 2:1ad4d6a0ebfe 66 eeprom.write(i);
kaliczp 2:1ad4d6a0ebfe 67 char_out = eeprom.write(0x00);
kaliczp 2:1ad4d6a0ebfe 68 chipselect = 1;
kaliczp 2:1ad4d6a0ebfe 69 pc.putc(char_out);
kaliczp 2:1ad4d6a0ebfe 70 }
kaliczp 2:1ad4d6a0ebfe 71 char_in = 't';
kaliczp 2:1ad4d6a0ebfe 72 }
kaliczp 2:1ad4d6a0ebfe 73 pc.printf("\n\r");
kaliczp 0:a063a7db08f8 74 wait(2);
kaliczp 0:a063a7db08f8 75 }
kaliczp 0:a063a7db08f8 76 }
kaliczp 0:a063a7db08f8 77 }
kaliczp 0:a063a7db08f8 78