STMicroelectronics LPS331AP, LPS25H SPI Library. This library is base on https://developer.mbed.org/users/nyamfg/code/LPS331_I2C/

Dependents:   LPS331_SPI_Test main_SPC

Fork of LPS331_I2C by NYA Manufacturing

Revision:
4:af2153bce185
Parent:
3:5a56dd5131bb
Child:
5:760a5e23dc62
--- a/LPS331_SPI.cpp	Thu Jul 28 09:28:02 2016 +0000
+++ b/LPS331_SPI.cpp	Thu Jul 28 09:49:24 2016 +0000
@@ -10,14 +10,11 @@
 
 #include "LPS331_SPI.h"
 
-LPS331_SPI::LPS331_SPI(PinName sda, PinName scl, bool sa0) : _i2c(sda, scl)
+LPS331_SPI::LPS331_SPI(PinName mosi, PinName miso, PinName sclk, PinName cs_pin):_spi(mosi, miso, sclk), _cs(cs_pin)
 {
-    if(sa0 == LPS331_SPI_SA0_HIGH) {
-        _address = LPS331_SPI_ADDRESS_SA0_HIGH;
-    } else {
-        _address = LPS331_SPI_ADDRESS_SA0_LOW;
-    }
-    _i2c.frequency(400 * 1000);
+    _spi.format(8,0);
+    _spi.frequency(1000000);
+
     _ctrlreg1 = 0x20;
 }
 
@@ -95,43 +92,32 @@
 
 void LPS331_SPI::_write(char subaddress, char data)
 {
-    _i2c.start();
-    _i2c.write(_address);
-    _i2c.write(subaddress);
-    _i2c.write(data);
-    _i2c.stop();
+    _cs = 0;
+    _spi.write(subaddress);
+    _spi.write(data);
+    _cs = 1;
 }
 
 char LPS331_SPI::_read(char subaddress)
 {
     char result = 0;
     
-    _i2c.start();
-    _i2c.write(_address);
-    _i2c.write(subaddress);
-    
-    _i2c.start();
-    _i2c.write(_address | 1);
-    result = _i2c.read(0);
-    
-    _i2c.stop();
-    
+    _cs = 0;
+    _spi.write(subaddress | 0x80);
+    result = _spi.write(0);
+    _cs = 1;
+
     return result;
 }
 
 void LPS331_SPI::_read_multibyte(char startsubaddress, char* data, char count)
 {
-    _i2c.start();
-    _i2c.write(_address);
-    _i2c.write(startsubaddress | 0x80);
-    
-    _i2c.start();
-    _i2c.write(_address | 1);
+    _cs = 0;
+    _spi.write(startsubaddress | 0x80 | 0x40);
 
     for(int i = 0; i < count; i++) {
-        data[i] = _i2c.read((i == count - 1) ? 0 : 1);
+        data[i] = _spi.write(0);
     }
-    
-    _i2c.stop();
+    _cs = 1;
+
 }
-