mirror of
https://gitea.ecohim.ru:3000/RS485_BSV/RS485_BSV_fw.git
synced 2025-08-03 23:17:06 +03:00
67 lines
2.2 KiB
C
67 lines
2.2 KiB
C
/*
|
|
* 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_ */
|