David Kester / Mbed 2 deprecated GonioTrainer

Dependencies:   mbed commands BLE_API nRF51822

Committer:
dkester
Date:
Sun Jun 07 14:11:26 2015 +0000
Revision:
5:46947b447701
Parent:
4:2a5a08b14539
Child:
6:75263c93daf7
Werking

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkester 0:1c5088dae6e1 1 #include "Storage.h"
dkester 0:1c5088dae6e1 2
dkester 0:1c5088dae6e1 3 SPI spi(p20, p22, p25); // mosi, miso, sclk
dkester 1:b44bd62c542f 4 DigitalOut cs(p14);
dkester 0:1c5088dae6e1 5
dkester 0:1c5088dae6e1 6 Storage* Storage::instance = new Storage();
dkester 0:1c5088dae6e1 7
dkester 0:1c5088dae6e1 8 Storage::Storage()
dkester 0:1c5088dae6e1 9 {
dkester 0:1c5088dae6e1 10 cs = 1;
dkester 5:46947b447701 11 spi.format(8,3);
dkester 5:46947b447701 12 spi.frequency(150000);
dkester 0:1c5088dae6e1 13 }
dkester 0:1c5088dae6e1 14
dkester 0:1c5088dae6e1 15 Storage* Storage::getInstance()
dkester 0:1c5088dae6e1 16 {
dkester 0:1c5088dae6e1 17 return instance;
dkester 0:1c5088dae6e1 18 }
dkester 0:1c5088dae6e1 19
dkester 4:2a5a08b14539 20 void Storage::setup()
dkester 4:2a5a08b14539 21 {
dkester 4:2a5a08b14539 22 }
dkester 4:2a5a08b14539 23
dkester 4:2a5a08b14539 24 void Storage::endAction()
dkester 4:2a5a08b14539 25 {
dkester 3:a3e1a06c486d 26 cs = 1;
dkester 4:2a5a08b14539 27 }
dkester 4:2a5a08b14539 28
dkester 4:2a5a08b14539 29 void Storage::setWRDI()
dkester 4:2a5a08b14539 30 {
dkester 4:2a5a08b14539 31 cs = 0;
dkester 4:2a5a08b14539 32 spi.write(0x04);
dkester 4:2a5a08b14539 33 cs = 1;
dkester 4:2a5a08b14539 34 }
dkester 4:2a5a08b14539 35
dkester 4:2a5a08b14539 36 void Storage::setWREN()
dkester 4:2a5a08b14539 37 {
dkester 3:a3e1a06c486d 38 cs = 0;
dkester 3:a3e1a06c486d 39 spi.write(0x06);
dkester 3:a3e1a06c486d 40 cs = 1;
dkester 4:2a5a08b14539 41 }
dkester 4:2a5a08b14539 42
dkester 4:2a5a08b14539 43 //for debug
dkester 4:2a5a08b14539 44 int8_t Storage::getSR1()
dkester 4:2a5a08b14539 45 {
dkester 1:b44bd62c542f 46 cs = 0;
dkester 3:a3e1a06c486d 47 spi.write(0x05);
dkester 4:2a5a08b14539 48 int8_t status = spi.write(0x00);
dkester 4:2a5a08b14539 49 cs = 1;
dkester 4:2a5a08b14539 50 return status;
dkester 4:2a5a08b14539 51 }
dkester 4:2a5a08b14539 52
dkester 4:2a5a08b14539 53 int8_t Storage::getSR2()
dkester 4:2a5a08b14539 54 {
dkester 4:2a5a08b14539 55 cs = 0;
dkester 4:2a5a08b14539 56 spi.write(0x35);
dkester 4:2a5a08b14539 57 int8_t status = spi.write(0x00);
dkester 4:2a5a08b14539 58 cs = 1;
dkester 4:2a5a08b14539 59 return status;
dkester 4:2a5a08b14539 60 }
dkester 4:2a5a08b14539 61
dkester 4:2a5a08b14539 62 void Storage::clearSR(){
dkester 4:2a5a08b14539 63 cs = 0;
dkester 4:2a5a08b14539 64 spi.write(0x30);
dkester 4:2a5a08b14539 65 cs = 1;
dkester 4:2a5a08b14539 66 }
dkester 4:2a5a08b14539 67
dkester 4:2a5a08b14539 68 bool Storage::isBusy()
dkester 4:2a5a08b14539 69 {
dkester 4:2a5a08b14539 70 cs = 0;
dkester 4:2a5a08b14539 71 spi.write(0x05);
dkester 4:2a5a08b14539 72
dkester 4:2a5a08b14539 73 if(spi.write(0x00) & 0x1) {
dkester 4:2a5a08b14539 74 cs = 1;
dkester 3:a3e1a06c486d 75 return true;
dkester 3:a3e1a06c486d 76 } else {
dkester 4:2a5a08b14539 77 cs = 1;
dkester 4:2a5a08b14539 78 return false;
dkester 3:a3e1a06c486d 79 }
dkester 3:a3e1a06c486d 80 }
dkester 3:a3e1a06c486d 81
dkester 4:2a5a08b14539 82 void Storage::pageProgram(int32_t addr)
dkester 4:2a5a08b14539 83 {
dkester 4:2a5a08b14539 84 setWREN();
dkester 3:a3e1a06c486d 85 cs = 0;
dkester 4:2a5a08b14539 86 spi.write(0x12);
dkester 4:2a5a08b14539 87
dkester 4:2a5a08b14539 88 char bytes[4];
dkester 4:2a5a08b14539 89 bytes[0] = (addr >> 24) & 0xff;
dkester 4:2a5a08b14539 90 bytes[1] = (addr >> 16) & 0xff;
dkester 4:2a5a08b14539 91 bytes[2] = (addr >> 8) & 0xff;
dkester 4:2a5a08b14539 92 bytes[3] = addr & 0xff;
dkester 4:2a5a08b14539 93
dkester 4:2a5a08b14539 94 spi.write(bytes[0]);
dkester 4:2a5a08b14539 95 spi.write(bytes[1]);
dkester 4:2a5a08b14539 96 spi.write(bytes[2]);
dkester 4:2a5a08b14539 97 spi.write(bytes[3]);
dkester 4:2a5a08b14539 98 /*
dkester 4:2a5a08b14539 99 for(int i = 3; i >= 0; i--){
dkester 4:2a5a08b14539 100 spi.write((addr >> (8*i)) & 0xff);
dkester 3:a3e1a06c486d 101 }
dkester 4:2a5a08b14539 102 */
dkester 3:a3e1a06c486d 103 }
dkester 4:2a5a08b14539 104
dkester 4:2a5a08b14539 105 void Storage::writeData(int8_t data)
dkester 4:2a5a08b14539 106 {
dkester 3:a3e1a06c486d 107 spi.write(data);
dkester 4:2a5a08b14539 108 }
dkester 4:2a5a08b14539 109
dkester 4:2a5a08b14539 110 void Storage::read(int32_t addr)
dkester 4:2a5a08b14539 111 {
dkester 3:a3e1a06c486d 112 cs = 0;
dkester 4:2a5a08b14539 113
dkester 3:a3e1a06c486d 114 spi.write(0x13);
dkester 4:2a5a08b14539 115
dkester 4:2a5a08b14539 116 char bytes[4];
dkester 4:2a5a08b14539 117 bytes[0] = (addr >> 24) & 0xff;
dkester 4:2a5a08b14539 118 bytes[1] = (addr >> 16) & 0xff;
dkester 4:2a5a08b14539 119 bytes[2] = (addr >> 8) & 0xff;
dkester 4:2a5a08b14539 120 bytes[3] = addr & 0xff;
dkester 4:2a5a08b14539 121
dkester 4:2a5a08b14539 122
dkester 4:2a5a08b14539 123 spi.write(bytes[0]);
dkester 4:2a5a08b14539 124 spi.write(bytes[1]);
dkester 4:2a5a08b14539 125 spi.write(bytes[2]);
dkester 4:2a5a08b14539 126 spi.write(bytes[3]);
dkester 4:2a5a08b14539 127
dkester 4:2a5a08b14539 128
dkester 4:2a5a08b14539 129 //for(int i = 3; i >= 0; i--){
dkester 4:2a5a08b14539 130 // spi.write((addr >> (8*i)) & 0xff);
dkester 4:2a5a08b14539 131 //}
dkester 4:2a5a08b14539 132 }
dkester 4:2a5a08b14539 133
dkester 4:2a5a08b14539 134 int8_t Storage::readData()
dkester 4:2a5a08b14539 135 {
dkester 4:2a5a08b14539 136 return spi.write(0x00);
dkester 4:2a5a08b14539 137 }
dkester 4:2a5a08b14539 138
dkester 4:2a5a08b14539 139 void Storage::bulkErase()
dkester 4:2a5a08b14539 140 {
dkester 4:2a5a08b14539 141 cs = 0;
dkester 4:2a5a08b14539 142 spi.write(0x60);
dkester 4:2a5a08b14539 143 wait(0.001);
dkester 4:2a5a08b14539 144 cs = 1;
dkester 4:2a5a08b14539 145 }
dkester 4:2a5a08b14539 146
dkester 4:2a5a08b14539 147 void Storage::reset()
dkester 4:2a5a08b14539 148 {
dkester 4:2a5a08b14539 149 cs = 0;
dkester 4:2a5a08b14539 150 spi.write(0xF0);
dkester 4:2a5a08b14539 151 cs = 1;
dkester 4:2a5a08b14539 152 }
dkester 4:2a5a08b14539 153
dkester 4:2a5a08b14539 154 void Storage::sectorErase(int32_t addr)
dkester 4:2a5a08b14539 155 {
dkester 4:2a5a08b14539 156 setWREN();
dkester 4:2a5a08b14539 157 cs = 0;
dkester 4:2a5a08b14539 158 spi.write(0xDC);
dkester 4:2a5a08b14539 159
dkester 5:46947b447701 160 char bytes[4] = {0,0,0,0};
dkester 4:2a5a08b14539 161 bytes[0] = (addr >> 24) & 0xff;
dkester 4:2a5a08b14539 162 bytes[1] = (addr >> 16) & 0xff;
dkester 4:2a5a08b14539 163 bytes[2] = (addr >> 8) & 0xff;
dkester 4:2a5a08b14539 164 bytes[3] = addr & 0xff;
dkester 4:2a5a08b14539 165
dkester 4:2a5a08b14539 166 spi.write(bytes[0]);
dkester 4:2a5a08b14539 167 spi.write(bytes[1]);
dkester 4:2a5a08b14539 168 spi.write(bytes[2]);
dkester 4:2a5a08b14539 169 spi.write(bytes[3]);
dkester 0:1c5088dae6e1 170
dkester 4:2a5a08b14539 171 cs = 1;
dkester 4:2a5a08b14539 172 }