1 | void getCalibDataBME680()
|
2 | {
|
3 | int32_t calib[41];
|
4 |
|
5 | for(int i = -1; i < 25; i++){ // Kalibrierkoeffizienten ab 0x89
|
6 | calib[i] = readBME680(CALIB_ADDRESS_1_BME680 + i);
|
7 | }
|
8 | for(int i = -1; i < 16; i++){ // Kalibrierkoeffizienten ab 0xE1
|
9 | calib[25 + i] = readBME680(CALIB_ADDRESS_2_BME680 + i);
|
10 | }
|
11 |
|
12 | // write temperature compensation parameters
|
13 | par_t1 = (uint16_t) (((uint16_t) calib[34] << 8) | calib[33]);
|
14 | par_t2 = ( int16_t) ((( int16_t) calib[2] << 8) | calib[1]);
|
15 | par_t3 = ( int8_t) (calib[3]);
|
16 |
|
17 | // write pressure compensation parameters
|
18 | par_p1 = (uint16_t) ((calib[6] << 8) | calib[5]);
|
19 | par_p2 = (int16_t) ((calib[8] << 8) | calib[7]);
|
20 | par_p3 = (int8_t) calib[9];
|
21 | par_p4 = (int16_t) ((calib[12] << 8) | calib[11]);
|
22 | par_p5 = (int16_t) ((calib[14] << 8) | calib[13]);
|
23 | par_p6 = (int8_t) (calib[16]);
|
24 | par_p7 = (int8_t) (calib[15]);
|
25 | par_p8 = (int16_t) ((calib[20] << 8) | calib[19]);
|
26 | par_p9 = (int16_t) ((calib[22] << 8) | calib[21]);
|
27 | par_p10 = (uint8_t) (calib[23]);
|
28 |
|
29 | // write humidity compensation parameters
|
30 | par_h1 = (uint16_t) (((uint16_t) calib[27] << 4) | (calib[26] & 0x0F));
|
31 | par_h2 = (uint16_t) (((uint16_t) calib[25] << 4) | (calib[26] >> 4));
|
32 | par_h3 = (int8_t) calib[28];
|
33 | par_h4 = (int8_t) calib[29];
|
34 | par_h5 = (int8_t) calib[30];
|
35 | par_h6 = (uint8_t) calib[31];
|
36 | par_h7 = (int8_t) calib[32];
|
37 |
|
38 | /* Gas heater related coefficients */
|
39 | par_gh1 = (int8_t) calib[37];
|
40 | par_gh2 = (int16_t) ((calib[36] << 8) | calib[35]);
|
41 | par_gh3 = (int8_t) calib[38];
|
42 | res_heat_range = (readBME680(RES_HEAT_RANGE_ADDRESS_BME680) & 0x30) / 16; // 0x02 minus ungenutzte bits
|
43 | res_heat_val = (int8_t) readBME680(RES_HEAT_VAL_ADDRESS_BME680); // 0x00 minus ungenutzte bits
|
44 | range_sw_err =((int8_t) readBME680(RANGE_SW_ERR_ADDRESS_BME680) & 0xf0) / 16; // 0x04 minus ungenutzte bits
|
45 | }
|