diff --git a/App/Inc/anemometer_dev.h b/App/Inc/anemometer_dev.h index 199644e..99c3cb3 100644 --- a/App/Inc/anemometer_dev.h +++ b/App/Inc/anemometer_dev.h @@ -35,9 +35,13 @@ #define DRIVE_FREQ_MHz ((float32_t)0.2) // 驱动方波个数 实际个数 DRIVE_NUM+1 - #define DRIVE_NUM 2 +// 温度探头版本,SHT30=1,TMP117=2 +#define SHT30_SENSOR 1 +#define TMP117_SENSOR 2 +#define TEMP_SENSOR TMP117_SENSOR + ///已将DISTANCE写入配置文件,在结构体g_stConfigInfo.transducer_distace中 // 传播距离 风速计算公式中的L参数 @@ -140,7 +144,7 @@ typedef struct _error_log{ uint16_t tof_error_WE:1; /* 接受东西信号(tofy,tofx<0)很小 */ uint16_t temp_error_SHT30:1; /* SHT30错误日志(温湿度) */ uint16_t temp_error_HP203B:1; /* HP203B错误日志(大气压) */ - uint16_t error_4:1; /* 保留 */ + uint16_t temp_error_TMP117:1; /* TMP117错误日志(温度) */ uint16_t error_5:1; /* 保留 */ uint16_t error_6:1; /* 保留 */ uint16_t error_7:1; /* 保留 */ diff --git a/App/Inc/frt_protocol.h b/App/Inc/frt_protocol.h index 1a539fe..a0f6a57 100644 --- a/App/Inc/frt_protocol.h +++ b/App/Inc/frt_protocol.h @@ -23,23 +23,23 @@ typedef enum typedef enum { FRT_REGISTER_MIN_WIND_DIRECTION = 0, /* С */ - FRT_REGISTER_THROUGH_WIND_DIRECTION = 1, /* С */ - FRT_REGISTER_AVERAGE_WIND_DIRECTION = 2, /* ƽ */ - FRT_REGISTER_INSTANTANEOUS_WIND_DIRECTION = 3, /* ˲ʱ */ - FRT_REGISTER_PEAK_WIND_DIRECTION = 4, /* */ - FRT_REGISTER_MAX_WIND_DIRECTION = 5, /* */ - FRT_REGISTER_MIN_WIND_SPEED = 6, /* С */ - FRT_REGISTER_THROUGH_WIND_SPEED = 7, /* С */ - FRT_REGISTER_AVERAGE_WIND_SPEED = 8, /* ƽ */ - FRT_REGISTER_INSTANTANEOUS_WIND_SPEED = 9, /* ˲ʱ */ - FRT_REGISTER_PEAK_WIND_SPEED = 10, /* */ - FRT_REGISTER_MAX_WIND_SPEED = 11, /* */ - FRT_REGISTER_TEMPERATURE = 12, /* ¶ */ - FRT_REGISTER_HUMIDITY = 13, /* ʪ */ - FRT_REGISTER_PRESSURE = 14, /* ѹ */ - FRT_REGISTER_RAIN = 15, /* */ - FRT_REGISTER_LIGHT_INTENSITY_HIGH = 16, /* ոλ */ - FRT_REGISTER_LIGHT_INTENSITY_LOW = 17, /* յλ */ + FRT_REGISTER_AVERAGE_WIND_DIRECTION = 1, /* ƽ */ + FRT_REGISTER_MAX_WIND_DIRECTION = 2, /* */ + FRT_REGISTER_MIN_WIND_SPEED = 3, /* С */ + FRT_REGISTER_AVERAGE_WIND_SPEED = 4, /* ƽ */ + FRT_REGISTER_MAX_WIND_SPEED = 5, /* */ + FRT_REGISTER_TEMPERATURE = 6, /* ¶ */ + FRT_REGISTER_HUMIDITY = 7, /* ʪ */ + FRT_REGISTER_PRESSURE = 8, /* ѹ */ + FRT_REGISTER_RAIN = 9, /* */ + FRT_REGISTER_PRECIPITATION_INTENSITY = 10, /* ܷ */ + FRT_REGISTER_UV_INTENSITY = 11, /* ǿ */ + FRT_REGISTER_THROUGH_WIND_DIRECTION = 12, /* С */ + FRT_REGISTER_INSTANTANEOUS_WIND_DIRECTION = 13, /* ˲ʱ */ + FRT_REGISTER_PEAK_WIND_DIRECTION = 14, /* */ + FRT_REGISTER_THROUGH_WIND_SPEED = 15, /* С */ + FRT_REGISTER_INSTANTANEOUS_WIND_SPEED = 16, /* ˲ʱ */ + FRT_REGISTER_PEAK_WIND_SPEED = 17, /* */ FRT_REGISTER_DEVICE_ADDR = 20, /* 豸ַ */ FRT_REGISTER_COMMU_BAUDRATE = 21, /* */ diff --git a/App/Src/anemometer_dev.c b/App/Src/anemometer_dev.c index cb63dd5..bc0ea98 100644 --- a/App/Src/anemometer_dev.c +++ b/App/Src/anemometer_dev.c @@ -6,6 +6,7 @@ #include "fdacoefs.h" #include "sht30.h" #include "hp203b.h" +#include "tmp117.h" #include "FIR.h" #include "LowPassFilter.h" #include "encrypt.h" @@ -460,6 +461,7 @@ char str[100]; //} +SlidingWindow_10min win_10min = {0}; void wind_task(void const * argument) { //软件加密校验 @@ -527,7 +529,6 @@ void wind_task(void const * argument) // 接受信号很小 if(tofx<0||tofy<0) { - tof_error_log_NS ++; // 放弃本次采样,可以有效筛选雨滴等导致的异常大的风速数据 // 但是持续的遮挡会导致风速数据保持不变。 // 连续10次采样有问题判定为有遮挡,置错误标志位,将声速与风速分量置0 @@ -540,6 +541,7 @@ void wind_task(void const * argument) } else { + tof_error_log_NS ++; continue; } // 手动设置渡越时间差为0,会在探头受遮挡的时候输出0,持续遮挡的时候也输出0,但是计算出声速将变得很大 @@ -594,7 +596,6 @@ void wind_task(void const * argument) // 如果测量的信号幅值过小。 if(tofx<0||tofy<0) { - tof_error_log_WE ++; // 放弃本次采样,可以有效筛选雨滴等导致的异常大的风速数据 // 但是持续的遮挡会导致风速数据保持不变。 // 连续10次采样有问题判定为有遮挡,置错误标志位,将声速与风速分量置0 @@ -607,6 +608,7 @@ void wind_task(void const * argument) } else { + tof_error_log_WE ++; continue; } // 手动设置渡越时间差为0,会在探头受遮挡的时候输出0,持续遮挡的时候也输出0,但是计算出声速将变得很大 @@ -663,6 +665,9 @@ void wind_task(void const * argument) { av_speed = 0; av_angle = 0; + //滑动平均值索引归零 + win_10min.count = 0; + win_10min.index = 0; } // 360一圈 if(av_speedy<0) @@ -844,7 +849,6 @@ void update_mcs_param(float new_wind_speed, float new_wind_dirction) } } -SlidingWindow_10min win_10min = {0}; SlidingWindow_3s win_3s = {0}; //求和函数 float sum(float arr[], int n) @@ -1060,36 +1064,78 @@ void my_update_mcs_param(float new_wind_speed, float new_wind_dirction) win_10min.index = (win_10min.index + 1) % g_usrConfigInfo.speed_average_time;//更新索引 } +//采集温度,湿度,大气压 +static void getTempHumiPress(void) +{ + //采集备用温度与大气压 + float backupTemperature1; + float backupTemperature2; + uint8_t hp203_ret = get_HP203_data(&backupTemperature1, &g_stMcs_Para.pressure); + uint8_t sht30_ret = get_temp_humi_data(&backupTemperature2, &g_stMcs_Para.humidity); +#if TEMP_SENSOR == SHT30_SENSOR + g_stMcs_Para.temperature = backupTemperature2; +#endif /*TEMP_SENSOR == SHT30_SENSOR*/ + +#if TEMP_SENSOR == TMP117_SENSOR + TMP117_Init(); + osDelay(20); + uint8_t tmp117_ret = TMP117_Get_Temp(&g_stMcs_Para.temperature); + +// TMP117出问题 + if(tmp117_ret != HAL_OK) + { + //置错误标志位 + g_error_log.temp_error_TMP117 = 1; + //使用备用温度 + g_stMcs_Para.temperature = backupTemperature1; + } + else + { + //恢复错误标志位 + g_error_log.temp_error_TMP117 = 0; + } +#endif /*TEMP_SENSOR == TMP117_SENSOR*/ + + // SHT30出问题 + if(sht30_ret == FALSE) + { + //置错误标志位 + g_error_log.temp_error_SHT30 = 1; + //错误处理 +#if TEMP_SENSOR == SHT30_SENSOR + g_stMcs_Para.temperature = backupTemperature1; +#endif /*TEMP_SENSOR == SHT30_SENSOR*/ + } + else + { + //恢复错误标志位 + g_error_log.temp_error_SHT30 = 0; + } + + //HP203B出问题 + if(hp203_ret == FALSE) + { + //置错误标志位 + g_error_log.temp_error_HP203B = 1; + //错误处理 + } + else + { + //恢复错误标志位 + g_error_log.temp_error_HP203B = 0; + } +} void tem_hum_update_task(void const * argument) { uint8_t tem_hun_check_flag = JudgeEncrypt(); uint16_t time_s_temp_humi = 0;//1秒计时,温湿度更新 - uint32_t time_s_1Day = 0;//1天的秒数 - - float backupTemperature; - uint8_t hp203_ret; - uint8_t sht30_ret; // 开机先采集一次大气压温湿度 if(tem_hun_check_flag) { - uint8_t hp203_ret = get_HP203_data(&backupTemperature, &g_stMcs_Para.pressure); - uint8_t sht30_ret = get_temp_humi_data(&g_stMcs_Para.temperature, &g_stMcs_Para.humidity); - } - -// 采集HP203B传感器数据(大气压) - if(hp203_ret == FALSE) - { - g_error_log.temp_error_HP203B = 1; -/// 错误处理 - } -// 采集SHT30传感器数据(温湿度) - if(sht30_ret == FALSE) - { - g_error_log.temp_error_SHT30 = 1; -/// 错误处理 - g_stMcs_Para.temperature = backupTemperature; + //采集温湿度与大气压 + getTempHumiPress(); } while(1) @@ -1097,44 +1143,13 @@ void tem_hum_update_task(void const * argument) osDelay(1000); if(!tem_hun_check_flag)continue; time_s_temp_humi ++; - time_s_1Day ++; // 温湿度大气压更新 if (time_s_temp_humi >= g_usrConfigInfo.temp_hum_update_time) { - hp203_ret = get_HP203_data(&backupTemperature, &g_stMcs_Para.pressure); - sht30_ret = get_temp_humi_data(&g_stMcs_Para.temperature, &g_stMcs_Para.humidity); -// 采集HP203B传感器数据(大气压) - if(hp203_ret == FALSE) - { - g_error_log.temp_error_HP203B = 1; -/// 错误处理 - } - else - { - // 没出问题清除错误日志 - g_error_log.temp_error_HP203B = 0; - } -// 采集SHT30传感器数据(温湿度) - if(sht30_ret == FALSE) - { - g_error_log.temp_error_SHT30 = 1; -/// 错误处理 - g_stMcs_Para.temperature = backupTemperature; - } - else - { - // 没出问题清除错误日志 - g_error_log.temp_error_SHT30 = 0; - } + getTempHumiPress(); // 计时重置 time_s_temp_humi = 0; } -// 一天重启 - if (time_s_1Day >= 86400) - { - __iar_builtin_set_FAULTMASK(1); - NVIC_SystemReset(); - } // 风速风向更新 my_update_mcs_param(weather_info.instantaneous_wind_speed, weather_info.instantaneous_wind_direction); } diff --git a/App/Src/frt_protocol.c b/App/Src/frt_protocol.c index 3bb2da3..46e4d76 100644 --- a/App/Src/frt_protocol.c +++ b/App/Src/frt_protocol.c @@ -238,7 +238,7 @@ static u_int16_t FRT_swap_endian_16(u_int16_t value) */ static u_int16_t FRT_ReadRegMinWindDiretion(void *pMsg) { - u_int16_t value = (u_int16_t)(g_stMcs_Para.min_wind_direction *10); + u_int16_t value = (u_int16_t)(g_stMcs_Para.min_wind_direction); return FRT_swap_endian_16(value); } @@ -249,7 +249,7 @@ static u_int16_t FRT_ReadRegMinWindDiretion(void *pMsg) */ static u_int16_t FRT_ReadRegThroughWindDiretion(void *pMsg) { - u_int16_t value = (u_int16_t)(g_stMcs_Para.trough_wind_direction *10); + u_int16_t value = (u_int16_t)(g_stMcs_Para.trough_wind_direction); return FRT_swap_endian_16(value); } @@ -260,7 +260,7 @@ static u_int16_t FRT_ReadRegThroughWindDiretion(void *pMsg) */ static u_int16_t FRT_ReadRegAverageWindDirection(void *pMsg) { - u_int16_t value = (u_int16_t)(g_stMcs_Para.average_wind_direction *10); + u_int16_t value = (u_int16_t)(g_stMcs_Para.average_wind_direction); return FRT_swap_endian_16(value); } @@ -271,7 +271,7 @@ static u_int16_t FRT_ReadRegAverageWindDirection(void *pMsg) */ static u_int16_t FRT_ReadRegInstantaneousWindDirection(void *pMsg) { - u_int16_t value = (u_int16_t)(g_stMcs_Para.instantaneous_wind_direction *10); + u_int16_t value = (u_int16_t)(g_stMcs_Para.instantaneous_wind_direction); return FRT_swap_endian_16(value); } @@ -282,7 +282,7 @@ static u_int16_t FRT_ReadRegInstantaneousWindDirection(void *pMsg) */ static u_int16_t FRT_ReadRegPeakWindDiretion(void *pMsg) { - u_int16_t value = (u_int16_t)(g_stMcs_Para.peak_wind_direction *10); + u_int16_t value = (u_int16_t)(g_stMcs_Para.peak_wind_direction); return FRT_swap_endian_16(value); } @@ -293,7 +293,7 @@ static u_int16_t FRT_ReadRegPeakWindDiretion(void *pMsg) */ static u_int16_t FRT_ReadRegMaxWindDirection(void *pMsg) { - u_int16_t value=(u_int16_t)(g_stMcs_Para.max_wind_direction *10); + u_int16_t value=(u_int16_t)(g_stMcs_Para.max_wind_direction); return FRT_swap_endian_16(value); } @@ -1357,8 +1357,9 @@ void FRT_MsgProc_ReadRegister(device_handle device, void *pMsg) u_int16_t reg_num= (data[4] << 8)| data[5]; if ( \ start_reg_addr < 0x00 ||\ - (start_reg_addr > FRT_REGISTER_LIGHT_INTENSITY_LOW && start_reg_addr < FRT_REGISTER_DEVICE_ADDR) ||\ - (start_reg_addr > FRT_REGISTER_RAIN_POWER_CONTROL && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\ +/* (start_reg_addr > FRT_REGISTER_PRESSURE && start_reg_addr < FRT_REGISTER_THROUGH_WIND_DIRECTION) ||\ */ + (start_reg_addr > FRT_REGISTER_PEAK_WIND_SPEED && start_reg_addr < FRT_REGISTER_DEVICE_ADDR) ||\ + (start_reg_addr > FRT_REGISTER_TEMPHUM_UPDATE_TIME && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\ start_reg_addr > FRT_REGISTER_ID_4 \ ) @@ -1369,8 +1370,9 @@ void FRT_MsgProc_ReadRegister(device_handle device, void *pMsg) if ( \ reg_num < 0x01 ||\ - (((reg_num + start_reg_addr - 1) > FRT_REGISTER_LIGHT_INTENSITY_LOW) && ((reg_num + start_reg_addr - 1) < FRT_REGISTER_DEVICE_ADDR)) ||\ - (((reg_num + start_reg_addr -1) > FRT_REGISTER_RAIN_POWER_CONTROL) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_TRANSDUCER_CFG_1R5)) ||\ +/* (((reg_num + start_reg_addr - 1) > FRT_REGISTER_PRESSURE) && ((reg_num + start_reg_addr - 1) < FRT_REGISTER_THROUGH_WIND_DIRECTION)) ||\ */ + (((reg_num + start_reg_addr - 1) > FRT_REGISTER_PEAK_WIND_SPEED) && ((reg_num + start_reg_addr - 1) < FRT_REGISTER_DEVICE_ADDR)) ||\ + (((reg_num + start_reg_addr -1) > FRT_REGISTER_TEMPHUM_UPDATE_TIME) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_TRANSDUCER_CFG_1R5)) ||\ ((reg_num + start_reg_addr -1) > FRT_REGISTER_ID_4) \ ) diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index 2d5d034..5f7b1c3 100644 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -32,6 +32,7 @@ void task_shell_term_main_loop(void const * argument); #include "frt_protocol.h" #include "inflash.h" #include "hp203b.h" +#include "tmp117.h" #include "encrypt.h" #include "rain.h" /* USER CODE END Includes */ @@ -190,6 +191,8 @@ void SensorTask(void const * argument) } /* USER CODE END Application */ + uint16_t time_s_1Hour = 0;//1Сʱ + uint8_t time_h_1Day = 0;//1Сʱ void LEDTask(void const * argument) { /* USER CODE BEGIN StartDefaultTask */ @@ -198,9 +201,22 @@ void LEDTask(void const * argument) for(;;) { osDelay(1000); + time_s_1Hour ++; if(LED_Check_flag) - {getLightRainData(); + { HAL_GPIO_TogglePin(GPIOC,GPIO_LED_CTRL_Pin); + // һ + if (time_s_1Hour >= 3600) + { + time_s_1Hour = 0; + time_h_1Day++; + } + if (time_h_1Day >= 24) + { + time_h_1Day = 0; + __iar_builtin_set_FAULTMASK(1); + NVIC_SystemReset(); + } } } /* USER CODE END StartDefaultTask */ diff --git a/Core/Src/main.c b/Core/Src/main.c index af5dab1..ef0f807 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -43,6 +43,7 @@ #include "uart_dev.h" #include "sht30.h" #include "hp203b.h" +#include "tmp117.h" #include "inflash.h" /* USER CODE END Includes */ @@ -173,6 +174,7 @@ void Flash_EnableReadProtection(void) term_printf("Version 1.0.0 Build: %s %s\r\n",__DATE__,__TIME__); HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED); sht30_init(); + TMP117_Init(); /* USER CODE END 2 */ /* Call init function for freertos objects (in cmsis_os2.c) */ diff --git a/Drivers/Filter/LowPassFilter.c b/Drivers/Filter/LowPassFilter.c index 49c4da5..50a3052 100644 --- a/Drivers/Filter/LowPassFilter.c +++ b/Drivers/Filter/LowPassFilter.c @@ -10,14 +10,44 @@ void initLowPassFilter(SL_LowPassFilter* filter, float alpha) filter->alpha = alpha; // ʼһεֵΪ0 filter->previous = 0.0f; + + filter->x = 0; + filter->times = 0; } // ˲ֵ float updateFilter(SL_LowPassFilter* filter, float new_input) { - // ˲ֵ - float output = (1.0f - filter->alpha) * filter->previous + filter->alpha * new_input; + // ˲ֵ + float filtedData = (1.0f - filter->alpha) * filter->previous + filter->alpha * new_input; + +// //ֵһֵΪ⣬ݶ4 +// if((filter->x) - filtedData > 4 || (filtedData) - filter->x > 4 ) +// { +//// ֵ +// (filter->x) = filtedData; +//// ʹһεȷֵ +// filtedData = filter->previous; +//// ռ +// filter->times = 0; +// }else +// { +//// ֵΧ +//// ֵһʱΪû +// if(filter->times < 3) +// { +// filter->times++; +//// û,ʹþֵ +// filtedData = filter->previous; +// } +// else +// { +//// ֱֵʹ˲ֵ +// (filter->x) = filtedData; +// } +// } + // һεֵ - filter->previous = output; - return output; + filter->previous = filtedData; + return filtedData; } \ No newline at end of file diff --git a/Drivers/Filter/LowPassFilter.h b/Drivers/Filter/LowPassFilter.h index 53fa63b..00d2d91 100644 --- a/Drivers/Filter/LowPassFilter.h +++ b/Drivers/Filter/LowPassFilter.h @@ -9,6 +9,8 @@ typedef struct { float alpha; // ˲ϵ float previous; // һεֵ + float x; // һεֵ + uint8_t times; // } SL_LowPassFilter; extern SL_LowPassFilter low_pass_filter_x; diff --git a/Drivers/HP203B/hp203b.c b/Drivers/HP203B/hp203b.c index d1ccb2f..aa8649b 100644 --- a/Drivers/HP203B/hp203b.c +++ b/Drivers/HP203B/hp203b.c @@ -84,6 +84,18 @@ BOOL Hp203bReadTempture(float *press) return TRUE; } +static float calculateAverage(float arr[], int avgLength) { + float sum = 0; + + // 飨10Ԫأռֱֵﵽָ + for (int i = 0; i < 10; ++i) { + sum += arr[i]; + } + + // ƽֵֵ + float average = sum / avgLength; + return average; +} /**************************** *ƣget_press_data *ܣȡѹ뱸¶ @@ -99,12 +111,12 @@ BOOL get_HP203_data(float* tempdata, float* press) uint8_t temp_falt = 0; uint8_t press_falt = 0; // ѹǿ - U_DataType collect_pressure[COLLECT_HB203_DATA_NUM]={0x00}; + float collect_pressure[COLLECT_HB203_DATA_NUM]={0x00}; for(int i=0; i 1200) + if(tmp_press > 1200) { // return FALSE; goto error_return; } // ¶ - U_DataType collect_tempture[COLLECT_HB203_DATA_NUM]={0x00}; + float collect_tempture[COLLECT_HB203_DATA_NUM]={0x00}; for(int i=0; i 95) + if(tmp_tempture > 95) { // return FALSE; goto error_return; } - *tempdata = tmp_tempture.fValue; - *press = tmp_press.fValue; + *tempdata = tmp_tempture; + *press = tmp_press; return TRUE; error_return: diff --git a/Drivers/Tmp117/tmp117.c b/Drivers/Tmp117/tmp117.c new file mode 100644 index 0000000..d033ba0 --- /dev/null +++ b/Drivers/Tmp117/tmp117.c @@ -0,0 +1,45 @@ +#include "tmp117.h" +#include "i2c.h" + + +// ʼ¶ȴ +HAL_StatusTypeDef TMP117_Init(void) +{ + // ֵ + uint8_t config_data[2] = {0x0C, 0x00}; // ֽǰ,ת1100 0000 000012.5ms + 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; +} + diff --git a/Drivers/Tmp117/tmp117.h b/Drivers/Tmp117/tmp117.h new file mode 100644 index 0000000..1db4136 --- /dev/null +++ b/Drivers/Tmp117/tmp117.h @@ -0,0 +1,27 @@ +#ifndef __TMP117_H_ +#define __TMP117_H_ + +#include "comm_types.h" +#include "main.h" + +#define TMP117_ADDR 0x48 //A0GND +//#define TMP117_ADDR 0x49 //A0V+ +//#define TMP117_ADDR 0x4A //A0SDA +//#define TMP117_ADDR 0x4B //A0SCL + +#define TMP117_TEMP_REG 0x00 //¶ȼĴ +#define TMP117_CONFIG_REG 0x01 //üĴ +#define TMP117_TLOW_REG 0x02 //¶ȸ߱Ĵ +#define TMP117_THIGH_REG 0x03 //¶ȵͱĴ + + + +HAL_StatusTypeDef TMP117_Init(void); +HAL_StatusTypeDef TMP117_Read(uint8_t reg, uint8_t *buffer); +HAL_StatusTypeDef TMP117_Get_Temp(float *temp); + +#endif //__TMP117_H_ + + + + diff --git a/EWARM/micro_climate.ewp b/EWARM/micro_climate.ewp index 478b05e..826ffe5 100644 --- a/EWARM/micro_climate.ewp +++ b/EWARM/micro_climate.ewp @@ -375,6 +375,7 @@ $PROJ_DIR$\..\App\Inc $PROJ_DIR$\..\Drivers\HP203B $PROJ_DIR$\..\Drivers\RainLight + $PROJ_DIR$\..\Drivers\Tmp117