#include "tmp117.h" #include "i2c.h" // 初始化温度传感器(连续转换模式,64次平均) HAL_StatusTypeDef TMP117_Init(void) { // 配置值:连续转换模式 + AVG=64 (0x00A0) uint8_t config_data[2] = {0x00, 0xA0}; // 高字节在前 return HAL_I2C_Mem_Write(&hi2c1, TMP117_ADDR << 1, TMP117_CONFIG_REG, I2C_MEMADD_SIZE_8BIT, config_data, 2, 100); } // 从寄存器读取双字节数据 HAL_StatusTypeDef TMP117_Read(uint8_t reg, uint8_t *buffer) { return HAL_I2C_Mem_Read(&hi2c1, TMP117_ADDR << 1, reg, I2C_MEMADD_SIZE_8BIT, buffer, 2, 100); } // 获取温度值(单位:℃) HAL_StatusTypeDef TMP117_Get_Temp(float *temp) { uint8_t raw_data[2] = {0}; int16_t temp_raw; if (HAL_OK == TMP117_Read(TMP117_TEMP_REG, raw_data)) { temp_raw = (raw_data[0] << 8) | raw_data[1]; *temp = temp_raw * 0.0078125f; } else { *temp = 0; return HAL_ERROR; } if(*temp <= -60) { *temp = -60; } if(*temp >= 150) { *temp = 150; } return HAL_OK; }