Код
struct bme280_calibration_param_t {
u16 dig_T1;/**<calibration T1 data*/
s16 dig_T2;/**<calibration T2 data*/
s16 dig_T3;/**<calibration T3 data*/
u16 dig_P1;/**<calibration P1 data*/
s16 dig_P2;/**<calibration P2 data*/
s16 dig_P3;/**<calibration P3 data*/
s16 dig_P4;/**<calibration P4 data*/
s16 dig_P5;/**<calibration P5 data*/
s16 dig_P6;/**<calibration P6 data*/
s16 dig_P7;/**<calibration P7 data*/
s16 dig_P8;/**<calibration P8 data*/
s16 dig_P9;/**<calibration P9 data*/
u8 dig_H1;/**<calibration H1 data*/
s16 dig_H2;/**<calibration H2 data*/
u8 dig_H3;/**<calibration H3 data*/
s16 dig_H4;/**<calibration H4 data*/
s16 dig_H5;/**<calibration H5 data*/
s8 dig_H6;/**<calibration H6 data*/
s32 t_fine;/**<calibration T_FINE data*/
};
struct bme280_t {
struct bme280_calibration_param_t cal_param;
/**< calibration parameters*/
u8 chip_id;/**< chip id of the sensor*/
u8 dev_addr;/**< device address of the sensor*/
u8 oversamp_temperature;/**< temperature over sampling*/
u8 oversamp_pressure;/**< pressure over sampling*/
u8 oversamp_humidity;/**< humidity over sampling*/
u8 ctrl_hum_reg;/**< status of control humidity register*/
u8 ctrl_meas_reg;/**< status of control measurement register*/
u8 config_reg;/**< status of configuration register*/
};
u16 dig_T1;/**<calibration T1 data*/
s16 dig_T2;/**<calibration T2 data*/
s16 dig_T3;/**<calibration T3 data*/
u16 dig_P1;/**<calibration P1 data*/
s16 dig_P2;/**<calibration P2 data*/
s16 dig_P3;/**<calibration P3 data*/
s16 dig_P4;/**<calibration P4 data*/
s16 dig_P5;/**<calibration P5 data*/
s16 dig_P6;/**<calibration P6 data*/
s16 dig_P7;/**<calibration P7 data*/
s16 dig_P8;/**<calibration P8 data*/
s16 dig_P9;/**<calibration P9 data*/
u8 dig_H1;/**<calibration H1 data*/
s16 dig_H2;/**<calibration H2 data*/
u8 dig_H3;/**<calibration H3 data*/
s16 dig_H4;/**<calibration H4 data*/
s16 dig_H5;/**<calibration H5 data*/
s8 dig_H6;/**<calibration H6 data*/
s32 t_fine;/**<calibration T_FINE data*/
};
struct bme280_t {
struct bme280_calibration_param_t cal_param;
/**< calibration parameters*/
u8 chip_id;/**< chip id of the sensor*/
u8 dev_addr;/**< device address of the sensor*/
u8 oversamp_temperature;/**< temperature over sampling*/
u8 oversamp_pressure;/**< pressure over sampling*/
u8 oversamp_humidity;/**< humidity over sampling*/
u8 ctrl_hum_reg;/**< status of control humidity register*/
u8 ctrl_meas_reg;/**< status of control measurement register*/
u8 config_reg;/**< status of configuration register*/
};
Далее определяю ссылку:
Код
static struct bme280_t *p_bme280; /**< pointer to BME280 */
В Main обращаюсь к структуре, заполняя ее поля:
Код
p_bme280->cal_param.dig_T1 = (u16)1;
p_bme280->cal_param.dig_T2 = (s16)2;
p_bme280->cal_param.dig_T3 = (s16)3;
p_bme280->cal_param.dig_P1 = (u16)4;
p_bme280->cal_param.dig_P2 = (s16)5;
p_bme280->cal_param.dig_P3 = (s16)6;
p_bme280->cal_param.dig_P4 = (s16)7;
p_bme280->cal_param.dig_P5 = (s16)8;
p_bme280->cal_param.dig_P6 = (s16)9;
p_bme280->cal_param.dig_P7 = (s16)10;
p_bme280->cal_param.dig_P8 = (s16)11;
p_bme280->cal_param.dig_P9 = (s16)12;
p_bme280->cal_param.dig_H1 = (s16)13;
p_bme280->cal_param.dig_H2 = (s16)14;
p_bme280->cal_param.dig_H3 = (s16)15;
p_bme280->cal_param.dig_T2 = (s16)2;
p_bme280->cal_param.dig_T3 = (s16)3;
p_bme280->cal_param.dig_P1 = (u16)4;
p_bme280->cal_param.dig_P2 = (s16)5;
p_bme280->cal_param.dig_P3 = (s16)6;
p_bme280->cal_param.dig_P4 = (s16)7;
p_bme280->cal_param.dig_P5 = (s16)8;
p_bme280->cal_param.dig_P6 = (s16)9;
p_bme280->cal_param.dig_P7 = (s16)10;
p_bme280->cal_param.dig_P8 = (s16)11;
p_bme280->cal_param.dig_P9 = (s16)12;
p_bme280->cal_param.dig_H1 = (s16)13;
p_bme280->cal_param.dig_H2 = (s16)14;
p_bme280->cal_param.dig_H3 = (s16)15;
В том же Main пытаюсь вывести значения:
Код
printf("\nT1:%x ",p_bme280->cal_param.dig_T1); //0x89 = 0x6C, 0x88 = 0x9E
printf("T2:%x ", p_bme280->cal_param.dig_T2); //0x8B = 0x64, 0x8A = 0xFD
printf("T3:%x ", p_bme280->cal_param.dig_T3); //0x8D = 0x00, 0x8C = 0x32
printf("P1:%x ", p_bme280->cal_param.dig_P1); //0x8F = 0x93, 0x8E = 0x43
printf("P2:%x ", p_bme280->cal_param.dig_P2); //0x91 = 0xD4, 0x90 = 0xED
printf("P3:%x ", p_bme280->cal_param.dig_P3); //0x93 = 0x0B, 0x92 = 0xD0
printf("P4:%x ", p_bme280->cal_param.dig_P4); //0x95 = 0x1D, 0x94 = 0x10
printf("P5:%x ", p_bme280->cal_param.dig_P5); //0x97 = 0xFF, 0x96 = 0xFC
printf("P6:%x ", p_bme280->cal_param.dig_P6); //0x99 = 0xFF, 0x98 = 0xF9
printf("P7:%x ", p_bme280->cal_param.dig_P7); //0x9B = 0x26, 0x9A = 0xAC
printf("P8:%x ", p_bme280->cal_param.dig_P8); //0x9D = 0xD8, 0x9C = 0x0A
printf("P9:%x ", p_bme280->cal_param.dig_P9); //0x9F = 0x10, 0x9E = 0xBD
printf("H1:%x ", p_bme280->cal_param.dig_H1); //0xA1 = 0x4B
printf("H2:%x ", p_bme280->cal_param.dig_H2); //0xE2 = 0x01, 0xE1 = 0x69
printf("H3:%x ", p_bme280->cal_param.dig_H3); //0xE3 = 0x00
printf("H4:%x ", p_bme280->cal_param.dig_H4); //0xE4 = 0x14, 0xE5[3..0] = 0x00
printf("H5:%x ", p_bme280->cal_param.dig_H5); //0xE6 = 0x00, 0xE5[7..4] = 0x00
printf("H6:%x\r", p_bme280->cal_param.dig_H6); //0xE7 = 0x1E 33 ?????
printf("T2:%x ", p_bme280->cal_param.dig_T2); //0x8B = 0x64, 0x8A = 0xFD
printf("T3:%x ", p_bme280->cal_param.dig_T3); //0x8D = 0x00, 0x8C = 0x32
printf("P1:%x ", p_bme280->cal_param.dig_P1); //0x8F = 0x93, 0x8E = 0x43
printf("P2:%x ", p_bme280->cal_param.dig_P2); //0x91 = 0xD4, 0x90 = 0xED
printf("P3:%x ", p_bme280->cal_param.dig_P3); //0x93 = 0x0B, 0x92 = 0xD0
printf("P4:%x ", p_bme280->cal_param.dig_P4); //0x95 = 0x1D, 0x94 = 0x10
printf("P5:%x ", p_bme280->cal_param.dig_P5); //0x97 = 0xFF, 0x96 = 0xFC
printf("P6:%x ", p_bme280->cal_param.dig_P6); //0x99 = 0xFF, 0x98 = 0xF9
printf("P7:%x ", p_bme280->cal_param.dig_P7); //0x9B = 0x26, 0x9A = 0xAC
printf("P8:%x ", p_bme280->cal_param.dig_P8); //0x9D = 0xD8, 0x9C = 0x0A
printf("P9:%x ", p_bme280->cal_param.dig_P9); //0x9F = 0x10, 0x9E = 0xBD
printf("H1:%x ", p_bme280->cal_param.dig_H1); //0xA1 = 0x4B
printf("H2:%x ", p_bme280->cal_param.dig_H2); //0xE2 = 0x01, 0xE1 = 0x69
printf("H3:%x ", p_bme280->cal_param.dig_H3); //0xE3 = 0x00
printf("H4:%x ", p_bme280->cal_param.dig_H4); //0xE4 = 0x14, 0xE5[3..0] = 0x00
printf("H5:%x ", p_bme280->cal_param.dig_H5); //0xE6 = 0x00, 0xE5[7..4] = 0x00
printf("H6:%x\r", p_bme280->cal_param.dig_H6); //0xE7 = 0x1E 33 ?????
Что здесь не так?