SPS30 library
Dependents: IZU2021_SPS30 Hybrid_IZU2021_MISSION_v2 Hybrid_IZU2021_MISSION
Diff: sps30.cpp
- Revision:
- 4:7558ddc3c7d6
- Parent:
- 2:549bee9a4cd0
- Child:
- 5:147de21156cf
--- a/sps30.cpp Tue Mar 05 07:04:37 2019 +0000 +++ b/sps30.cpp Wed Mar 06 02:22:52 2019 +0000 @@ -4,8 +4,8 @@ //----------------------------------------------------------------------------- // Constructor -sps30::sps30(PinName sda, PinName scl, int i2cFrequency) : _i2c(sda, scl) { - _i2c.frequency(i2cFrequency); +sps30::sps30(PinName sda, PinName scl, int i2c_frequency) : _i2c(sda, scl) { + _i2c.frequency(i2c_frequency); } //----------------------------------------------------------------------------- @@ -18,14 +18,14 @@ // start auto-measurement // -uint8_t sps30::startMeasurement() +uint8_t sps30::StartMeasurement() { - i2cBuff[0] = SPS30_CMMD_STRT_MEAS >> 8; - i2cBuff[1] = SPS30_CMMD_STRT_MEAS & 255; - i2cBuff[2] = 0x03; - i2cBuff[3] = 0x00; - i2cBuff[4] = sps30::calcCrc2b(0x0300); - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 5, false); + i2cbuff[0] = SPS30_CMMD_STRT_MEAS >> 8; + i2cbuff[1] = SPS30_CMMD_STRT_MEAS & 255; + i2cbuff[2] = SPS30_STRT_MEAS_WRITE_DATA >> 8; + i2cbuff[3] = SPS30_STRT_MEAS_WRITE_DATA & 255; + i2cbuff[4] = sps30::CalcCrc2b(SPS30_STRT_MEAS_WRITE_DATA); + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 5, false); if(res) return SPSnoAckERROR; return SPSnoERROR; } @@ -33,11 +33,11 @@ //----------------------------------------------------------------------------- // Stop auto-measurement -uint8_t sps30::stopMeasurement() +uint8_t sps30::StopMeasurement() { - i2cBuff[0] = SPS30_CMMD_STOP_MEAS >> 8; - i2cBuff[1] = SPS30_CMMD_STOP_MEAS & 255; - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 2, false); + i2cbuff[0] = SPS30_CMMD_STOP_MEAS >> 8; + i2cbuff[1] = SPS30_CMMD_STOP_MEAS & 255; + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 2, false); if(res) return SPSnoAckERROR; return SPSnoERROR; } @@ -45,17 +45,17 @@ //----------------------------------------------------------------------------- // Get ready status value -uint8_t sps30::getReadyStatus() +uint8_t sps30::GetReadyStatus() { - i2cBuff[0] = SPS30_CMMD_GET_READY_STAT >> 8; - i2cBuff[1] = SPS30_CMMD_GET_READY_STAT & 255; - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 2, false); + i2cbuff[0] = SPS30_CMMD_GET_READY_STAT >> 8; + i2cbuff[1] = SPS30_CMMD_GET_READY_STAT & 255; + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 2, false); if(res) return SPSnoAckERROR; - _i2c.read(SPS30_I2C_ADDR | 1, i2cBuff, 3, false); - uint16_t stat = (i2cBuff[0] << 8) | i2cBuff[1]; + _i2c.read(SPS30_I2C_ADDR | 1, i2cbuff, 3, false); + uint16_t stat = (i2cbuff[0] << 8) | i2cbuff[1]; ready = stat; - uint8_t dat = sps30::checkCrc2b(stat, i2cBuff[2]); + uint8_t dat = sps30::CheckCrc2b(stat, i2cbuff[2]); if(dat == SPScrcERROR) return SPScrcERROR; if(dat == SPSisReady) return SPSisReady; @@ -65,128 +65,128 @@ //----------------------------------------------------------------------------- // Get all the measurement values, stick them into the array -uint8_t sps30::readMeasurement() +uint8_t sps30::ReadMeasurement() { - i2cBuff[0] = SPS30_CMMD_READ_MEAS >> 8; - i2cBuff[1] = SPS30_CMMD_READ_MEAS & 255; - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 2, false); + i2cbuff[0] = SPS30_CMMD_READ_MEAS >> 8; + i2cbuff[1] = SPS30_CMMD_READ_MEAS & 255; + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 2, false); if(res) return SPSnoAckERROR; - _i2c.read(SPS30_I2C_ADDR | 1, i2cBuff, 60, false); + _i2c.read(SPS30_I2C_ADDR | 1, i2cbuff, 60, false); - uint16_t stat = (i2cBuff[0] << 8) | i2cBuff[1]; + uint16_t stat = (i2cbuff[0] << 8) | i2cbuff[1]; mass_1p0_m = stat; - uint8_t dat = sps30::checkCrc2b(stat, i2cBuff[2]); + uint8_t dat = sps30::CheckCrc2b(stat, i2cbuff[2]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[3] << 8) | i2cBuff[4]; + stat = (i2cbuff[3] << 8) | i2cbuff[4]; mass_1p0_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[5]); + dat = sps30::CheckCrc2b(stat, i2cbuff[5]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[6] << 8) | i2cBuff[7]; + stat = (i2cbuff[6] << 8) | i2cbuff[7]; mass_2p5_m = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[8]); + dat = sps30::CheckCrc2b(stat, i2cbuff[8]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[9] << 8) | i2cBuff[10]; + stat = (i2cbuff[9] << 8) | i2cbuff[10]; mass_2p5_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[11]); + dat = sps30::CheckCrc2b(stat, i2cbuff[11]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[12] << 8) | i2cBuff[13]; + stat = (i2cbuff[12] << 8) | i2cbuff[13]; mass_4p0_m = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[14]); + dat = sps30::CheckCrc2b(stat, i2cbuff[14]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[15] << 8) | i2cBuff[16]; + stat = (i2cbuff[15] << 8) | i2cbuff[16]; mass_4p0_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[17]); + dat = sps30::CheckCrc2b(stat, i2cbuff[17]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[18] << 8) | i2cBuff[19]; + stat = (i2cbuff[18] << 8) | i2cbuff[19]; mass_10p0_m = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[20]); + dat = sps30::CheckCrc2b(stat, i2cbuff[20]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[21] << 8) | i2cBuff[22]; + stat = (i2cbuff[21] << 8) | i2cbuff[22]; mass_10p0_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[23]); + dat = sps30::CheckCrc2b(stat, i2cbuff[23]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[24] << 8) | i2cBuff[25]; + stat = (i2cbuff[24] << 8) | i2cbuff[25]; num_0p5_m = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[26]); + dat = sps30::CheckCrc2b(stat, i2cbuff[26]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[27] << 8) | i2cBuff[28]; + stat = (i2cbuff[27] << 8) | i2cbuff[28]; num_0p5_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[29]); + dat = sps30::CheckCrc2b(stat, i2cbuff[29]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[30] << 8) | i2cBuff[31]; + stat = (i2cbuff[30] << 8) | i2cbuff[31]; num_1p0_m = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[32]); + dat = sps30::CheckCrc2b(stat, i2cbuff[32]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[33] << 8) | i2cBuff[34]; + stat = (i2cbuff[33] << 8) | i2cbuff[34]; num_1p0_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[35]); + dat = sps30::CheckCrc2b(stat, i2cbuff[35]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[36] << 8) | i2cBuff[37]; + stat = (i2cbuff[36] << 8) | i2cbuff[37]; num_2p5_m = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[38]); + dat = sps30::CheckCrc2b(stat, i2cbuff[38]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[39] << 8) | i2cBuff[40]; + stat = (i2cbuff[39] << 8) | i2cbuff[40]; num_2p5_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[41]); + dat = sps30::CheckCrc2b(stat, i2cbuff[41]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[42] << 8) | i2cBuff[43]; + stat = (i2cbuff[42] << 8) | i2cbuff[43]; num_4p0_m = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[44]); + dat = sps30::CheckCrc2b(stat, i2cbuff[44]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[45] << 8) | i2cBuff[46]; + stat = (i2cbuff[45] << 8) | i2cbuff[46]; num_4p0_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[47]); + dat = sps30::CheckCrc2b(stat, i2cbuff[47]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[48] << 8) | i2cBuff[49]; + stat = (i2cbuff[48] << 8) | i2cbuff[49]; num_10p0_m = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[50]); + dat = sps30::CheckCrc2b(stat, i2cbuff[50]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[51] << 8) | i2cBuff[52]; + stat = (i2cbuff[51] << 8) | i2cbuff[52]; num_10p0_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[53]); + dat = sps30::CheckCrc2b(stat, i2cbuff[53]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[54] << 8) | i2cBuff[55]; + stat = (i2cbuff[54] << 8) | i2cbuff[55]; typ_pm_size_m = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[56]); + dat = sps30::CheckCrc2b(stat, i2cbuff[56]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[57] << 8) | i2cBuff[58]; + stat = (i2cbuff[57] << 8) | i2cbuff[58]; typ_pm_size_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[59]); + dat = sps30::CheckCrc2b(stat, i2cbuff[59]); if(dat == SPScrcERROR) return SPScrcERROR; mass_1p0_i = (mass_1p0_m << 16) | mass_1p0_l; @@ -221,7 +221,7 @@ //----------------------------------------------------------------------------- // Calculate the CRC of a 2 byte value using the SPS30 CRC polynomial -uint8_t sps30::calcCrc2b(uint16_t seed) +uint8_t sps30::CalcCrc2b(uint16_t seed) { uint8_t bit; // bit mask uint8_t crc = SPS30_CRC_INIT; // calculated checksum @@ -248,34 +248,34 @@ //----------------------------------------------------------------------------- // Compare the CRC values -uint8_t sps30::checkCrc2b(uint16_t seed, uint8_t crcIn) +uint8_t sps30::CheckCrc2b(uint16_t seed, uint8_t crc_in) { - uint8_t crcCalc = sps30::calcCrc2b(seed); - if(crcCalc != crcIn) return SPScrcERROR; + uint8_t crc_calc = sps30::CalcCrc2b(seed); + if(crc_calc != crc_in) return SPScrcERROR; return SPSnoERROR; } //----------------------------------------------------------------------------- // Get article code -uint8_t sps30::getArticleCode() +uint8_t sps30::GetArticleCode() { - i2cBuff[0] = SPS30_CMMD_READ_ARTICLECODE >> 8; - i2cBuff[1] = SPS30_CMMD_READ_ARTICLECODE & 255; - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 2, false); + i2cbuff[0] = SPS30_CMMD_READ_ARTICLECODE >> 8; + i2cbuff[1] = SPS30_CMMD_READ_ARTICLECODE & 255; + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 2, false); if(res) return SPSnoAckERROR; int i = 0; for(i = 0; i < sizeof(acode); i++) acode[i] = 0; - for(i = 0; i < sizeof(i2cBuff); i++) i2cBuff[i] = 0; + for(i = 0; i < sizeof(i2cbuff); i++) i2cbuff[i] = 0; - _i2c.read(SPS30_I2C_ADDR | 1, i2cBuff, SPS30_ACODE_SIZE, false); + _i2c.read(SPS30_I2C_ADDR | 1, i2cbuff, SPS30_ACODE_SIZE, false); int t = 0; for(i = 0; i < SPS30_ACODE_SIZE; i +=3) { - uint16_t stat = (i2cBuff[i] << 8) | i2cBuff[i + 1]; + uint16_t stat = (i2cbuff[i] << 8) | i2cbuff[i + 1]; acode[i - t] = stat >> 8; acode[i - t + 1] = stat & 255; - uint8_t dat = sps30::checkCrc2b(stat, i2cBuff[i + 2]); + uint8_t dat = sps30::CheckCrc2b(stat, i2cbuff[i + 2]); t++; if(dat == SPScrcERROR) return SPScrcERROR; if(stat == 0) break; @@ -287,24 +287,24 @@ //----------------------------------------------------------------------------- // Get sps30 serial number -uint8_t sps30::getSerialNumber() +uint8_t sps30::GetSerialNumber() { - i2cBuff[0] = SPS30_CMMD_READ_SERIALNBR >> 8; - i2cBuff[1] = SPS30_CMMD_READ_SERIALNBR & 255; - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 2, false); + i2cbuff[0] = SPS30_CMMD_READ_SERIALNBR >> 8; + i2cbuff[1] = SPS30_CMMD_READ_SERIALNBR & 255; + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 2, false); if(res) return SPSnoAckERROR; int i = 0; for(i = 0; i < sizeof(sn); i++) sn[i] = 0; - for(i = 0; i < sizeof(i2cBuff); i++) i2cBuff[i] = 0; + for(i = 0; i < sizeof(i2cbuff); i++) i2cbuff[i] = 0; - _i2c.read(SPS30_I2C_ADDR | 1, i2cBuff, SPS30_SN_SIZE, false); + _i2c.read(SPS30_I2C_ADDR | 1, i2cbuff, SPS30_SN_SIZE, false); int t = 0; for(i = 0; i < SPS30_SN_SIZE; i +=3) { - uint16_t stat = (i2cBuff[i] << 8) | i2cBuff[i + 1]; + uint16_t stat = (i2cbuff[i] << 8) | i2cbuff[i + 1]; sn[i - t] = stat >> 8; sn[i - t + 1] = stat & 255; - uint8_t dat = sps30::checkCrc2b(stat, i2cBuff[i + 2]); + uint8_t dat = sps30::CheckCrc2b(stat, i2cbuff[i + 2]); t++; if(dat == SPScrcERROR) return SPScrcERROR; if(stat == 0) break; @@ -316,24 +316,24 @@ //----------------------------------------------------------------------------- // Read Auto Cleaning Interval on the SPS30 -uint8_t sps30::readAutoCleanInterval() +uint8_t sps30::ReadAutoCleanInterval() { - i2cBuff[0] = SPS30_CMMD_AUTO_CLEAN_INTV >> 8; - i2cBuff[1] = SPS30_CMMD_AUTO_CLEAN_INTV & 255; + i2cbuff[0] = SPS30_CMMD_AUTO_CLEAN_INTV >> 8; + i2cbuff[1] = SPS30_CMMD_AUTO_CLEAN_INTV & 255; - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 2, false); + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 2, false); if(res) return SPSnoAckERROR; - _i2c.read(SPS30_I2C_ADDR | 1, i2cBuff, 6, false); + _i2c.read(SPS30_I2C_ADDR | 1, i2cbuff, 6, false); - uint16_t stat = (i2cBuff[0] << 8) | i2cBuff[1]; + uint16_t stat = (i2cbuff[0] << 8) | i2cbuff[1]; clean_interval_m = stat; - uint8_t dat = sps30::checkCrc2b(stat, i2cBuff[2]); + uint8_t dat = sps30::CheckCrc2b(stat, i2cbuff[2]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[3] << 8) | i2cBuff[4]; + stat = (i2cbuff[3] << 8) | i2cbuff[4]; clean_interval_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[5]); + dat = sps30::CheckCrc2b(stat, i2cbuff[5]); if(dat == SPScrcERROR) return SPScrcERROR; clean_interval_i = (clean_interval_m << 16) | clean_interval_l; @@ -344,35 +344,35 @@ //----------------------------------------------------------------------------- // Set Auto Cleaning Interval on the SPS30 -uint8_t sps30::setAutoCleanInterval(uint32_t set_interval) +uint8_t sps30::SetAutoCleanInterval(uint32_t set_interval) { uint16_t set_interval_m = set_interval >> 16; uint16_t set_interval_l = set_interval & 65535; - i2cBuff[0] = SPS30_CMMD_AUTO_CLEAN_INTV >> 8; - i2cBuff[1] = SPS30_CMMD_AUTO_CLEAN_INTV & 255; + i2cbuff[0] = SPS30_CMMD_AUTO_CLEAN_INTV >> 8; + i2cbuff[1] = SPS30_CMMD_AUTO_CLEAN_INTV & 255; - i2cBuff[2] = set_interval_m >> 8; - i2cBuff[3] = set_interval_m & 255; - i2cBuff[4] = sps30::calcCrc2b(set_interval_m); + i2cbuff[2] = set_interval_m >> 8; + i2cbuff[3] = set_interval_m & 255; + i2cbuff[4] = sps30::CalcCrc2b(set_interval_m); - i2cBuff[5] = set_interval_l >> 8; - i2cBuff[6] = set_interval_l & 255; - i2cBuff[7] = sps30::calcCrc2b(set_interval_l); + i2cbuff[5] = set_interval_l >> 8; + i2cbuff[6] = set_interval_l & 255; + i2cbuff[7] = sps30::CalcCrc2b(set_interval_l); - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 8, false); + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 8, false); if(res) return SPSnoAckERROR; - _i2c.read(SPS30_I2C_ADDR | 1, i2cBuff, 6, false); + _i2c.read(SPS30_I2C_ADDR | 1, i2cbuff, 6, false); - uint16_t stat = (i2cBuff[0] << 8) | i2cBuff[1]; + uint16_t stat = (i2cbuff[0] << 8) | i2cbuff[1]; clean_interval_m = stat; - uint8_t dat = sps30::checkCrc2b(stat, i2cBuff[2]); + uint8_t dat = sps30::CheckCrc2b(stat, i2cbuff[2]); if(dat == SPScrcERROR) return SPScrcERROR; - stat = (i2cBuff[3] << 8) | i2cBuff[4]; + stat = (i2cbuff[3] << 8) | i2cbuff[4]; clean_interval_l = stat; - dat = sps30::checkCrc2b(stat, i2cBuff[5]); + dat = sps30::CheckCrc2b(stat, i2cbuff[5]); if(dat == SPScrcERROR) return SPScrcERROR; clean_interval_i = (clean_interval_m << 16) | clean_interval_l; @@ -383,11 +383,11 @@ //----------------------------------------------------------------------------- // Perform manual fan cleaning -uint8_t sps30::startFanClean() +uint8_t sps30::StartFanClean() { - i2cBuff[0] = SPS30_CMMD_START_FAN_CLEAN >> 8; - i2cBuff[1] = SPS30_CMMD_START_FAN_CLEAN & 255; - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 2, false); + i2cbuff[0] = SPS30_CMMD_START_FAN_CLEAN >> 8; + i2cbuff[1] = SPS30_CMMD_START_FAN_CLEAN & 255; + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 2, false); if(res) return SPSnoAckERROR; return SPSnoERROR; } @@ -395,11 +395,11 @@ //----------------------------------------------------------------------------- // Perform a soft reset on the SPS30 -uint8_t sps30::softReset() +uint8_t sps30::SoftReset() { - i2cBuff[0] = SPS30_CMMD_SOFT_RESET >> 8; - i2cBuff[1] = SPS30_CMMD_SOFT_RESET & 255; - int res = _i2c.write(SPS30_I2C_ADDR, i2cBuff, 2, false); + i2cbuff[0] = SPS30_CMMD_SOFT_RESET >> 8; + i2cbuff[1] = SPS30_CMMD_SOFT_RESET & 255; + int res = _i2c.write(SPS30_I2C_ADDR, i2cbuff, 2, false); if(res) return SPSnoAckERROR; return SPSnoERROR; } \ No newline at end of file