在状态机中添加HY协议的解析

This commit is contained in:
起床就犯困 2025-02-08 17:22:35 +08:00
parent af04d91130
commit 3ea22514fd
18 changed files with 2497 additions and 41 deletions

View File

@ -40,6 +40,7 @@
"usart.h": "c",
"w25qxx.h": "c",
"w25q256.h": "c",
"gpio.h": "c"
"gpio.h": "c",
"bl_usart.h": "c"
}
}

View File

@ -59,6 +59,9 @@ void startInfo(void)
void start(void)
{
Init();
uartCommonInit();
task_Init();
startInfo();

View File

@ -7,6 +7,11 @@
#include "chargControlTypes.h"
#include "uart_dev.h"
/* 是否使能充电控制盒的HY协议 */
#define HY_ChargeControlBox_PROTOCOL_ENABLE
/* SL协议读取寄存器最大地址 */
@ -35,6 +40,14 @@
#define floatMagnification 10.0f
#ifdef HY_ChargeControlBox_PROTOCOL_ENABLE
#define maxDataLenHY 50
#endif
void uartCommonInit(void);
uint16_t checkModebusCrc(uint8_t *arr_buff, uint8_t len);

View File

@ -85,6 +85,7 @@ uint8_t getMosTemperState(void);
void setMosTemperState(uint8_t state);
BOOL getCheckImpedanceState(void);
void setCheckImpedanceState(void);
void resetCheckImpedanceState(void);
void setLastTime(timeInfo time);
timeInfo getLastTime(void);

File diff suppressed because it is too large Load Diff

View File

@ -281,7 +281,7 @@ void config_info_start(void)
// fTemp = 0.01f;
// saveLoopImpedance(&fTemp);
readLoopImpedance(&fTemp);
setLoopImpedance(fTemp);
// setLoopImpedance(fTemp);
// if (getLoopImpedance() < 0 || getLoopImpedance() > 0.3f) {
if (!setLoopImpedance(fTemp)) {
setLoopImpedance(0.01f);

View File

@ -1,5 +1,6 @@
#include "interruptSend.h"
#include "bl_usart.h"
#define RS485_MAX_PACK_DATA_LEN 256
@ -168,6 +169,14 @@ void setSendOverStateGw(void)
NVIC_SystemReset();
}
#ifdef HY_ChargeControlBox_PROTOCOL_ENABLE
/* HY复位指令 */
if (uart_send.sendDataGw->data[11] = 0x66
&& uart_send.sendDataGw->data[14] == 0xFF) {
NVIC_SystemReset();
}
#endif
uart_send.sendOverStateGw = TRUE;
uart_send.sendStateGw = FALSE;
uart_send.sendDataGw->dataState = FALSE;

View File

@ -4,6 +4,7 @@
#include "FM_GPIO.h"
#include "capture.h"
#include "bl_chargControl.h"
#include <math.h>
config_parameter g_cfgParameter = {0};
static otherParameter g_otherParameter = {0};
@ -127,6 +128,16 @@ void setCheckImpedanceState(void)
checkImpedanceState = TRUE;
}
/**
* @brief
* @param
* @retval
*
*/
void resetCheckImpedanceState(void)
{
checkImpedanceState = FALSE;
}
/**
* @brief
@ -498,6 +509,10 @@ BOOL setLoopImpedance(float loopImpedance)
if (loopImpedance < 0 || loopImpedance > 0.3f) {
return FALSE;
}
if (fpclassify(loopImpedance) == FP_NAN) {
return FALSE;
}
g_otherParameter.loopImpedance = loopImpedance;
return TRUE;

View File

@ -264,7 +264,8 @@ void Task_wdi(void)
// uart_interruptSend(g_gw485_uart2_handle, "hello world\n", sizeof("hello world\n"));
/* 每天复位一次复位前将电量信息写入flash中 */
static uint32_t temp = 60 * 60 * 24;
static uint32_t temp = 60 * 60 * 24;
// static uint32_t temp = 60 * 30;
if (!(--temp)) {
temp = 0;
float tempF;
@ -276,6 +277,8 @@ void Task_wdi(void)
time = getLastTime();
saveTime(&time);
// NVIC_SystemReset();
resetCheckImpedanceState();
temp = 60 * 60 * 24;
}
}

View File

@ -15,7 +15,8 @@ void FM_GPIO_Init(void)
*/
void POW_FF_PCON_Open(void)
{
HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_SET);
// HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_RESET);
}
/**
@ -25,7 +26,8 @@ void POW_FF_PCON_Open(void)
*/
void POW_FF_PCON_Close(void)
{
HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_RESET);
// HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin, GPIO_PIN_SET);
}
/**

View File

@ -134,11 +134,11 @@ const float32_t Proportion = 3.0 / 4095.0;
// 0.178709805, 0.3671073616, 0.3671073616, 0.178709805
// };
/* matlab生成的3阶滤波器系数,乘比例使和接近为1 */
const int firLen = 4;
const float32_t firLP[4] = {
0.163708486, 0.336291513, 0.336291513, 0.163708486
};
// /* matlab生成的3阶滤波器系数,乘比例使和接近为1 */
// const int firLen = 4;
// const float32_t firLP[4] = {
// 0.163708486, 0.336291513, 0.336291513, 0.163708486
// };
// void captureFirInit(void);

View File

@ -114,6 +114,9 @@ void HD_GPIO_Init(void)
HAL_GPIO_Init(EXCHG_PROT_GPIO_Port, &GPIO_InitStruct);
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}

View File

@ -111,6 +111,7 @@ void Error_Handler(void);
#define DEBUG_RX_GPIO_Port GPIOC
#define EXCHG_PROT_Pin GPIO_PIN_5
#define EXCHG_PROT_GPIO_Port GPIOB
#define EXCHG_PROT_EXTI_IRQn EXTI9_5_IRQn
#define RUN_LED_Pin GPIO_PIN_6
#define RUN_LED_GPIO_Port GPIOB
#define POW_FF_CON_Pin GPIO_PIN_7

View File

@ -56,6 +56,7 @@ void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
void DMA1_Channel1_IRQHandler(void);
void EXTI9_5_IRQHandler(void);
void TIM1_BRK_TIM15_IRQHandler(void);
void TIM1_UP_TIM16_IRQHandler(void);
void USART2_IRQHandler(void);

View File

@ -99,9 +99,11 @@ void MX_GPIO_Init(void)
HAL_GPIO_Init(EXCHG_PROT_GPIO_Port, &GPIO_InitStruct);
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}
/* USER CODE BEGIN 2 */

View File

@ -95,20 +95,20 @@ int main(void)
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
// MX_GPIO_Init();
// MX_DMA_Init();
// MX_ADC1_Init();
// MX_ADC2_Init();
// MX_TIM3_Init();
// MX_TIM6_Init();
// MX_UART4_Init();
// MX_USART2_UART_Init();
// MX_USART3_UART_Init();
// MX_TIM7_Init();
// MX_TIM16_Init();
// MX_TIM15_Init();
// MX_RTC_Init();
// MX_SPI1_Init();
// MX_GPIO_Init();
// MX_DMA_Init();
// MX_ADC1_Init();
// MX_ADC2_Init();
// MX_TIM3_Init();
// MX_TIM6_Init();
// MX_UART4_Init();
// MX_USART2_UART_Init();
// MX_USART3_UART_Init();
// MX_TIM7_Init();
// MX_TIM16_Init();
// MX_TIM15_Init();
// MX_RTC_Init();
// MX_SPI1_Init();
/* USER CODE BEGIN 2 */
// while (1) {

View File

@ -217,6 +217,20 @@ void DMA1_Channel1_IRQHandler(void)
/* USER CODE END DMA1_Channel1_IRQn 1 */
}
/**
* @brief This function handles EXTI line[9:5] interrupts.
*/
void EXTI9_5_IRQHandler(void)
{
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
/* USER CODE END EXTI9_5_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(EXCHG_PROT_Pin);
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
/* USER CODE END EXTI9_5_IRQn 1 */
}
/**
* @brief This function handles TIM1 break interrupt and TIM15 global interrupt.
*/

View File

@ -139,6 +139,7 @@ NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DMA1_Channel1_IRQn=true\:4\:0\:true\:false\:true\:false\:true\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.EXTI15_10_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.EXTI9_5_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@ -351,13 +352,14 @@ RCC.FCLKCortexFreq_Value=72000000
RCC.FDCANFreq_Value=72000000
RCC.FamilyName=M
RCC.HCLKFreq_Value=72000000
RCC.HSE_VALUE=8000000
RCC.HSI48_VALUE=48000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=72000000
RCC.I2C2Freq_Value=72000000
RCC.I2C3Freq_Value=72000000
RCC.I2SFreq_Value=72000000
RCC.IPParameters=ADC12Freq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CRSFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SFreq_Value,LPTIM1Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSourceVirtual,PWRFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
RCC.IPParameters=ADC12Freq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CRSFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SFreq_Value,LPTIM1Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSourceVirtual,PWRFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
RCC.LPTIM1Freq_Value=72000000
RCC.LPUART1Freq_Value=72000000
RCC.LSCOPinFreq_Value=32000