private async Task Begin() { Debug.WriteLine("BME280::Begin"); byte[] WriteBuffer = new byte[] { (byte)eRegisters.BME280_REGISTER_CHIPID }; byte[] ReadBuffer = new byte[] { 0xFF }; // Check the device signature bme280.WriteRead(WriteBuffer, ReadBuffer); Debug.WriteLine("BME280 Signature: " + ReadBuffer[0].ToString()); if (ReadBuffer[0] != BME280_Signature) { Debug.WriteLine("BME280::begin Signature MISMATCH!!!!!!!!!!!!!!!!!"); return; } Init = true; // read the coefficients table CalibrationData = await ReadCoefficeints(); // Write control register await WriteControlRegister(0x3F); // write humidity control register await WriteControlRegisterHumidity(0x03); }
private async Task <BME280_CalibrationData> ReadCoefficeints() { // 16 bit calibration data is stored as Little Endian, the helper method will do the byte swap. CalibrationData = new BME280_CalibrationData(); // Read temperature calibration data CalibrationData.dig_T1 = ReadUInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_T1); CalibrationData.dig_T2 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_T2); CalibrationData.dig_T3 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_T3); // Read presure calibration data CalibrationData.dig_P1 = ReadUInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P1); CalibrationData.dig_P2 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P2); CalibrationData.dig_P3 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P3); CalibrationData.dig_P4 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P4); CalibrationData.dig_P5 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P5); CalibrationData.dig_P6 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P6); CalibrationData.dig_P7 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P7); CalibrationData.dig_P8 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P8); CalibrationData.dig_P9 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P9); // Read humidity calibration data CalibrationData.dig_H1 = ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H1); CalibrationData.dig_H2 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_H2); CalibrationData.dig_H3 = ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H3); CalibrationData.dig_H4 = (Int16)((ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H4) << 4) | (ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H4 + 1) & 0xF)); CalibrationData.dig_H5 = (Int16)((ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H5 + 1) << 4) | (ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H5) >> 4)); CalibrationData.dig_H6 = ReadSByte((byte)eRegisters.BME280_REGISTER_DIG_H6); //T1: 28376 //T2: 26237 //T3: 50 //P1: 36893 //P2: -10856 //P3: 3024 //P4: 8448 //P5: 135 //P6: -7 //P7: 9900 //P8: -10230 //P9: 4285 //H1: 75 //H2: 346 //H3: 0 //H4: 357 //H5: 0 //H6: 30 await Task.Delay(1); return(CalibrationData); }
private async Task<BME280_CalibrationData> ReadCoefficeints() { // 16 bit calibration data is stored as Little Endian, the helper method will do the byte swap. CalibrationData = new BME280_CalibrationData(); // Read temperature calibration data CalibrationData.dig_T1 = ReadUInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_T1); CalibrationData.dig_T2 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_T2); CalibrationData.dig_T3 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_T3); // Read presure calibration data CalibrationData.dig_P1 = ReadUInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P1); CalibrationData.dig_P2 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P2); CalibrationData.dig_P3 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P3); CalibrationData.dig_P4 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P4); CalibrationData.dig_P5 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P5); CalibrationData.dig_P6 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P6); CalibrationData.dig_P7 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P7); CalibrationData.dig_P8 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P8); CalibrationData.dig_P9 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_P9); // Read humidity calibration data CalibrationData.dig_H1 = ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H1); CalibrationData.dig_H2 = ReadInt16_LittleEndian((byte)eRegisters.BME280_REGISTER_DIG_H2); CalibrationData.dig_H3 = ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H3); CalibrationData.dig_H4 = (Int16)((ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H4) << 4) | (ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H4 + 1) & 0xF)); CalibrationData.dig_H5 = (Int16)((ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H5 + 1) << 4) | (ReadByte((byte)eRegisters.BME280_REGISTER_DIG_H5) >> 4)); CalibrationData.dig_H6 = ReadSByte((byte)eRegisters.BME280_REGISTER_DIG_H6); //T1: 28376 //T2: 26237 //T3: 50 //P1: 36893 //P2: -10856 //P3: 3024 //P4: 8448 //P5: 135 //P6: -7 //P7: 9900 //P8: -10230 //P9: 4285 //H1: 75 //H2: 346 //H3: 0 //H4: 357 //H5: 0 //H6: 30 await Task.Delay(1); return CalibrationData; }
private async Task Begin() { Debug.WriteLine("BME280::Begin"); byte[] WriteBuffer = new byte[] { (byte) eRegisters.BME280_REGISTER_CHIPID}; byte[] ReadBuffer = new byte[] { 0xFF }; // Check the device signature bme280.WriteRead(WriteBuffer, ReadBuffer); Debug.WriteLine("BME280 Signature: " + ReadBuffer[0].ToString()); if (ReadBuffer[0] != BME280_Signature) { Debug.WriteLine("BME280::begin Signature MISMATCH!!!!!!!!!!!!!!!!!"); return; } Init = true; // read the coefficients table CalibrationData = await ReadCoefficeints(); // Write control register await WriteControlRegister(0x3F); // write humidity control register await WriteControlRegisterHumidity(0x03); }