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
Diff: LPS331_SPI.cpp
- 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; + } -