Device to measure angle and get IMU measurements.
Dependencies: mbed commands BLE_API nRF51822
Storage.cpp@3:a3e1a06c486d, 2015-06-01 (annotated)
- Committer:
- dkester
- Date:
- Mon Jun 01 15:41:01 2015 +0000
- Revision:
- 3:a3e1a06c486d
- Parent:
- 1:b44bd62c542f
- Child:
- 4:2a5a08b14539
hoi;
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:b44bd62c542f | 11 | spi.format(8,0); |
dkester | 0:1c5088dae6e1 | 12 | spi.frequency(300000); |
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 | 3:a3e1a06c486d | 20 | void Storage::setup(){ |
dkester | 3:a3e1a06c486d | 21 | } |
dkester | 3:a3e1a06c486d | 22 | |
dkester | 3:a3e1a06c486d | 23 | void Storage::endAction(){ |
dkester | 3:a3e1a06c486d | 24 | cs = 1; |
dkester | 3:a3e1a06c486d | 25 | } |
dkester | 3:a3e1a06c486d | 26 | |
dkester | 3:a3e1a06c486d | 27 | bool Storage::setWREN(){ |
dkester | 3:a3e1a06c486d | 28 | cs = 0; |
dkester | 3:a3e1a06c486d | 29 | spi.write(0x06); |
dkester | 3:a3e1a06c486d | 30 | cs = 1; |
dkester | 3:a3e1a06c486d | 31 | |
dkester | 1:b44bd62c542f | 32 | cs = 0; |
dkester | 3:a3e1a06c486d | 33 | spi.write(0x05); |
dkester | 3:a3e1a06c486d | 34 | |
dkester | 3:a3e1a06c486d | 35 | if(spi.write(0x00) & 0x2){ |
dkester | 3:a3e1a06c486d | 36 | cs = 0; |
dkester | 3:a3e1a06c486d | 37 | return true; |
dkester | 3:a3e1a06c486d | 38 | } else { |
dkester | 3:a3e1a06c486d | 39 | cs = 0; |
dkester | 3:a3e1a06c486d | 40 | return 1; |
dkester | 3:a3e1a06c486d | 41 | } |
dkester | 3:a3e1a06c486d | 42 | } |
dkester | 3:a3e1a06c486d | 43 | |
dkester | 3:a3e1a06c486d | 44 | bool Storage::isBusy(){ |
dkester | 3:a3e1a06c486d | 45 | cs = 0; |
dkester | 3:a3e1a06c486d | 46 | spi.write(0x05); |
dkester | 3:a3e1a06c486d | 47 | |
dkester | 3:a3e1a06c486d | 48 | if(spi.write(0x00) & 0x1){ |
dkester | 3:a3e1a06c486d | 49 | cs = 0; |
dkester | 3:a3e1a06c486d | 50 | return true; |
dkester | 3:a3e1a06c486d | 51 | } else { |
dkester | 3:a3e1a06c486d | 52 | cs = 0; |
dkester | 3:a3e1a06c486d | 53 | return 1; |
dkester | 3:a3e1a06c486d | 54 | } |
dkester | 3:a3e1a06c486d | 55 | } |
dkester | 1:b44bd62c542f | 56 | |
dkester | 3:a3e1a06c486d | 57 | void Storage::pageProgram(int32_t addr){ |
dkester | 3:a3e1a06c486d | 58 | cs = 0; |
dkester | 3:a3e1a06c486d | 59 | spi.write(0x12); |
dkester | 3:a3e1a06c486d | 60 | |
dkester | 3:a3e1a06c486d | 61 | for(int i = 3; i >= 0; i--){ |
dkester | 3:a3e1a06c486d | 62 | spi.write((addr >> (8*i)) & 0xff); |
dkester | 3:a3e1a06c486d | 63 | } |
dkester | 3:a3e1a06c486d | 64 | } |
dkester | 3:a3e1a06c486d | 65 | |
dkester | 3:a3e1a06c486d | 66 | void Storage::writeData(int8_t data){ |
dkester | 3:a3e1a06c486d | 67 | spi.write(data); |
dkester | 3:a3e1a06c486d | 68 | } |
dkester | 3:a3e1a06c486d | 69 | |
dkester | 3:a3e1a06c486d | 70 | void Storage::read(int32_t addr){ |
dkester | 3:a3e1a06c486d | 71 | cs = 0; |
dkester | 3:a3e1a06c486d | 72 | |
dkester | 3:a3e1a06c486d | 73 | spi.write(0x13); |
dkester | 0:1c5088dae6e1 | 74 | |
dkester | 3:a3e1a06c486d | 75 | //char[4] bytes; |
dkester | 3:a3e1a06c486d | 76 | //bytes[0] = (addr >> 24) & 0xff; |
dkester | 3:a3e1a06c486d | 77 | //bytes[1] = (addr >> 16) & 0xff; |
dkester | 3:a3e1a06c486d | 78 | //bytes[2] = (addr >> 8) & 0xff; |
dkester | 3:a3e1a06c486d | 79 | //bytes[3] = addr & 0xff; |
dkester | 3:a3e1a06c486d | 80 | |
dkester | 3:a3e1a06c486d | 81 | for(int i = 3; i < 0; i--){ |
dkester | 3:a3e1a06c486d | 82 | spi.write((addr >> (8*i)) & 0xff); |
dkester | 3:a3e1a06c486d | 83 | } |
dkester | 3:a3e1a06c486d | 84 | } |
dkester | 3:a3e1a06c486d | 85 | |
dkester | 3:a3e1a06c486d | 86 | int8_t Storage::readData(){ |
dkester | 3:a3e1a06c486d | 87 | return spi.write(0x00); |
dkester | 3:a3e1a06c486d | 88 | } |
dkester | 3:a3e1a06c486d | 89 | |
dkester | 3:a3e1a06c486d | 90 | |
dkester | 3:a3e1a06c486d | 91 |