Skip to content

Commit fb3a85e

Browse files
Fix bme280 example (#481)
Fix reading of dig_H5 and dig_H6 Fix reading of dig_H1 Fix order of reading of temp and pressure Fixes #480 Fixes #111 Fixes #442
1 parent 1ed4de5 commit fb3a85e

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

spi/bme280_spi/bme280_spi.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ static void read_registers(uint8_t reg, uint8_t *buf, uint16_t len) {
147147
void read_compensation_parameters() {
148148
uint8_t buffer[26];
149149

150-
read_registers(0x88, buffer, 24);
150+
read_registers(0x88, buffer, 26);
151151

152152
dig_T1 = buffer[0] | (buffer[1] << 8);
153153
dig_T2 = buffer[2] | (buffer[3] << 8);
@@ -163,15 +163,15 @@ void read_compensation_parameters() {
163163
dig_P8 = buffer[20] | (buffer[21] << 8);
164164
dig_P9 = buffer[22] | (buffer[23] << 8);
165165

166-
dig_H1 = buffer[25];
166+
dig_H1 = buffer[25]; // 0xA1
167167

168168
read_registers(0xE1, buffer, 8);
169169

170-
dig_H2 = buffer[0] | (buffer[1] << 8);
171-
dig_H3 = (int8_t) buffer[2];
172-
dig_H4 = buffer[3] << 4 | (buffer[4] & 0xf);
173-
dig_H5 = (buffer[5] >> 4) | (buffer[6] << 4);
174-
dig_H6 = (int8_t) buffer[7];
170+
dig_H2 = buffer[0] | (buffer[1] << 8); // 0xE1 | 0xE2
171+
dig_H3 = (int8_t) buffer[2]; // 0xE3
172+
dig_H4 = buffer[3] << 4 | (buffer[4] & 0xf); // 0xE4 | 0xE5[3:0]
173+
dig_H5 = (buffer[4] >> 4) | (buffer[5] << 4); // 0xE5[7:4] | 0xE6
174+
dig_H6 = (int8_t) buffer[6]; // 0xE7
175175
}
176176

177177
static void bme280_read_raw(int32_t *humidity, int32_t *pressure, int32_t *temperature) {
@@ -225,8 +225,8 @@ int main() {
225225

226226
// These are the raw numbers from the chip, so we need to run through the
227227
// compensations to get human understandable numbers
228-
pressure = compensate_pressure(pressure);
229228
temperature = compensate_temp(temperature);
229+
pressure = compensate_pressure(pressure);
230230
humidity = compensate_humidity(humidity);
231231

232232
printf("Humidity = %.2f%%\n", humidity / 1024.0);

0 commit comments

Comments
 (0)