forked from achamaikin/CCSModuleSW30Web
latest version
This commit is contained in:
107
Core/Src/board.c
107
Core/Src/board.c
@@ -1,11 +1,7 @@
|
||||
/*
|
||||
* board.c
|
||||
*
|
||||
* Created on: Apr 15, 2024
|
||||
* Author: colorbass
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
#include "board.h"
|
||||
#include "tim.h"
|
||||
|
||||
extern ADC_HandleTypeDef hadc1;
|
||||
|
||||
@@ -13,10 +9,64 @@ extern ADC_HandleTypeDef hadc1;
|
||||
//TEMP READ
|
||||
//GBT_TEMP_SENSORS
|
||||
|
||||
void RELAY_Write(relay_t num, uint8_t state){
|
||||
if(num==RELAY_AUX)HAL_GPIO_WritePin(RELAY_AUX_GPIO_Port, RELAY_AUX_Pin, state);
|
||||
if(num==RELAY_CC)HAL_GPIO_WritePin(RELAY_CC_GPIO_Port, RELAY_CC_Pin, state);
|
||||
InfoBlock_t *InfoBlock = (InfoBlock_t *)(VERSION_OFFSET);
|
||||
|
||||
uint8_t RELAY_State[RELAY_COUNT];
|
||||
|
||||
void RELAY_Write(relay_t num, uint8_t state){
|
||||
switch (num) {
|
||||
case RELAY_AUX0:
|
||||
HAL_GPIO_WritePin(RELAY1_GPIO_Port, RELAY1_Pin, state);
|
||||
break;
|
||||
case RELAY_AUX1:
|
||||
HAL_GPIO_WritePin(RELAY2_GPIO_Port, RELAY2_Pin, state);
|
||||
break;
|
||||
case RELAY3:
|
||||
HAL_GPIO_WritePin(RELAY3_GPIO_Port, RELAY3_Pin, state);
|
||||
break;
|
||||
case RELAY_DC:
|
||||
HAL_GPIO_WritePin(RELAY4_GPIO_Port, RELAY4_Pin, state);
|
||||
break;
|
||||
case RELAY_AC:
|
||||
HAL_GPIO_WritePin(RELAY5_GPIO_Port, RELAY5_Pin, state);
|
||||
break;
|
||||
case RELAY_CC:
|
||||
HAL_GPIO_WritePin(RELAY_CC_GPIO_Port, RELAY_CC_Pin, state);
|
||||
break;
|
||||
case RELAY_DC1:
|
||||
HAL_GPIO_WritePin(RELAY_DC_GPIO_Port, RELAY_DC_Pin, state);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
RELAY_State[num] = state;
|
||||
}
|
||||
|
||||
uint8_t RELAY_Read(relay_t num){
|
||||
return RELAY_State[num];
|
||||
}
|
||||
|
||||
|
||||
uint8_t IN_ReadInput(inputNum_t input_n){
|
||||
switch(input_n){
|
||||
case IN_SW0:
|
||||
return HAL_GPIO_ReadPin(IN_SW0_GPIO_Port, IN_SW0_Pin);
|
||||
case IN_SW1:
|
||||
return HAL_GPIO_ReadPin(IN_SW1_GPIO_Port, IN_SW1_Pin);
|
||||
case IN0:
|
||||
return HAL_GPIO_ReadPin(IN0_GPIO_Port, IN0_Pin);
|
||||
case IN_ESTOP:
|
||||
return HAL_GPIO_ReadPin(IN_ESTOP_GPIO_Port, IN_ESTOP_Pin);
|
||||
case IN_FB1:
|
||||
return HAL_GPIO_ReadPin(IN_FB1_GPIO_Port, IN_FB1_Pin);
|
||||
case IN_CONT_FB_DC:
|
||||
return HAL_GPIO_ReadPin(IN_FB2_GPIO_Port, IN_FB2_Pin);
|
||||
case ISO_IN:
|
||||
return HAL_GPIO_ReadPin(ISO_IN_GPIO_Port, ISO_IN_Pin);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t GetBoardTemp(){
|
||||
@@ -33,21 +83,21 @@ uint8_t GetBoardTemp(){
|
||||
|
||||
void Init_Peripheral(){
|
||||
HAL_ADCEx_Calibration_Start(&hadc1);
|
||||
RELAY_Write(RELAY_AUX, 0);
|
||||
RELAY_Write(RELAY_CC, 1);
|
||||
|
||||
RELAY_Write(RELAY_AUX0, 0);
|
||||
RELAY_Write(RELAY_AUX1, 0);
|
||||
RELAY_Write(RELAY3, 0);
|
||||
RELAY_Write(RELAY_DC, 0);
|
||||
RELAY_Write(RELAY_AC, 0);
|
||||
RELAY_Write(RELAY_CC, 1);
|
||||
RELAY_Write(RELAY_DC1, 0);
|
||||
}
|
||||
|
||||
float pt1000_to_temperature(float resistance) {
|
||||
// Константы для PT1000
|
||||
const float R0 = 1000.0; // Сопротивление при 0 °C
|
||||
const float C_A = 3.9083E-3f;
|
||||
// const float A = 3.9083e-03; // Коэффициент температурного изменения (°C^-1)
|
||||
// const float B = -5.775e-07; // Второй коэффициент (°C^-2)
|
||||
//
|
||||
// // Расчет температуры по формуле
|
||||
// float temperature = -A / (B - (R0 / resistance - 1) * A);
|
||||
|
||||
|
||||
float temperature = (resistance-R0) / ( R0 * C_A);
|
||||
|
||||
return temperature;
|
||||
@@ -95,15 +145,10 @@ int16_t GBT_ReadTemp(uint8_t ch){
|
||||
|
||||
float temp = pt1000_to_temperature(calculate_NTC_resistance(adcValue, Vref, Vin, R));
|
||||
|
||||
|
||||
|
||||
return (int16_t)temp;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void ADC_Select_Channel(uint32_t ch) {
|
||||
ADC_ChannelConfTypeDef conf = {
|
||||
.Channel = ch,
|
||||
@@ -114,21 +159,3 @@ void ADC_Select_Channel(uint32_t ch) {
|
||||
Error_Handler();
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t SW_GetAddr(){
|
||||
if(!HAL_GPIO_ReadPin(ADDR_0_GPIO_Port, ADDR_0_Pin)){
|
||||
if(!HAL_GPIO_ReadPin(ADDR_1_GPIO_Port, ADDR_1_Pin)){
|
||||
return 0x23;
|
||||
}else{
|
||||
return 0x21;
|
||||
}
|
||||
|
||||
}else{
|
||||
if(!HAL_GPIO_ReadPin(ADDR_1_GPIO_Port, ADDR_1_Pin)){
|
||||
return 0x22;
|
||||
}else{
|
||||
return 0x20;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user