diff --git a/Core/Inc/stm32f4xx_it.h b/Core/Inc/stm32f4xx_it.h index 0c068a6..9b87611 100644 --- a/Core/Inc/stm32f4xx_it.h +++ b/Core/Inc/stm32f4xx_it.h @@ -56,6 +56,7 @@ void DMA1_Stream1_IRQHandler(void); void DMA1_Stream3_IRQHandler(void); void DMA1_Stream5_IRQHandler(void); void DMA1_Stream6_IRQHandler(void); +void ADC_IRQHandler(void); void CAN1_TX_IRQHandler(void); void CAN1_RX0_IRQHandler(void); void CAN1_RX1_IRQHandler(void); diff --git a/Core/Src/adc.c b/Core/Src/adc.c index 3f32d8e..5aa4c3a 100644 --- a/Core/Src/adc.c +++ b/Core/Src/adc.c @@ -106,6 +106,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + /* ADC1 interrupt Init */ + HAL_NVIC_SetPriority(ADC_IRQn, 5, 0); + HAL_NVIC_EnableIRQ(ADC_IRQn); /* USER CODE BEGIN ADC1_MspInit 1 */ /* USER CODE END ADC1_MspInit 1 */ @@ -135,6 +138,8 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|GPIO_PIN_1); + /* ADC1 interrupt Deinit */ + HAL_NVIC_DisableIRQ(ADC_IRQn); /* USER CODE BEGIN ADC1_MspDeInit 1 */ /* USER CODE END ADC1_MspDeInit 1 */ diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c index 8b7082f..907fbf8 100644 --- a/Core/Src/stm32f4xx_it.c +++ b/Core/Src/stm32f4xx_it.c @@ -55,6 +55,7 @@ /* USER CODE END 0 */ /* External variables --------------------------------------------------------*/ +extern ADC_HandleTypeDef hadc1; extern CAN_HandleTypeDef hcan1; extern TIM_HandleTypeDef htim1; extern TIM_HandleTypeDef htim6; @@ -230,6 +231,20 @@ void DMA1_Stream6_IRQHandler(void) } /** + * @brief This function handles ADC1, ADC2 and ADC3 global interrupts. + */ +void ADC_IRQHandler(void) +{ + /* USER CODE BEGIN ADC_IRQn 0 */ + + /* USER CODE END ADC_IRQn 0 */ + HAL_ADC_IRQHandler(&hadc1); + /* USER CODE BEGIN ADC_IRQn 1 */ + + /* USER CODE END ADC_IRQn 1 */ +} + +/** * @brief This function handles CAN1 TX interrupts. */ void CAN1_TX_IRQHandler(void) diff --git a/iflytop_canbus_protocol b/iflytop_canbus_protocol index cf98950..88e011b 160000 --- a/iflytop_canbus_protocol +++ b/iflytop_canbus_protocol @@ -1 +1 @@ -Subproject commit cf9895020ce2ad2ee628dd27ee4d74d633b832e6 +Subproject commit 88e011b8a9f9030c4fe382db667606e3a9871796 diff --git a/large_space_disinfection__power_control_board.ioc b/large_space_disinfection__power_control_board.ioc index cde5cfd..d1bba34 100644 --- a/large_space_disinfection__power_control_board.ioc +++ b/large_space_disinfection__power_control_board.ioc @@ -154,6 +154,7 @@ Mcu.UserConstants= Mcu.UserName=STM32F407VETx MxCube.Version=6.11.0 MxDb.Version=DB.6.0.110 +NVIC.ADC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.CAN1_RX0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.CAN1_RX1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true diff --git a/usrc/base/hardware.cpp b/usrc/base/hardware.cpp index afe31ae..0cd098a 100644 --- a/usrc/base/hardware.cpp +++ b/usrc/base/hardware.cpp @@ -2,7 +2,6 @@ #include "adc.h" #include "tim.h" - #include "zsdk/zcanreceiver/zcanreceiver.hpp" #define TAG "HARD" using namespace iflytop; @@ -114,6 +113,9 @@ bool Hardware::h2o2_sensor_is_online() { return true; } int32_t Hardware::h2o2_sensor_read_calibration_date(int32_t* year, int32_t* month, int32_t* day) { // + *year = 1; + *month = 2; + *day = 3; return 0; } int32_t Hardware::h2o2_sensor_read_sub_ic_errorcode() { // @@ -172,7 +174,6 @@ int32_t Hardware::h2o2_sensor_data(report_h2o2_data_t* readdata) { HPP272::hpp272_data_t sensordata; m_H2o2Sensor_HPP272.read_cache_sensor_data(&sensordata); - readdata->subid = 0; readdata->sensor_error = ecode != 0; readdata->h2o2 = sensordata.hydrogen_peroxide_volume / 10.0; readdata->humid = sensordata.relative_humidity / 10.0; @@ -191,11 +192,18 @@ int32_t Hardware::h2o2_sensor_data(report_h2o2_data_t* readdata) { void Hardware::onAdcCaptureThread() { while (1) { - osDelay(30); + // osDelay(30); m_Heater_electricCurrentAdc.updateAdcValToCache(); m_Heater_temperatureAdc.updateAdcValToCache(); - m_Blowser_electricCurrentAdc.updateAdcValToCache(); m_AirCompressor_electricCurrentAdc.updateAdcValToCache(); + m_Blowser_electricCurrentAdc.updateAdcValToCache(); + + + osDelay(1000); + int32_t adcv1 = m_Blowser_electricCurrentAdc.getCacheVal(); + int32_t adcv2 = m_AirCompressor_electricCurrentAdc.getCacheVal(); + int32_t adcv3 = m_Heater_electricCurrentAdc.getCacheVal(); + ZLOGI(TAG, "b:%d, a:%d, h:%d", adcv1, adcv2, adcv3); } } void Hardware::onH2O2CaptureThread() { diff --git a/usrc/base/hardware.hpp b/usrc/base/hardware.hpp index 6a389a6..487b5ec 100644 --- a/usrc/base/hardware.hpp +++ b/usrc/base/hardware.hpp @@ -59,7 +59,8 @@ class Hardware { void heater_ctrl_safe_valve(int32_t val) { m_Heater_safeCtrlGpio.write(val); } int32_t heater_read_electric_current() { int32_t adcv = m_Heater_electricCurrentAdc.getCacheVal(); - int32_t ma = (adcv / 4095.0 * 3.3 * 1000) / 150.0; + int32_t ma = (adcv * 0.00167 - 1.25) * 1000; + if (ma < 50) ma = 0; return ma; } int32_t heater_read_temperature_data() { @@ -72,8 +73,9 @@ class Hardware { void blower_ctrl(int32_t val) { m_Blowser_ctrlGpio.write(val); } void blower_ctrl_safe_valve(int32_t val) { m_Blowser_safeCtrlGpio.write(val); } int32_t blower_read_electric_current() { - int32_t adcv = m_Heater_electricCurrentAdc.getCacheVal(); - int32_t ma = (adcv / 4095.0 * 3.3 * 1000) / 150.0; + int32_t adcv = m_Blowser_electricCurrentAdc.getCacheVal(); + int32_t ma = (adcv * 0.00167 - 1.25) * 1000; + if (ma < 50) ma = 0; return ma; } @@ -81,7 +83,8 @@ class Hardware { void air_compressor_ctrl_safe_valve(int32_t val) { m_AirCompressor_safeCtrlGpio.write(val); } int32_t air_compressor_read_electric_current() { int32_t adcv = m_AirCompressor_electricCurrentAdc.getCacheVal(); - int32_t ma = (adcv / 4095.0 * 3.3 * 1000) / 150.0; + int32_t ma = (adcv * 0.00167 - 1.25) * 1000; + if (ma < 50) ma = 0; return ma; } diff --git a/usrc/project_configs.h b/usrc/project_configs.h index d822788..7677bbf 100644 --- a/usrc/project_configs.h +++ b/usrc/project_configs.h @@ -30,7 +30,7 @@ #define HEATER_CTRL_GPIO PC6 #define HEATER_SAFE_CTRL_GPIO PC7 -#define HEATER_ELECTRIC_CURRENT_ADC_CH ADC_CHANNEL_0 +#define HEATER_ELECTRIC_CURRENT_ADC_CH ADC_CHANNEL_2 #define HEATER_TEMPERATURE_ADC_CH ADC_CHANNEL_8 #define BLOWER_CTRL_GPIO PC4 @@ -39,7 +39,7 @@ #define AIRCOMPRESSOR_CTRL_GPIO PC2 #define AIRCOMPRESSOR_SAFE_CTRL_GPIO PC3 -#define AIRCOMPRESSOR_ELECTRIC_CURRENT_ADC_CH ADC_CHANNEL_2 +#define AIRCOMPRESSOR_ELECTRIC_CURRENT_ADC_CH ADC_CHANNEL_0 #define H2O2_SENSOR_TYPE_HPP272 // #define H2O2_SENSOR_TYPE_HMP110 diff --git a/zsdk b/zsdk index c88c14b..7ed0ffc 160000 --- a/zsdk +++ b/zsdk @@ -1 +1 @@ -Subproject commit c88c14bebbce81a3b6e0d461588e958eb0e839d3 +Subproject commit 7ed0ffcb69bad9aae8f74d98dcfdf076f04a872a