functional LED code, first untested implementation

This commit is contained in:
2025-07-08 22:42:23 +02:00
parent 93642b1c11
commit 9c4b60fd18
1416 changed files with 1339716 additions and 1328321 deletions

34
Software/Core/Inc/can.h Normal file
View File

@ -0,0 +1,34 @@
#ifndef __CAN_H
#define __CAN_H
#include "scs_sdc.h"
#define CAN_ID_SLAVE_PANIC 0x009
#define CAN_ID_AMS_STATUS 0x00A
#define CAN_ID_AMS_IN 0x00B
#define CAN_ID_AMS_ERROR 0x00C
#define CAN_ID_SLAVE_STATUS_BASE 0x080
#define CAN_ID_AMS_SIGNALS 0x090
#define CAN_ID_DCDC_INFO 0x313
// TEMPORARY!!
#define CAN_ID_AMS_DETAILS 0x091
#define CAN_ID_AMS_DETAILS_FC 0x092
#define CAN_ID_SLAVE_LOG 0x4F4
#define CAN_ID_SHUNT_BASE 0x520
#define CAN_ID_SHUNT_CURRENT 0x521
#define CAN_ID_SHUNT_VOLTAGE1 0x522
#define CAN_ID_SHUNT_VOLTAGE2 0x523
#define CAN_ID_SHUNT_VOLTAGE3 0x524
#define CAN_ID_SHUNT_TEMP 0x525
#define CAN_ID_SHUNT_POWER 0x526
#define CAN_ID_SHUNT_CURRENT_COUNTER 0x527
#define CAN_ID_SHUNT_ENERGY_COUNTER 0x528
void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data);
HAL_StatusTypeDef can_init(FDCAN_HandleTypeDef* handle);
HAL_StatusTypeDef can_change_ts_state(TSState state);
#endif

20
Software/Core/Inc/led.h Normal file
View File

@ -0,0 +1,20 @@
#ifndef __LED_H
#define __LED_H
#include "stm32h7xx_hal.h"
#define LED_TIM TIM3
#define LED_CH_R TIM_CHANNEL_1
#define LED_CH_G TIM_CHANNEL_2
#define LED_CH_B TIM_CHANNEL_3
#define DUTY_CYCLE_R LED_TIM->CCR1
#define DUTY_CYCLE_G LED_TIM->CCR2
#define DUTY_CYCLE_B LED_TIM->CCR3
#define COLOR_HEARTBEAT 0x0000FFFF
#define COLOR_ERROR 0x00FF0000
HAL_StatusTypeDef led_init(TIM_HandleTypeDef* htim);
HAL_StatusTypeDef led_blink(TIM_HandleTypeDef* htim, int32_t color, int16_t blink_period);
#endif

View File

@ -49,6 +49,8 @@ extern "C" {
/* USER CODE END EM */
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
/* Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);
@ -57,9 +59,28 @@ void Error_Handler(void);
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
#define TS_ON_Pin GPIO_PIN_8
#define TS_ON_GPIO_Port GPIOI
#define TS_ON_EXTI_IRQn EXTI9_5_IRQn
#define SDC_ON_Pin GPIO_PIN_0
#define SDC_ON_GPIO_Port GPIOI
#define SDC_ENABLE_Pin GPIO_PIN_1
#define SDC_ENABLE_GPIO_Port GPIOI
#define ENC_PUSH_ON_Pin GPIO_PIN_15
#define ENC_PUSH_ON_GPIO_Port GPIOA
#define ENC_PUSH_ON_EXTI_IRQn EXTI15_10_IRQn
#define ENC_B_ON_Pin GPIO_PIN_10
#define ENC_B_ON_GPIO_Port GPIOC
#define ENC_A_ON_Pin GPIO_PIN_11
#define ENC_A_ON_GPIO_Port GPIOC
#define AMS_ERROR_Pin GPIO_PIN_6
#define AMS_ERROR_GPIO_Port GPIOI
#define IMD_ERROR_Pin GPIO_PIN_7
#define IMD_ERROR_GPIO_Port GPIOI
/* USER CODE BEGIN Private defines */
#define AMS_TIMEOUT 150
#define TRY(call) {if (call) return HAL_ERROR;}
/* USER CODE END Private defines */
#ifdef __cplusplus

View File

@ -0,0 +1,51 @@
#ifndef __SCS_SDC_H
#define __SCS_SDC_H
typedef enum {
TS_INACTIVE,
TS_ACTIVE,
TS_PRECHARGE,
TS_DISCHARGE,
TS_ERROR,
TS_CHARGING_CHECK,
TS_CHARGING,
} TSState;
typedef struct {
TSState current_state;
TSState target_state;
uint16_t error_source; // TSErrorSource (bitmask)
uint16_t error_type; // TSErrorKind
} TSStateHandle;
typedef enum {
IMD_STATE_UNKNOWN,
IMD_STATE_SHORTCIRCUIT_SUPPLY,
IMD_STATE_SHORTCIRCUIT_GND,
IMD_STATE_NORMAL,
IMD_STATE_UNDERVOLTAGE,
IMD_STATE_SST,
IMD_STATE_DEV_ERROR,
IMD_STATE_GND_FAULT,
} IMDState;
typedef struct {
int ok;
IMDState state;
uint32_t r_iso;
uint32_t freq;
uint32_t duty_cycle;
uint32_t last_high;
} IMDData;
extern TSStateHandle ts_state;
extern IMDData imd_data;
void error_led_init();
void sdc_init();
void ts_handle_ams_status(const uint8_t* data);
#endif

View File

@ -44,14 +44,14 @@
/* #define HAL_CRYP_MODULE_ENABLED */
/* #define HAL_DAC_MODULE_ENABLED */
/* #define HAL_DCMI_MODULE_ENABLED */
/* #define HAL_DMA2D_MODULE_ENABLED */
#define HAL_ETH_MODULE_ENABLED
#define HAL_DMA2D_MODULE_ENABLED
/* #define HAL_ETH_MODULE_ENABLED */
/* #define HAL_ETH_LEGACY_MODULE_ENABLED */
/* #define HAL_NAND_MODULE_ENABLED */
/* #define HAL_NOR_MODULE_ENABLED */
/* #define HAL_OTFDEC_MODULE_ENABLED */
/* #define HAL_SRAM_MODULE_ENABLED */
/* #define HAL_SDRAM_MODULE_ENABLED */
#define HAL_SDRAM_MODULE_ENABLED
/* #define HAL_HASH_MODULE_ENABLED */
/* #define HAL_HRTIM_MODULE_ENABLED */
/* #define HAL_HSEM_MODULE_ENABLED */
@ -59,13 +59,12 @@
/* #define HAL_JPEG_MODULE_ENABLED */
/* #define HAL_OPAMP_MODULE_ENABLED */
/* #define HAL_OSPI_MODULE_ENABLED */
/* #define HAL_XSPI_MODULE_ENABLED */
/* #define HAL_I2S_MODULE_ENABLED */
/* #define HAL_SMBUS_MODULE_ENABLED */
/* #define HAL_IWDG_MODULE_ENABLED */
/* #define HAL_LPTIM_MODULE_ENABLED */
#define HAL_LTDC_MODULE_ENABLED
/* #define HAL_XSPI_MODULE_ENABLED */
/* #define HAL_QSPI_MODULE_ENABLED */
/* #define HAL_RAMECC_MODULE_ENABLED */
/* #define HAL_RNG_MODULE_ENABLED */
/* #define HAL_RTC_MODULE_ENABLED */
@ -75,13 +74,13 @@
/* #define HAL_SPDIFRX_MODULE_ENABLED */
/* #define HAL_SPI_MODULE_ENABLED */
/* #define HAL_SWPMI_MODULE_ENABLED */
/* #define HAL_TIM_MODULE_ENABLED */
/* #define HAL_UART_MODULE_ENABLED */
#define HAL_TIM_MODULE_ENABLED
#define HAL_UART_MODULE_ENABLED
/* #define HAL_USART_MODULE_ENABLED */
/* #define HAL_IRDA_MODULE_ENABLED */
/* #define HAL_SMARTCARD_MODULE_ENABLED */
/* #define HAL_WWDG_MODULE_ENABLED */
/* #define HAL_PCD_MODULE_ENABLED */
#define HAL_PCD_MODULE_ENABLED
/* #define HAL_HCD_MODULE_ENABLED */
/* #define HAL_DFSDM_MODULE_ENABLED */
/* #define HAL_DSI_MODULE_ENABLED */

View File

@ -22,7 +22,7 @@
#define __STM32H7xx_IT_H
#ifdef __cplusplus
extern "C" {
extern "C" {
#endif
/* Private includes ----------------------------------------------------------*/
@ -55,6 +55,8 @@ void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
void EXTI9_5_IRQHandler(void);
void EXTI15_10_IRQHandler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */