Low voltage digital temperature sensor
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Dependents: X_NUCLEO_IKS01A3 X_NUCLEO_IKS01A3 X_NUCLEO_IKS01A3
Diff: stts751_reg.c
- Revision:
- 1:5859badee052
- Parent:
- 0:128dae13c732
--- a/stts751_reg.c Wed Mar 06 10:18:41 2019 +0000 +++ b/stts751_reg.c Wed Jul 24 14:20:10 2019 +0000 @@ -63,12 +63,12 @@ * @retval interface status (MANDATORY: return 0 -> no Error) * */ -int32_t stts751_read_reg(stts751_ctx_t* ctx, uint8_t reg, uint8_t* data, - uint16_t len) +int32_t stts751_read_reg(stts751_ctx_t *ctx, uint8_t reg, uint8_t *data, + uint16_t len) { - int32_t ret; - ret = ctx->read_reg(ctx->handle, reg, data, len); - return ret; + int32_t ret; + ret = ctx->read_reg(ctx->handle, reg, data, len); + return ret; } /** @@ -81,12 +81,12 @@ * @retval interface status (MANDATORY: return 0 -> no Error) * */ -int32_t stts751_write_reg(stts751_ctx_t* ctx, uint8_t reg, uint8_t* data, - uint16_t len) +int32_t stts751_write_reg(stts751_ctx_t *ctx, uint8_t reg, uint8_t *data, + uint16_t len) { - int32_t ret; - ret = ctx->write_reg(ctx->handle, reg, data, len); - return ret; + int32_t ret; + ret = ctx->write_reg(ctx->handle, reg, data, len); + return ret; } /** @@ -104,7 +104,7 @@ float stts751_from_lsb_to_celsius(int16_t lsb) { - return ((float)lsb) / 256.0f; + return ((float)lsb) / 256.0f; } /** @@ -126,7 +126,7 @@ int16_t stts751_from_celsius_to_lsb(float celsius) { - return (int16_t)(celsius * 256.0f); + return (int16_t)(celsius * 256.0f); } /** @@ -152,31 +152,31 @@ */ int32_t stts751_temp_data_rate_set(stts751_ctx_t *ctx, stts751_odr_t val) { - stts751_configuration_t configuration; - stts751_conversion_rate_t conversion_rate; - uint8_t dummy_value = 0xAA; - int32_t ret; + stts751_configuration_t configuration; + stts751_conversion_rate_t conversion_rate; + uint8_t dummy_value = 0xAA; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_CONVERSION_RATE, - (uint8_t*)&conversion_rate, 1); - if (ret == 0) { - conversion_rate.conv = (uint8_t)val & 0x0FU; - ret = stts751_write_reg(ctx, STTS751_CONVERSION_RATE, - (uint8_t*)&conversion_rate, 1); - } - if (ret == 0) { - ret = stts751_read_reg(ctx, STTS751_CONFIGURATION, - (uint8_t*)&configuration, 1); - } - if (ret == 0) { - configuration.stop = ((uint8_t)val & 0x80U) >> 7; - ret = stts751_write_reg(ctx, STTS751_CONFIGURATION, - (uint8_t*)&configuration, 1); - } - if ((ret == 0) && (val == STTS751_TEMP_ODR_ONE_SHOT)) { - ret = stts751_write_reg(ctx, STTS751_ONE_SHOT, &dummy_value, 1); - } - return ret; + ret = stts751_read_reg(ctx, STTS751_CONVERSION_RATE, + (uint8_t *)&conversion_rate, 1); + if (ret == 0) { + conversion_rate.conv = (uint8_t)val & 0x0FU; + ret = stts751_write_reg(ctx, STTS751_CONVERSION_RATE, + (uint8_t *)&conversion_rate, 1); + } + if (ret == 0) { + ret = stts751_read_reg(ctx, STTS751_CONFIGURATION, + (uint8_t *)&configuration, 1); + } + if (ret == 0) { + configuration.stop = ((uint8_t)val & 0x80U) >> 7; + ret = stts751_write_reg(ctx, STTS751_CONFIGURATION, + (uint8_t *)&configuration, 1); + } + if ((ret == 0) && (val == STTS751_TEMP_ODR_ONE_SHOT)) { + ret = stts751_write_reg(ctx, STTS751_ONE_SHOT, &dummy_value, 1); + } + return ret; } /** @@ -189,58 +189,58 @@ */ int32_t stts751_temp_data_rate_get(stts751_ctx_t *ctx, stts751_odr_t *val) { - stts751_conversion_rate_t conversion_rate; - stts751_configuration_t configuration; - int32_t ret; + stts751_conversion_rate_t conversion_rate; + stts751_configuration_t configuration; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_CONVERSION_RATE, - (uint8_t*)&conversion_rate, 1); - if (ret == 0) { - ret = stts751_read_reg(ctx, STTS751_CONFIGURATION, - (uint8_t*)&configuration, 1); - } - switch ( (configuration.stop << 7) + conversion_rate.conv) { - case STTS751_TEMP_ODR_OFF: - *val = STTS751_TEMP_ODR_OFF; - break; - case STTS751_TEMP_ODR_ONE_SHOT: - *val = STTS751_TEMP_ODR_ONE_SHOT; - break; - case STTS751_TEMP_ODR_62mHz5: - *val = STTS751_TEMP_ODR_62mHz5; - break; - case STTS751_TEMP_ODR_125mHz: - *val = STTS751_TEMP_ODR_125mHz; - break; - case STTS751_TEMP_ODR_250mHz: - *val = STTS751_TEMP_ODR_250mHz; - break; - case STTS751_TEMP_ODR_500mHz: - *val = STTS751_TEMP_ODR_500mHz; - break; - case STTS751_TEMP_ODR_1Hz: - *val = STTS751_TEMP_ODR_1Hz; - break; - case STTS751_TEMP_ODR_2Hz: - *val = STTS751_TEMP_ODR_2Hz; - break; - case STTS751_TEMP_ODR_4Hz: - *val = STTS751_TEMP_ODR_4Hz; - break; - case STTS751_TEMP_ODR_8Hz: - *val = STTS751_TEMP_ODR_8Hz; - break; - case STTS751_TEMP_ODR_16Hz: - *val = STTS751_TEMP_ODR_16Hz; - break; - case STTS751_TEMP_ODR_32Hz: - *val = STTS751_TEMP_ODR_32Hz; - break; - default: - *val = STTS751_TEMP_ODR_OFF; - break; - } - return ret; + ret = stts751_read_reg(ctx, STTS751_CONVERSION_RATE, + (uint8_t *)&conversion_rate, 1); + if (ret == 0) { + ret = stts751_read_reg(ctx, STTS751_CONFIGURATION, + (uint8_t *)&configuration, 1); + } + switch ((configuration.stop << 7) + conversion_rate.conv) { + case STTS751_TEMP_ODR_OFF: + *val = STTS751_TEMP_ODR_OFF; + break; + case STTS751_TEMP_ODR_ONE_SHOT: + *val = STTS751_TEMP_ODR_ONE_SHOT; + break; + case STTS751_TEMP_ODR_62mHz5: + *val = STTS751_TEMP_ODR_62mHz5; + break; + case STTS751_TEMP_ODR_125mHz: + *val = STTS751_TEMP_ODR_125mHz; + break; + case STTS751_TEMP_ODR_250mHz: + *val = STTS751_TEMP_ODR_250mHz; + break; + case STTS751_TEMP_ODR_500mHz: + *val = STTS751_TEMP_ODR_500mHz; + break; + case STTS751_TEMP_ODR_1Hz: + *val = STTS751_TEMP_ODR_1Hz; + break; + case STTS751_TEMP_ODR_2Hz: + *val = STTS751_TEMP_ODR_2Hz; + break; + case STTS751_TEMP_ODR_4Hz: + *val = STTS751_TEMP_ODR_4Hz; + break; + case STTS751_TEMP_ODR_8Hz: + *val = STTS751_TEMP_ODR_8Hz; + break; + case STTS751_TEMP_ODR_16Hz: + *val = STTS751_TEMP_ODR_16Hz; + break; + case STTS751_TEMP_ODR_32Hz: + *val = STTS751_TEMP_ODR_32Hz; + break; + default: + *val = STTS751_TEMP_ODR_OFF; + break; + } + return ret; } /** @@ -253,15 +253,15 @@ */ int32_t stts751_resolution_set(stts751_ctx_t *ctx, stts751_tres_t val) { - stts751_configuration_t reg; - int32_t ret; + stts751_configuration_t reg; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_CONFIGURATION,(uint8_t*) ®, 1); - if (ret == 0) { - reg.tres = (uint8_t) val; - ret = stts751_write_reg(ctx, STTS751_CONFIGURATION,(uint8_t*) ®, 1); - } - return ret; + ret = stts751_read_reg(ctx, STTS751_CONFIGURATION, (uint8_t *) ®, 1); + if (ret == 0) { + reg.tres = (uint8_t) val; + ret = stts751_write_reg(ctx, STTS751_CONFIGURATION, (uint8_t *) ®, 1); + } + return ret; } /** @@ -274,29 +274,29 @@ */ int32_t stts751_resolution_get(stts751_ctx_t *ctx, stts751_tres_t *val) { - stts751_configuration_t reg; - int32_t ret; + stts751_configuration_t reg; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_CONFIGURATION,(uint8_t*) ®, 1); + ret = stts751_read_reg(ctx, STTS751_CONFIGURATION, (uint8_t *) ®, 1); - switch (reg.tres) { - case STTS751_9bit: - *val = STTS751_9bit; - break; - case STTS751_10bit: - *val = STTS751_10bit; - break; - case STTS751_11bit: - *val = STTS751_11bit; - break; - case STTS751_12bit: - *val = STTS751_12bit; - break; - default: - *val = STTS751_9bit; - break; - } - return ret; + switch (reg.tres) { + case STTS751_9bit: + *val = STTS751_9bit; + break; + case STTS751_10bit: + *val = STTS751_10bit; + break; + case STTS751_11bit: + *val = STTS751_11bit; + break; + case STTS751_12bit: + *val = STTS751_12bit; + break; + default: + *val = STTS751_9bit; + break; + } + return ret; } /** @@ -309,9 +309,9 @@ */ int32_t stts751_status_reg_get(stts751_ctx_t *ctx, stts751_status_t *val) { - int32_t ret; - ret = stts751_read_reg(ctx, STTS751_STATUS, (uint8_t*) val, 1); - return ret; + int32_t ret; + ret = stts751_read_reg(ctx, STTS751_STATUS, (uint8_t *) val, 1); + return ret; } /** @@ -324,13 +324,13 @@ */ int32_t stts751_flag_busy_get(stts751_ctx_t *ctx, uint8_t *val) { - stts751_status_t reg; - int32_t ret; + stts751_status_t reg; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_STATUS, (uint8_t*)®, 1); - *val = reg.busy; + ret = stts751_read_reg(ctx, STTS751_STATUS, (uint8_t *)®, 1); + *val = reg.busy; - return ret; + return ret; } /** @@ -356,20 +356,20 @@ */ int32_t stts751_temperature_raw_get(stts751_ctx_t *ctx, int16_t *buff) { - uint16_t temperature; - uint8_t temperature_low; - int32_t ret; + uint16_t temperature; + uint8_t temperature_low; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_HIGH, - (uint8_t*)&temperature, 1); - if (ret == 0) { - ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_LOW, - &temperature_low, 1); + ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_HIGH, + (uint8_t *)&temperature, 1); + if (ret == 0) { + ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_LOW, + &temperature_low, 1); - temperature = (temperature << 8) + temperature_low; - *buff = (int16_t)temperature; - } - return ret; + temperature = (temperature << 8) + temperature_low; + *buff = (int16_t)temperature; + } + return ret; } /** @@ -394,15 +394,15 @@ */ int32_t stts751_pin_event_route_set(stts751_ctx_t *ctx, uint8_t val) { - stts751_configuration_t reg; - int32_t ret; + stts751_configuration_t reg; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_CONFIGURATION,(uint8_t*)®, 1); - if (ret == 0) { - reg.mask1 = val; - ret = stts751_write_reg(ctx, STTS751_CONFIGURATION, (uint8_t*)®, 1); - } - return ret; + ret = stts751_read_reg(ctx, STTS751_CONFIGURATION, (uint8_t *)®, 1); + if (ret == 0) { + reg.mask1 = val; + ret = stts751_write_reg(ctx, STTS751_CONFIGURATION, (uint8_t *)®, 1); + } + return ret; } /** @@ -415,11 +415,11 @@ */ int32_t stts751_pin_event_route_get(stts751_ctx_t *ctx, uint8_t *val) { - stts751_configuration_t reg; - int32_t ret; - ret = stts751_read_reg(ctx, STTS751_CONFIGURATION, (uint8_t*)®, 1); - *val = reg.mask1; - return ret; + stts751_configuration_t reg; + int32_t ret; + ret = stts751_read_reg(ctx, STTS751_CONFIGURATION, (uint8_t *)®, 1); + *val = reg.mask1; + return ret; } /** @@ -446,20 +446,20 @@ int32_t stts751_high_temperature_threshold_set(stts751_ctx_t *ctx, int16_t buff) { - uint8_t *temperature_ptr; - int32_t ret; + uint8_t *temperature_ptr; + int32_t ret; - temperature_ptr = (uint8_t*)&buff; - ret = stts751_write_reg(ctx, STTS751_TEMPERATURE_HIGH_LIMIT_LOW, - (uint8_t*)temperature_ptr, 1); + temperature_ptr = (uint8_t *)&buff; + ret = stts751_write_reg(ctx, STTS751_TEMPERATURE_HIGH_LIMIT_LOW, + (uint8_t *)temperature_ptr, 1); - if (ret == 0) { - temperature_ptr++; - ret = stts751_write_reg(ctx, STTS751_TEMPERATURE_HIGH_LIMIT_HIGH, - (uint8_t*)temperature_ptr, 1); - } + if (ret == 0) { + temperature_ptr++; + ret = stts751_write_reg(ctx, STTS751_TEMPERATURE_HIGH_LIMIT_HIGH, + (uint8_t *)temperature_ptr, 1); + } - return ret; + return ret; } /** @@ -473,20 +473,20 @@ int32_t stts751_high_temperature_threshold_get(stts751_ctx_t *ctx, int16_t *buff) { - uint16_t temperature; - uint8_t temperature_low; - int32_t ret; + uint16_t temperature; + uint8_t temperature_low; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_HIGH_LIMIT_HIGH, - (uint8_t*)&temperature, 1); - if (ret == 0) { - ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_HIGH_LIMIT_LOW, - &temperature_low, 1); + ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_HIGH_LIMIT_HIGH, + (uint8_t *)&temperature, 1); + if (ret == 0) { + ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_HIGH_LIMIT_LOW, + &temperature_low, 1); - temperature = (temperature << 8) + temperature_low; - *buff = (int16_t)temperature; - } - return ret; + temperature = (temperature << 8) + temperature_low; + *buff = (int16_t)temperature; + } + return ret; } /** @@ -501,20 +501,20 @@ int16_t buff) { - uint8_t *temperature_ptr; - int32_t ret; + uint8_t *temperature_ptr; + int32_t ret; - temperature_ptr = (uint8_t*)&buff; - ret = stts751_write_reg(ctx, STTS751_TEMPERATURE_LOW_LIMIT_LOW, - (uint8_t*)temperature_ptr, 1); + temperature_ptr = (uint8_t *)&buff; + ret = stts751_write_reg(ctx, STTS751_TEMPERATURE_LOW_LIMIT_LOW, + (uint8_t *)temperature_ptr, 1); - if (ret == 0) { - temperature_ptr++; - ret = stts751_write_reg(ctx, STTS751_TEMPERATURE_LOW_LIMIT_HIGH, - (uint8_t*)temperature_ptr, 1); - } + if (ret == 0) { + temperature_ptr++; + ret = stts751_write_reg(ctx, STTS751_TEMPERATURE_LOW_LIMIT_HIGH, + (uint8_t *)temperature_ptr, 1); + } - return ret; + return ret; } /** @@ -528,21 +528,21 @@ int32_t stts751_low_temperature_threshold_get(stts751_ctx_t *ctx, int16_t *buff) { - uint16_t temperature; - uint8_t temperature_low; - int32_t ret; + uint16_t temperature; + uint8_t temperature_low; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_LOW_LIMIT_HIGH, - (uint8_t*)&temperature, 1); - if (ret == 0) { - ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_LOW_LIMIT_LOW, - &temperature_low, 1); + ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_LOW_LIMIT_HIGH, + (uint8_t *)&temperature, 1); + if (ret == 0) { + ret = stts751_read_reg(ctx, STTS751_TEMPERATURE_LOW_LIMIT_LOW, + &temperature_low, 1); - temperature = (temperature << 8) + temperature_low; - *buff = (int16_t)temperature; - } + temperature = (temperature << 8) + temperature_low; + *buff = (int16_t)temperature; + } - return ret; + return ret; } /** @@ -551,13 +551,13 @@ */ - /** - * @defgroup STTS751 over temperature alarm - * @brief This section groups all the functions that manage - * over temperature alarm functionality. - * @{ - * - */ +/** +* @defgroup STTS751 over temperature alarm +* @brief This section groups all the functions that manage +* over temperature alarm functionality. +* @{ +* +*/ /** * @brief Thermal Limit. 1 LSB = 1 degC (max 127 degC min -127 degC ).[set] @@ -569,9 +569,9 @@ */ int32_t stts751_ota_thermal_limit_set(stts751_ctx_t *ctx, int8_t val) { - int32_t ret; - ret = stts751_write_reg(ctx, STTS751_THERM_LIMIT, (uint8_t*)&val, 1); - return ret; + int32_t ret; + ret = stts751_write_reg(ctx, STTS751_THERM_LIMIT, (uint8_t *)&val, 1); + return ret; } /** @@ -584,10 +584,10 @@ */ int32_t stts751_ota_thermal_limit_get(stts751_ctx_t *ctx, int8_t *val) { - int32_t ret; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_THERM_LIMIT, (uint8_t*)val, 1); - return ret; + ret = stts751_read_reg(ctx, STTS751_THERM_LIMIT, (uint8_t *)val, 1); + return ret; } /** @@ -601,10 +601,10 @@ */ int32_t stts751_ota_thermal_hyst_set(stts751_ctx_t *ctx, int8_t val) { - int32_t ret; + int32_t ret; - ret = stts751_write_reg(ctx, STTS751_THERM_HYSTERESIS, (uint8_t*)&val, 1); - return ret; + ret = stts751_write_reg(ctx, STTS751_THERM_HYSTERESIS, (uint8_t *)&val, 1); + return ret; } /** @@ -618,10 +618,10 @@ */ int32_t stts751_ota_thermal_hyst_get(stts751_ctx_t *ctx, int8_t *val) { - int32_t ret; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_THERM_HYSTERESIS, (uint8_t*)val, 1); - return ret; + ret = stts751_read_reg(ctx, STTS751_THERM_HYSTERESIS, (uint8_t *)val, 1); + return ret; } /** @@ -647,15 +647,15 @@ */ int32_t stts751_smbus_timeout_set(stts751_ctx_t *ctx, uint8_t val) { - stts751_smbus_timeout_t reg; - int32_t ret; + stts751_smbus_timeout_t reg; + int32_t ret; - ret = stts751_read_reg(ctx, STTS751_SMBUS_TIMEOUT,(uint8_t*)®, 1); - if (ret == 0) { - reg.timeout = val; - ret = stts751_write_reg(ctx, STTS751_SMBUS_TIMEOUT, (uint8_t*)®, 1); - } - return ret; + ret = stts751_read_reg(ctx, STTS751_SMBUS_TIMEOUT, (uint8_t *)®, 1); + if (ret == 0) { + reg.timeout = val; + ret = stts751_write_reg(ctx, STTS751_SMBUS_TIMEOUT, (uint8_t *)®, 1); + } + return ret; } /** @@ -669,11 +669,11 @@ */ int32_t stts751_smbus_timeout_get(stts751_ctx_t *ctx, uint8_t *val) { - stts751_smbus_timeout_t reg; - int32_t ret; - ret = stts751_read_reg(ctx, STTS751_SMBUS_TIMEOUT, (uint8_t*)®, 1); - *val = reg.timeout; - return ret; + stts751_smbus_timeout_t reg; + int32_t ret; + ret = stts751_read_reg(ctx, STTS751_SMBUS_TIMEOUT, (uint8_t *)®, 1); + *val = reg.timeout; + return ret; } /** @@ -686,18 +686,18 @@ */ int32_t stts751_device_id_get(stts751_ctx_t *ctx, stts751_id_t *buff) { - int32_t ret; - ret = stts751_read_reg(ctx, STTS751_PRODUCT_ID, - (uint8_t*)&buff->product_id, 1); - if (ret == 0){ - ret = stts751_read_reg(ctx, STTS751_MANUFACTURER_ID, - (uint8_t*)&buff->manufacturer_id, 1); - } - if (ret == 0){ - ret = stts751_read_reg(ctx, STTS751_REVISION_ID, - (uint8_t*)&buff->revision_id, 1); - } - return ret; + int32_t ret; + ret = stts751_read_reg(ctx, STTS751_PRODUCT_ID, + (uint8_t *)&buff->product_id, 1); + if (ret == 0) { + ret = stts751_read_reg(ctx, STTS751_MANUFACTURER_ID, + (uint8_t *)&buff->manufacturer_id, 1); + } + if (ret == 0) { + ret = stts751_read_reg(ctx, STTS751_REVISION_ID, + (uint8_t *)&buff->revision_id, 1); + } + return ret; } /**