7 slaves
This commit is contained in:
parent
665ee02bf2
commit
90b98f25c2
|
@ -34,6 +34,7 @@
|
||||||
#define AMS_LOGGING_ID 0x500
|
#define AMS_LOGGING_ID 0x500
|
||||||
|
|
||||||
#define AMS_LOGGING_NUM_FRAMES 6
|
#define AMS_LOGGING_NUM_FRAMES 6
|
||||||
|
#define AMS_LOGGING_FRAMES_PER_LOOP 1
|
||||||
|
|
||||||
// Charger->Master IDs
|
// Charger->Master IDs
|
||||||
#define CHARGER_START_CHARGING 0x446
|
#define CHARGER_START_CHARGING 0x446
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#define GET_MEASUREMENTS 0x05
|
#define GET_MEASUREMENTS 0x05
|
||||||
#define TOGGLE_STATUS_LED 0x06
|
#define TOGGLE_STATUS_LED 0x06
|
||||||
|
|
||||||
#define NUMBEROFSLAVES 6
|
#define NUMBEROFSLAVES 7
|
||||||
#define N_CELLS_SERIES 10
|
#define N_CELLS_SERIES 10
|
||||||
#define N_CELLS_PARALLEL 9
|
#define N_CELLS_PARALLEL 9
|
||||||
#define NUMBEROFTEMPS 32
|
#define NUMBEROFTEMPS 32
|
||||||
|
|
|
@ -42,7 +42,10 @@ extern "C" {
|
||||||
|
|
||||||
/* Exported constants --------------------------------------------------------*/
|
/* Exported constants --------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN EC */
|
/* USER CODE BEGIN EC */
|
||||||
|
#define THRESH_UV 32768 /* 2.5V */
|
||||||
|
#define THRESH_OV 55050 /* 4.2V */
|
||||||
|
#define THRESH_UT 0 /* 0C */
|
||||||
|
#define THRESH_OT 880 /* 55C */
|
||||||
/* USER CODE END EC */
|
/* USER CODE END EC */
|
||||||
|
|
||||||
/* Exported macro ------------------------------------------------------------*/
|
/* Exported macro ------------------------------------------------------------*/
|
||||||
|
|
|
@ -208,6 +208,7 @@ void CAN_SendLoggingFrame(FDCAN_HandleTypeDef* hcan) {
|
||||||
|
|
||||||
uint8_t buffer[8];
|
uint8_t buffer[8];
|
||||||
|
|
||||||
|
for (int i = 0; i < AMS_LOGGING_FRAMES_PER_LOOP; i++) {
|
||||||
buffer[0] = ((slavelognum << 4) | framelognum);
|
buffer[0] = ((slavelognum << 4) | framelognum);
|
||||||
|
|
||||||
switch (framelognum) {
|
switch (framelognum) {
|
||||||
|
@ -235,29 +236,29 @@ void CAN_SendLoggingFrame(FDCAN_HandleTypeDef* hcan) {
|
||||||
BATTERY_VOLTAGE_TYPE);
|
BATTERY_VOLTAGE_TYPE);
|
||||||
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellVoltages[9],
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellVoltages[9],
|
||||||
BATTERY_VOLTAGE_TYPE);
|
BATTERY_VOLTAGE_TYPE);
|
||||||
buffer[4] =
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[0],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[0], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
buffer[5] =
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[1],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[1], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
buffer[6] =
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[2],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[2], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
buffer[7] =
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[3],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[3], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
buffer[1] =
|
buffer[1] = CAN_convert_logval(slaves[slavelognum].cellTemps[4],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[4], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
buffer[2] =
|
buffer[2] = CAN_convert_logval(slaves[slavelognum].cellTemps[5],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[5], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
buffer[3] =
|
buffer[3] = CAN_convert_logval(slaves[slavelognum].cellTemps[6],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[6], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
buffer[4] =
|
buffer[4] = CAN_convert_logval(slaves[slavelognum].cellTemps[7],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[7], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
buffer[5] =
|
buffer[5] = CAN_convert_logval(slaves[slavelognum].cellTemps[8],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[8], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
buffer[6] =
|
buffer[6] = CAN_convert_logval(slaves[slavelognum].cellTemps[9],
|
||||||
CAN_convert_logval(slaves[slavelognum].cellTemps[9], BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[10],
|
buffer[7] = CAN_convert_logval(slaves[slavelognum].cellTemps[10],
|
||||||
BATTERY_TEMP_TYPE);
|
BATTERY_TEMP_TYPE);
|
||||||
break;
|
break;
|
||||||
|
@ -326,6 +327,7 @@ void CAN_SendLoggingFrame(FDCAN_HandleTypeDef* hcan) {
|
||||||
framelognum = 0;
|
framelognum = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t CAN_convert_logval(uint16_t value, uint8_t type) {
|
uint8_t CAN_convert_logval(uint16_t value, uint8_t type) {
|
||||||
if (type == BATTERY_VOLTAGE_TYPE) {
|
if (type == BATTERY_VOLTAGE_TYPE) {
|
||||||
|
|
|
@ -33,6 +33,8 @@
|
||||||
#include "SPI_Communication.h"
|
#include "SPI_Communication.h"
|
||||||
#include "USB_Shell.h"
|
#include "USB_Shell.h"
|
||||||
|
|
||||||
|
#include "stm32g4xx_hal.h"
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
/* Private typedef -----------------------------------------------------------*/
|
||||||
|
@ -77,6 +79,17 @@ void setAMSError();
|
||||||
void AMS_Error_Handler(uint8_t ErrorCode);
|
void AMS_Error_Handler(uint8_t ErrorCode);
|
||||||
void Send_Can_Info_Frame(void);
|
void Send_Can_Info_Frame(void);
|
||||||
void softTSAL(void);
|
void softTSAL(void);
|
||||||
|
|
||||||
|
void CheckCellLimits() {
|
||||||
|
if (HAL_GetTick() < 10000) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (min_temp < THRESH_UT || max_temp > THRESH_OT || min_voltage < THRESH_UV ||
|
||||||
|
max_voltage > THRESH_OV) {
|
||||||
|
AMS_Error_Handler(0x10);
|
||||||
|
}
|
||||||
|
}
|
||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -145,6 +158,7 @@ int main(void) {
|
||||||
CAN_Receive(&hfdcan1);
|
CAN_Receive(&hfdcan1);
|
||||||
CAN_SendAbxStatus(&hfdcan1);
|
CAN_SendAbxStatus(&hfdcan1);
|
||||||
CheckShuntLimits();
|
CheckShuntLimits();
|
||||||
|
CheckCellLimits();
|
||||||
CAN_SendLoggingFrame(&hfdcan1);
|
CAN_SendLoggingFrame(&hfdcan1);
|
||||||
HAL_GPIO_TogglePin(Status_LED_GPIO_Port, Status_LED_Pin);
|
HAL_GPIO_TogglePin(Status_LED_GPIO_Port, Status_LED_Pin);
|
||||||
Temp_Ctrl_Loop();
|
Temp_Ctrl_Loop();
|
||||||
|
|
Loading…
Reference in New Issue