112 uint8_t a_data_uint8_tr[QMP6988_CALIBRATION_DATA_LENGTH] = {0};
115 for (
len = 0;
len < QMP6988_CALIBRATION_DATA_LENGTH;
len += 1) {
118 ESP_LOGE(TAG,
"qmp6988 read calibration data (0xA0) error!");
124 (QMP6988_S32_t) (((a_data_uint8_tr[18] << SHIFT_LEFT_12_POSITION) |
125 (a_data_uint8_tr[19] << SHIFT_LEFT_4_POSITION) | (a_data_uint8_tr[24] & 0x0f))
130 (QMP6988_S16_t) (((a_data_uint8_tr[20]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[21]);
132 (QMP6988_S16_t) (((a_data_uint8_tr[22]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[23]);
135 (QMP6988_S32_t) (((a_data_uint8_tr[0] << SHIFT_LEFT_12_POSITION) | (a_data_uint8_tr[1] << SHIFT_LEFT_4_POSITION) |
136 ((a_data_uint8_tr[24] & 0xf0) >> SHIFT_RIGHT_4_POSITION))
141 (QMP6988_S16_t) (((a_data_uint8_tr[2]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[3]);
143 (QMP6988_S16_t) (((a_data_uint8_tr[4]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[5]);
145 (QMP6988_S16_t) (((a_data_uint8_tr[6]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[7]);
147 (QMP6988_S16_t) (((a_data_uint8_tr[8]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[9]);
149 (QMP6988_S16_t) (((a_data_uint8_tr[10]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[11]);
151 (QMP6988_S16_t) (((a_data_uint8_tr[12]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[13]);
153 (QMP6988_S16_t) (((a_data_uint8_tr[14]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[15]);
155 (QMP6988_S16_t) (((a_data_uint8_tr[16]) << SHIFT_LEFT_8_POSITION) | a_data_uint8_tr[17]);
157 ESP_LOGV(TAG,
"<-----------calibration data-------------->\r\n");
158 ESP_LOGV(TAG,
"COE_a0[%d] COE_a1[%d] COE_a2[%d] COE_b00[%d]\r\n",
qmp6988_data_.qmp6988_cali.COE_a0,
160 ESP_LOGV(TAG,
"COE_bt1[%d] COE_bt2[%d] COE_bp1[%d] COE_b11[%d]\r\n",
qmp6988_data_.qmp6988_cali.COE_bt1,
162 ESP_LOGV(TAG,
"COE_bp2[%d] COE_b12[%d] COE_b21[%d] COE_bp3[%d]\r\n",
qmp6988_data_.qmp6988_cali.COE_bp2,
164 ESP_LOGV(TAG,
"<-----------calibration data-------------->\r\n");
180 ESP_LOGV(TAG,
"<----------- int calibration data -------------->\r\n");
187 ESP_LOGV(TAG,
"<----------- int calibration data -------------->\r\n");
206 QMP6988_S64_t wk1, wk2, wk3;
209 wk1 = ((QMP6988_S64_t) ik->bt1 * (QMP6988_S64_t) tx);
210 wk2 = ((QMP6988_S64_t) ik->bp1 * (QMP6988_S64_t) dp) >> 5;
212 wk2 = ((QMP6988_S64_t) ik->bt2 * (QMP6988_S64_t) tx) >> 1;
213 wk2 = (wk2 * (QMP6988_S64_t) tx) >> 8;
215 wk2 = ((QMP6988_S64_t) ik->b11 * (QMP6988_S64_t) tx) >> 4;
216 wk2 = (wk2 * (QMP6988_S64_t) dp) >> 1;
218 wk2 = ((QMP6988_S64_t) ik->bp2 * (QMP6988_S64_t) dp) >> 13;
219 wk2 = (wk2 * (QMP6988_S64_t) dp) >> 1;
222 wk2 = ((QMP6988_S64_t) ik->b12 * (QMP6988_S64_t) tx);
223 wk2 = (wk2 * (QMP6988_S64_t) tx) >> 22;
224 wk2 = (wk2 * (QMP6988_S64_t) dp) >> 1;
226 wk2 = ((QMP6988_S64_t) ik->b21 * (QMP6988_S64_t) tx) >> 6;
227 wk2 = (wk2 * (QMP6988_S64_t) dp) >> 23;
228 wk2 = (wk2 * (QMP6988_S64_t) dp) >> 1;
230 wk2 = ((QMP6988_S64_t) ik->bp3 * (QMP6988_S64_t) dp) >> 12;
231 wk2 = (wk2 * (QMP6988_S64_t) dp) >> 23;
232 wk2 = (wk2 * (QMP6988_S64_t) dp);
239 ret = (QMP6988_S32_t) wk1;
323 QMP6988_U32_t p_read, t_read;
324 QMP6988_S32_t p_raw, t_raw;
325 uint8_t a_data_uint8_tr[6] = {0};
326 QMP6988_S32_t t_int, p_int;
330 err = this->
read_register(QMP6988_PRESSURE_MSB_REG, a_data_uint8_tr, 6);
332 ESP_LOGE(TAG,
"Error reading raw pressure/temp values");
335 p_read = (QMP6988_U32_t) ((((QMP6988_U32_t) (a_data_uint8_tr[0])) << SHIFT_LEFT_16_POSITION) |
336 (((QMP6988_U16_t) (a_data_uint8_tr[1])) << SHIFT_LEFT_8_POSITION) | (a_data_uint8_tr[2]));
337 p_raw = (QMP6988_S32_t) (p_read - SUBTRACTOR);
339 t_read = (QMP6988_U32_t) ((((QMP6988_U32_t) (a_data_uint8_tr[3])) << SHIFT_LEFT_16_POSITION) |
340 (((QMP6988_U16_t) (a_data_uint8_tr[4])) << SHIFT_LEFT_8_POSITION) | (a_data_uint8_tr[5]));
341 t_raw = (QMP6988_S32_t) (t_read - SUBTRACTOR);