From a3e7c2c26653d0c63417263ca5966f056892a0e7 Mon Sep 17 00:00:00 2001 From: kbracher <k.bracher@fasttube.de> Date: Fri, 17 May 2024 20:12:40 +0200 Subject: [PATCH] friday code dump --- Core/Inc/main.h | 2 ++ Core/Src/ADBMS_LL_Driver.c | 18 +++++++++++++-- Core/Src/AMS_CAN.c | 1 - Core/Src/AMS_HighLevel.c | 36 ++++-------------------------- Core/Src/main.c | 43 ++++++++++++++++++++++++++---------- Core/Src/stm32f3xx_hal_msp.c | 6 ++--- Makefile | 2 +- mvbms-test-24.ioc | 34 ++++++++++++++++------------ 8 files changed, 76 insertions(+), 66 deletions(-) diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 82e8d35..d02a49d 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -67,6 +67,8 @@ void Error_Handler(void); #define PWM_PG_FAN1_GPIO_Port GPIOA #define PWM_PG_FAN2_Pin GPIO_PIN_3 #define PWM_PG_FAN2_GPIO_Port GPIOA +#define CSB_Pin GPIO_PIN_4 +#define CSB_GPIO_Port GPIOA #define STATUS_LED_R_Pin GPIO_PIN_0 #define STATUS_LED_R_GPIO_Port GPIOB #define STATUS_LED_B_Pin GPIO_PIN_1 diff --git a/Core/Src/ADBMS_LL_Driver.c b/Core/Src/ADBMS_LL_Driver.c index e5c5417..16170cc 100644 --- a/Core/Src/ADBMS_LL_Driver.c +++ b/Core/Src/ADBMS_LL_Driver.c @@ -267,7 +267,21 @@ uint8 writeCMD(uint16 command, uint8* args, uint8 arglen) { return ret; } +#define ITER_COUNT 50 +static uint8_t count = 0; +static bool isOn = false; + uint8 readCMD(uint16 command, uint8* buffer, uint8 buflen) { + if (count == ITER_COUNT) { + HAL_GPIO_WritePin(STATUS_LED_B_GPIO_Port, STATUS_LED_B_Pin, isOn ? GPIO_PIN_SET : GPIO_PIN_RESET); + + count = 0; + isOn = !isOn; + } else { + count++; + } + + uint8 txbuffer[6 + buflen] = {}; uint8 rxbuffer[6 + buflen] = {}; @@ -314,11 +328,11 @@ uint8 pollCMD(uint16 command) { } void mcuAdbmsCSLow() { - //HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_RESET); } void mcuAdbmsCSHigh() { - //HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_SET); } uint8 mcuSPITransmit(uint8* buffer, uint8 buffersize) { diff --git a/Core/Src/AMS_CAN.c b/Core/Src/AMS_CAN.c index 52f0769..99ca38e 100644 --- a/Core/Src/AMS_CAN.c +++ b/Core/Src/AMS_CAN.c @@ -38,7 +38,6 @@ static bool isOn = false; void ams_can_send_status() { if (count == ITER_COUNT) { HAL_GPIO_WritePin(STATUS_LED_G_GPIO_Port, STATUS_LED_G_Pin, isOn ? GPIO_PIN_SET : GPIO_PIN_RESET); - HAL_GPIO_WritePin(STATUS_LED_B_GPIO_Port, STATUS_LED_B_Pin, isOn ? GPIO_PIN_SET : GPIO_PIN_RESET); count = 0; isOn = !isOn; diff --git a/Core/Src/AMS_HighLevel.c b/Core/Src/AMS_HighLevel.c index dc96ec2..8008693 100644 --- a/Core/Src/AMS_HighLevel.c +++ b/Core/Src/AMS_HighLevel.c @@ -35,7 +35,7 @@ uint16_t amsov = 0; uint8_t amserrorcode = 0; uint8_t amswarningcode = 0; -uint8_t numberofCells = 16; +uint8_t numberofCells = 14; uint8_t numberofAux = 0; uint8_t packetChecksumFails = 0; @@ -52,7 +52,7 @@ struct pollingTimes { uint32_t TMP1075; }; -struct pollingTimes pollingTimes = {0, 0, 0, 0}; +struct pollingTimes pollingTimes = {0, 0}; void AMS_Init(SPI_HandleTypeDef* hspi) { if (eepromconfigured == 1) { @@ -124,8 +124,8 @@ void AMS_Loop() { uint8_t AMS_Idle_Loop() { if (!amsWakeUp()) { - error_data.data_kind = SEK_INTERNAL_BMS_TIMEOUT; - set_error_source(ERROR_SOURCE_INTERNAL); + //error_data.data_kind = SEK_INTERNAL_BMS_TIMEOUT; + //set_error_source(ERROR_SOURCE_INTERNAL); } packetChecksumFails += amsAuxAndStatusMeasurement(&module); @@ -197,34 +197,6 @@ uint8_t AMS_Idle_Loop() { } mcuDelay(10); - - // static uint32_t channelstobalance = 1; - - // channelstobalance = 0x1FFFF; - /* if(channelstobalance & 0x20000){ - channelstobalance = 1; - }*/ - - // amsConfigBalancing(channelstobalance); - // amsStartBalancing(100); - - if ((module.overVoltage | module.underVoltage)) { - // amsSendWarning(); - // currentAMSState = AMSWARNING; - } - - // AMS_Balancing_Loop(); - - /* if(BalancingActive) - { - amsStartBalancing(100); - } - else - { - amsStopBalancing(); - }*/ - // amsConfigBalancing(balancedCells); - // volatile amscheck = amscheckOpenCellWire(&module); return 0; } diff --git a/Core/Src/main.c b/Core/Src/main.c index b48218d..4cd65ab 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -29,6 +29,7 @@ #include "eeprom.h" #include "errors.h" #include "stm32f3xx_hal.h" +#include "stm32f3xx_hal_gpio.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -118,6 +119,12 @@ int main(void) /* USER CODE BEGIN 2 */ tmp1075_init(&hi2c1); AMS_Init(&hspi1); + ams_can_init(&hcan); + + bool relay_actual = false; + bool relay_target = true; + + uint32_t target_time = HAL_GetTick() + 10000; /* USER CODE END 2 */ /* Infinite loop */ @@ -135,6 +142,13 @@ int main(void) ams_can_send_error(); } ams_can_send_log(); + + if (HAL_GetTick() >= target_time) { + HAL_GPIO_WritePin(RELAY_EN_GPIO_Port, RELAY_EN_Pin, relay_target ? GPIO_PIN_SET : GPIO_PIN_RESET); + HAL_GPIO_WritePin(STATUS_LED_R_GPIO_Port, STATUS_LED_R_Pin, relay_target ? GPIO_PIN_RESET : GPIO_PIN_SET); + target_time = HAL_GetTick() + 10000; + relay_target = !relay_target; + } } /* USER CODE END 3 */ } @@ -294,7 +308,7 @@ static void MX_SPI1_Init(void) hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; - hspi1.Init.NSS = SPI_NSS_HARD_OUTPUT; + hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.TIMode = SPI_TIMODE_DISABLE; @@ -505,7 +519,10 @@ static void MX_GPIO_Init(void) __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOA, RELAY_EN_Pin|_60V_EN_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOA, RELAY_EN_Pin|_60V_EN_Pin|CSB_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(GPIOB, STATUS_LED_R_Pin|STATUS_LED_B_Pin|STATUS_LED_G_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, PRECHARGE_EN_Pin|AUX_IN_Pin, GPIO_PIN_RESET); @@ -516,17 +533,20 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - /*Configure GPIO pins : RELAY_EN_Pin _60V_EN_Pin */ - GPIO_InitStruct.Pin = RELAY_EN_Pin|_60V_EN_Pin; + /*Configure GPIO pins : RELAY_EN_Pin _60V_EN_Pin CSB_Pin */ + GPIO_InitStruct.Pin = RELAY_EN_Pin|_60V_EN_Pin|CSB_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /*Configure GPIO pins : STATUS_LED_R_Pin STATUS_LED_B_Pin STATUS_LED_G_Pin AUX_OUT_Pin */ - GPIO_InitStruct.Pin = STATUS_LED_R_Pin|STATUS_LED_B_Pin|STATUS_LED_G_Pin|AUX_OUT_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + /*Configure GPIO pins : STATUS_LED_R_Pin STATUS_LED_B_Pin STATUS_LED_G_Pin PRECHARGE_EN_Pin + AUX_IN_Pin */ + GPIO_InitStruct.Pin = STATUS_LED_R_Pin|STATUS_LED_B_Pin|STATUS_LED_G_Pin|PRECHARGE_EN_Pin + |AUX_IN_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /*Configure GPIO pins : PB10 PB12 PB4 PB5 @@ -537,12 +557,11 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - /*Configure GPIO pins : PRECHARGE_EN_Pin AUX_IN_Pin */ - GPIO_InitStruct.Pin = PRECHARGE_EN_Pin|AUX_IN_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + /*Configure GPIO pin : AUX_OUT_Pin */ + GPIO_InitStruct.Pin = AUX_OUT_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + HAL_GPIO_Init(AUX_OUT_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pins : RELAY_BATT_SIDE_ON_Pin RELAY_ESC_SIDE_ON_Pin CURRENT_SENSOR_ON_Pin */ GPIO_InitStruct.Pin = RELAY_BATT_SIDE_ON_Pin|RELAY_ESC_SIDE_ON_Pin|CURRENT_SENSOR_ON_Pin; diff --git a/Core/Src/stm32f3xx_hal_msp.c b/Core/Src/stm32f3xx_hal_msp.c index ce18aa0..f407261 100644 --- a/Core/Src/stm32f3xx_hal_msp.c +++ b/Core/Src/stm32f3xx_hal_msp.c @@ -238,12 +238,11 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) __HAL_RCC_GPIOA_CLK_ENABLE(); /**SPI1 GPIO Configuration - PA4 ------> SPI1_NSS PA5 ------> SPI1_SCK PA6 ------> SPI1_MISO PA7 ------> SPI1_MOSI */ - GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; @@ -274,12 +273,11 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) __HAL_RCC_SPI1_CLK_DISABLE(); /**SPI1 GPIO Configuration - PA4 ------> SPI1_NSS PA5 ------> SPI1_SCK PA6 ------> SPI1_MISO PA7 ------> SPI1_MOSI */ - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); /* USER CODE BEGIN SPI1_MspDeInit 1 */ diff --git a/Makefile b/Makefile index 9ea7f96..8f815f8 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ########################################################################################################################## -# File automatically-generated by tool: [projectgenerator] version: [4.3.0-B58] date: [Fri May 10 18:57:11 CEST 2024] +# File automatically-generated by tool: [projectgenerator] version: [4.3.0-B58] date: [Fri May 17 19:29:11 CEST 2024] ########################################################################################################################## # ------------------------------------------------ diff --git a/mvbms-test-24.ioc b/mvbms-test-24.ioc index a63a939..9561084 100644 --- a/mvbms-test-24.ioc +++ b/mvbms-test-24.ioc @@ -7,7 +7,7 @@ CAN.CalculateTimeBit=3000 CAN.CalculateTimeQuantum=1000.0 CAN.IPParameters=CalculateTimeQuantum,CalculateTimeBit,CalculateBaudRate File.Version=6 -GPIO.groupedBy= +GPIO.groupedBy=Group By Peripherals KeepUserPlacement=true Mcu.CPN=STM32F302CBT6 Mcu.Family=STM32F3 @@ -70,13 +70,15 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false -PA0.GPIOParameters=GPIO_Label +PA0.GPIOParameters=PinState,GPIO_Label PA0.GPIO_Label=RELAY_EN PA0.Locked=true +PA0.PinState=GPIO_PIN_RESET PA0.Signal=GPIO_Output -PA1.GPIOParameters=GPIO_Label +PA1.GPIOParameters=PinState,GPIO_Label PA1.GPIO_Label=_60V_EN PA1.Locked=true +PA1.PinState=GPIO_PIN_RESET PA1.Signal=GPIO_Output PA10.GPIOParameters=GPIO_Label PA10.GPIO_Label=CURRENT_SENSOR_ON @@ -105,9 +107,10 @@ PA3.GPIOParameters=GPIO_Label PA3.GPIO_Label=PWM_PG_FAN2 PA3.Locked=true PA3.Signal=S_TIM15_CH2 +PA4.GPIOParameters=GPIO_Label +PA4.GPIO_Label=CSB PA4.Locked=true -PA4.Mode=NSS_Signal_Hard_Output -PA4.Signal=SPI1_NSS +PA4.Signal=GPIO_Output PA5.Locked=true PA5.Mode=Full_Duplex_Master PA5.Signal=SPI1_SCK @@ -125,17 +128,20 @@ PA9.GPIOParameters=GPIO_Label PA9.GPIO_Label=RELAY_ESC_SIDE_ON PA9.Locked=true PA9.Signal=GPIO_Input -PB0.GPIOParameters=GPIO_Label +PB0.GPIOParameters=PinState,GPIO_Label PB0.GPIO_Label=STATUS_LED_R PB0.Locked=true -PB0.Signal=GPIO_Input -PB1.GPIOParameters=GPIO_Label +PB0.PinState=GPIO_PIN_SET +PB0.Signal=GPIO_Output +PB1.GPIOParameters=PinState,GPIO_Label PB1.GPIO_Label=STATUS_LED_B PB1.Locked=true -PB1.Signal=GPIO_Input -PB11.GPIOParameters=GPIO_Label +PB1.PinState=GPIO_PIN_SET +PB1.Signal=GPIO_Output +PB11.GPIOParameters=PinState,GPIO_Label PB11.GPIO_Label=PRECHARGE_EN PB11.Locked=true +PB11.PinState=GPIO_PIN_RESET PB11.Signal=GPIO_Output PB13.GPIOParameters=GPIO_Label PB13.GPIO_Label=AUX_IN @@ -148,10 +154,11 @@ PB14.Signal=GPIO_Input PB15.Locked=true PB15.Mode=PWM Generation3 CH3N PB15.Signal=TIM1_CH3N -PB2.GPIOParameters=GPIO_Label +PB2.GPIOParameters=PinState,GPIO_Label PB2.GPIO_Label=STATUS_LED_G PB2.Locked=true -PB2.Signal=GPIO_Input +PB2.PinState=GPIO_PIN_SET +PB2.Signal=GPIO_Output PB3.Locked=true PB3.Mode=Trace_Asynchronous_SW PB3.Signal=SYS_JTDO-TRACESWO @@ -244,9 +251,8 @@ SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32 SPI1.CalculateBaudRate=500.0 KBits/s SPI1.DataSize=SPI_DATASIZE_8BIT SPI1.Direction=SPI_DIRECTION_2LINES -SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS,DataSize,BaudRatePrescaler +SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler SPI1.Mode=SPI_MODE_MASTER -SPI1.VirtualNSS=VM_NSSHARD SPI1.VirtualType=VM_MASTER TIM1.Channel-PWM\ Generation3\ CH3N=TIM_CHANNEL_3 TIM1.IPParameters=Channel-PWM Generation3 CH3N