Migrated to a new HAL version; FW now works; Adress is 38, board type is 12

This commit is contained in:
Anton Mukhin
2024-07-25 16:25:03 +03:00
parent 7da825917f
commit 07be2f747f
12 changed files with 4757 additions and 16 deletions

66
Core/Inc/board_logic.h Normal file
View File

@@ -0,0 +1,66 @@
/*
* board_logic.h
*
* Created on: Jul 25, 2024
* Author: User
*/
#ifndef INC_BOARD_LOGIC_H_
#define INC_BOARD_LOGIC_H_
#define MODBUS_FIRMWARE_VERSION ( /*major*/ 10 + /*minor*/ 0 * 0x100)
#define MODBUS_BOARD_TYPE (12) //BSV Module board ID
#define HVS_U_LIMIT 30.0 //[kV]
#define HVS_I_LIMIT 11500 //[uA]
#define K_ADC_CURRENT 0.272
#define K_ADC_VOLTAGE 124.666
#define K_ADC_15V 160.0 // Really should be 161.8972 (but 160 gives a number closer to reality)
#define K_ADC_24V 111.0 // Really should be 112.8193 (but 111 gives a number closer to reality)
#define K_DAC_CURRENT 0.302
#define K_DAC_VOLTAGE 124.533
#define CONF_BIT_HVS_EN (1u<<0)
// ADC channels
#define ADC_CH_VOLTAGE 6
#define ADC_CH_CURRENT 7
#define ADC_CH_15V 14
#define ADC_CH_24V 15
#define ADC_BUFF_LENGTH 20 // ADC buffer length (to smooth the result). 1 per ms
// PIN macros
#define GET_HVS_ENABLE (HAL_GPIO_ReadPin(HVS_ENABLE_GPIO_Port, HVS_ENABLE_Pin) == GPIO_PIN_SET)
#define GET_HVS_CONN (HAL_GPIO_ReadPin(HVS_CONN_GPIO_Port, HVS_CONN_Pin) == GPIO_PIN_RESET)
#define GET_HVS_READY (HAL_GPIO_ReadPin(HVS_READY_GPIO_Port, HVS_READY_Pin) == GPIO_PIN_SET)
#define GET_HVS_XRAYON (HAL_GPIO_ReadPin(HVS_XRAYON_GPIO_Port, HVS_XRAYON_Pin) == GPIO_PIN_SET)
#define GET_HVS_NOLINK (HAL_GPIO_ReadPin(HVS_NOLINK_GPIO_Port, HVS_NOLINK_Pin) == GPIO_PIN_SET)
#define GET_HVS_OVERHEAT (HAL_GPIO_ReadPin(HVS_OVERHEAT_GPIO_Port, HVS_OVERHEAT_Pin) == GPIO_PIN_SET)
#define GET_HVS_OVERLOAD (HAL_GPIO_ReadPin(HVS_OVERLOAD_GPIO_Port, HVS_OVERLOAD_Pin) == GPIO_PIN_SET)
#define SET_HVS_ON HAL_GPIO_WritePin(HVS_ENABLE_GPIO_Port, HVS_ENABLE_Pin, GPIO_PIN_SET)
#define SET_HVS_OFF HAL_GPIO_WritePin(HVS_ENABLE_GPIO_Port, HVS_ENABLE_Pin, GPIO_PIN_RESET)
typedef struct hvs_t {
float voltage; //[kV]
float current; //[uA]
float v_24; //[V]
float v_15; //[V]
float set_voltage; //[kV]
float set_current; //[uA]
uint8_t update_voltage_flag; //Need update voltage DAC flag
uint8_t update_current_flag; //Need update current DAC flag
} hvs_t;
void board_init(void);
void loop_iterate();
void update_service_indication(void);
#endif /* INC_BOARD_LOGIC_H_ */

37
Core/Inc/modbus_logic.h Normal file
View File

@@ -0,0 +1,37 @@
/*
* modbus_logic.h
*
* Created on: Jul 25, 2024
* Author: User
*/
#ifndef INC_MODBUS_LOGIC_H_
#define INC_MODBUS_LOGIC_H_
#include <stdint.h>
#define BOARD_ADRESS 38 //BSV Module 1
//#define BOARD_ADRESS 39 //BSV Module 2
#define BUS_IDLE_TIME 3
#define MODBUS_PROTOCOL_VERSION (1)
#define MODBUS_HEADER_SIZE (13)
#define BUFFERS_SIZE (100 + 9)
#define MAX_REGS_PER_QUERY (32)
#define ADDRESS_UNDEFINED (0xff)
enum recv_state {RECV_IDLE, RECV_READ_HEADER, RECV_READ_DATA, RECV_READ_COMPLETE, RECV_ERROR};
enum send_state {SEND_IDLE, SEND_BUSY};
#define TXEN_ON HAL_GPIO_WritePin(TXEN_GPIO_Port, TXEN_Pin, GPIO_PIN_SET)
#define TXEN_OFF HAL_GPIO_WritePin(TXEN_GPIO_Port, TXEN_Pin, GPIO_PIN_RESET)
void UART_RxCpltCallback(void);
void UART_TxCpltCallback(void);
void process_incoming_packet();
void modbus_loop_iterate();
uint8_t read_register(uint16_t address, uint16_t* value);
uint8_t write_register(uint16_t address, uint16_t value);
#endif /* INC_MODBUS_LOGIC_H_ */

View File

@@ -64,7 +64,7 @@
/*#define HAL_SMARTCARD_MODULE_ENABLED */
/*#define HAL_SPI_MODULE_ENABLED */
/*#define HAL_SRAM_MODULE_ENABLED */
/*#define HAL_TIM_MODULE_ENABLED */
#define HAL_TIM_MODULE_ENABLED
#define HAL_UART_MODULE_ENABLED
/*#define HAL_USART_MODULE_ENABLED */
/*#define HAL_WWDG_MODULE_ENABLED */

View File

@@ -55,9 +55,11 @@ void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
void DMA1_Channel1_IRQHandler(void);
void DMA1_Channel4_IRQHandler(void);
void DMA1_Channel5_IRQHandler(void);
void USART1_IRQHandler(void);
void TIM6_IRQHandler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */