40HAL_StatusTypeDef
MPL3115A2_Init(I2C_HandleTypeDef *hi2c, uint16_t devAddress)
42 HAL_StatusTypeDef halStatus = HAL_OK;
43 uint8_t whoAmI = 0x00;
44 uint8_t standbyCmd = 0x00;
45 uint8_t configData[2];
51 halStatus = HAL_I2C_IsDeviceReady(
i2c,
devAddr, 5, 10);
52 if (halStatus != HAL_OK) {
55 }
while (halStatus != HAL_OK);
57 if (halStatus == HAL_OK) {
58 halStatus = HAL_I2C_Mem_Read(
i2c,
devAddr, MPL3115A2_WHOAMI,
59 I2C_MEMADD_SIZE_8BIT, &whoAmI, 1, 1000);
61 if (halStatus == HAL_OK && whoAmI != 0xC4) {
66 if (halStatus == HAL_OK) {
68 halStatus = HAL_I2C_Mem_Write(
i2c,
devAddr, MPL3115A2_CTRL_REG1,
69 I2C_MEMADD_SIZE_8BIT, &standbyCmd, 1, 100);
72 if (halStatus == HAL_OK) {
74 configData[0] = MPL3115A2_PT_DATA_CFG;
75 configData[1] = MPL3115A2_PT_DATA_CFG_TDEFE |
76 MPL3115A2_PT_DATA_CFG_PDEFE |
77 MPL3115A2_PT_DATA_CFG_DREM;
78 halStatus = HAL_I2C_Master_Transmit(
i2c,
devAddr, configData, 2,
82 if (halStatus == HAL_OK) {
84 configData[0] = MPL3115A2_CTRL_REG1;
85 configData[1] = MPL3115A2_CTRL_REG1_OS128 | MPL3115A2_CTRL_REG1_SBYB;
86 halStatus = HAL_I2C_Master_Transmit(
i2c,
devAddr, configData, 2,
101 HAL_StatusTypeDef halStatus = HAL_OK;
104 halStatus = HAL_I2C_Mem_Read(
i2c,
devAddr, MPL3115A2_REGISTER_STATUS,
105 I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY);
129 HAL_StatusTypeDef halStatus = HAL_OK;
131 halStatus = HAL_I2C_Mem_Read(
i2c,
devAddr, MPL3115A2_REGISTER_TEMP_MSB,
132 I2C_MEMADD_SIZE_8BIT, rawData, 2, HAL_MAX_DELAY);
134 if (halStatus == HAL_OK) {
136 tempRaw = (int16_t)((rawData[0] << 8) | rawData[1]);
137 *celsius = (float)tempRaw / 256.0f;
158 uint8_t pressureData[3];
159 uint32_t pressureQ18_2;
161 HAL_StatusTypeDef halStatus = HAL_OK;
164 MPL3115A2_REGISTER_PRESSURE_MSB, I2C_MEMADD_SIZE_8BIT,
165 pressureData, 3, HAL_MAX_DELAY);
167 if (halStatus == HAL_OK) {
172 pressureQ18_2 = ((uint32_t)pressureData[0] << 16) |
173 ((uint32_t)pressureData[1] << 8) |
174 (uint32_t)pressureData[2];
177 pressurePa = (float)pressureQ18_2 / 4.0f;
178 *pressure_inHg = pressurePa / 3386.389f;
180 *pressure_inHg = -99.99f;
void Error_Handler(void)
This function is executed in case of error occurrence.
void reset_I2C(void)
Recover and reinitialize the I2C1 bus.