beta version

This commit is contained in:
Артём Чамайкин
2024-08-20 12:20:24 +03:00
parent b86b879ede
commit ad4ae7357a
10 changed files with 20741 additions and 20362 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -1,17 +1,25 @@
//
// Created by Артём Чамайкин on 20.07.2024.
//
#ifndef EDCAN_CONFIG_H
#define EDCAN_CONFIG_H
#define DEVICE_ID 0x20
#define FWVER 1
//#define ED_CAN1
#define ED_CAN2
//если используется STM32 с одним каном
//#define ED_CANx
//extern CAN_HandleTypeDef hcan;
//#define ED_CAN_INSTANCE hcan
//если используется CAN1 на STM32 с двумя канами
//#define ED_CAN1
//extern CAN_HandleTypeDef hcan1;
//#define ED_CAN_INSTANCE hcan1
//если используется CAN2 на STM32 с двумя канами
#define ED_CAN2
extern CAN_HandleTypeDef hcan2;
#define ED_CAN_INSTANCE hcan2
//можно уменьшать для уменьшения объема потребляемой памяти
#define BUFFER_SIZE 256
#endif //EDCAN_CONFIG_H

View File

@@ -38,11 +38,70 @@ void Init_Peripheral(){
}
uint8_t GBT_ReadTemp(){
//TODO
return 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;
}
float calculate_NTC_resistance(int adc_value, float Vref, float Vin, float R) {
// Преобразуем значение АЦП в выходное напряжение
float Vout = (adc_value / 4095.0) * Vref;
// Проверяем, чтобы Vout не было равно Vin
if (Vout >= Vin) {
return -1; // Ошибка: Vout не может быть больше или равно Vin
}
// Вычисляем сопротивление термистора
float R_NTC = R * (Vout / (Vin - Vout));
return R_NTC;
}
int16_t GBT_ReadTemp(uint8_t ch){
//TODO
if(ch)ADC_Select_Channel(ADC_CHANNEL_8);
else ADC_Select_Channel(ADC_CHANNEL_9);
// Начало конверсии
HAL_ADC_Start(&hadc1);
// Ожидание окончания конверсии
HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
// Получение значения
uint32_t adcValue = HAL_ADC_GetValue(&hadc1);
// Остановка АЦП (по желанию)
HAL_ADC_Stop(&hadc1);
// int adc_value = 2048; // Пример значения АЦП
float Vref = 3.3; // Напряжение опорное
float Vin = 5.0; // Входное напряжение
float R = 1000; // Сопротивление резистора в Омах
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,

View File

@@ -68,9 +68,9 @@ void CONN_Task(){
GBT_Lock(0);
// RELAY_Write(RELAY_AUX, 0);
//TODO: Reconnection
if(GBT_EDCAN_Input.chargeControl == CHARGING_NOT_ALLOWED){
CONN_SetState(CONN_Initializing);
}
// if(GBT_EDCAN_Input.chargeControl == CHARGING_NOT_ALLOWED){
// CONN_SetState(CONN_Initializing);
// }
if(CONN_CC_GetState()==GBT_CC_6V){
CONN_SetState(CONN_Initializing);
}

View File

@@ -143,6 +143,9 @@ void parse_command(uint8_t* buffer, size_t length) {
break;
}
} else if (strncmp((const char*)buffer, "temp", length) == 0) {
printf("temp1 %d\n",GBT_ReadTemp(0));
printf("temp2 %d\n",GBT_ReadTemp(1));
} else if (strncmp((const char*)buffer, "info1", length) == 0) {
printf("Battery info:\n");
printf("maxCV %dV\n",GBT_BATStat.maxCellVoltage/100); // 0.01v/bit
@@ -193,6 +196,7 @@ void parse_command(uint8_t* buffer, size_t length) {
printf("stop\n");
printf("stop1\n");
// printf("force\n");
printf("temp\n");
printf("info1\n");
printf("info2\n");
printf("info3\n");

View File

@@ -1,6 +1,8 @@
board.c:16:6:RELAY_Write 3
board.c:22:9:GetBoardTemp 1
board.c:34:6:Init_Peripheral 1
board.c:41:9:GBT_ReadTemp 1
board.c:46:6:ADC_Select_Channel 2
board.c:57:9:SW_GetAddr 4
board.c:41:7:pt1000_to_temperature 1
board.c:57:7:calculate_NTC_resistance 2
board.c:72:9:GBT_ReadTemp 2
board.c:105:6:ADC_Select_Channel 2
board.c:116:9:SW_GetAddr 4

View File

@@ -1,5 +1,5 @@
connector.c:18:6:CONN_Init 1
connector.c:22:6:CONN_Task 15
connector.c:22:6:CONN_Task 14
connector.c:91:6:CONN_SetState 7
connector.c:102:6:CONN_CC_ReadStateFiltered 4
connector.c:158:9:CONN_CC_GetState 1

View File

@@ -3,5 +3,5 @@ debug.c:26:5:_write 1
debug.c:35:6:HAL_UARTEx_RxEventCallback 2
debug.c:45:6:debug_rx_interrupt 1
debug.c:51:6:debug_init 1
debug.c:61:6:parse_command 27
debug.c:226:6:debug_task 2
debug.c:61:6:parse_command 28
debug.c:230:6:debug_task 2

View File

@@ -1,32 +1,32 @@
core_cm3.h:1762:34:__NVIC_SystemReset 1
edcan.c:96:6:HAL_CAN_RxFifo1MsgPendingCallback 7
edcan.c:117:6:HAL_CAN_TxMailbox0CompleteCallback 2
edcan.c:124:6:HAL_CAN_TxMailbox1CompleteCallback 2
edcan.c:131:6:HAL_CAN_TxMailbox2CompleteCallback 2
edcan.c:143:6:EDCAN_Init 1
edcan.c:152:6:EDCAN_SetSecondID 1
edcan.c:162:6:CAN_ReInit 1
edcan.c:202:6:EDCAN_FilterInit 5
edcan.c:292:6:EDCAN_SendPacketWrite 1
edcan.c:331:6:EDCAN_SendPacketWriteLong 2
edcan.c:424:6:EDCAN_SendPacketRead 1
edcan.c:462:6:EDCAN_SendPacketReadRequest 1
edcan.c:496:6:EDCAN_Loop 8
edcan.c:529:6:EDCAN_SendAlivePacket 1
edcan.c:540:6:EDCAN_EnterSilentMode 2
edcan.c:553:6:EDCAN_SetSilentMode 2
edcan_buffer.c:40:6:EDCAN_ExchangeTxBuffer 7
edcan_buffer.c:84:6:EDCAN_TxBufferAdd 2
edcan_buffer.c:98:6:EDCAN_TxBufferGet 2
edcan_buffer.c:111:10:EDCAN_getTxBufferElementCount 1
edcan_buffer.c:116:6:EDCAN_TxBufferPeekFirst 2
edcan_buffer.c:129:6:EDCAN_TxBufferRemoveFirst 2
edcan_buffer.c:142:6:EDCAN_RxBufferAdd 2
edcan_buffer.c:156:6:EDCAN_RxBufferGet 2
edcan_buffer.c:169:10:EDCAN_getRxBufferElementCount 1
edcan_buffer.c:174:6:EDCAN_RxBufferPeekFirst 2
edcan_buffer.c:185:6:EDCAN_RxBufferRemoveFirst 2
edcan_buffer.c:197:6:EDCAN_ExchangeRxBuffer 6
edcan.c:97:6:HAL_CAN_RxFifo1MsgPendingCallback 7
edcan.c:118:6:HAL_CAN_TxMailbox0CompleteCallback 2
edcan.c:125:6:HAL_CAN_TxMailbox1CompleteCallback 2
edcan.c:132:6:HAL_CAN_TxMailbox2CompleteCallback 2
edcan.c:144:6:EDCAN_Init 1
edcan.c:153:6:EDCAN_SetSecondID 1
edcan.c:163:6:CAN_ReInit 1
edcan.c:203:6:EDCAN_FilterInit 5
edcan.c:293:6:EDCAN_SendPacketWrite 1
edcan.c:332:6:EDCAN_SendPacketWriteLong 2
edcan.c:425:6:EDCAN_SendPacketRead 1
edcan.c:463:6:EDCAN_SendPacketReadRequest 1
edcan.c:497:6:EDCAN_Loop 8
edcan.c:530:6:EDCAN_SendAlivePacket 1
edcan.c:541:6:EDCAN_EnterSilentMode 2
edcan.c:554:6:EDCAN_SetSilentMode 2
edcan_buffer.c:41:6:EDCAN_ExchangeTxBuffer 7
edcan_buffer.c:85:6:EDCAN_TxBufferAdd 2
edcan_buffer.c:99:6:EDCAN_TxBufferGet 2
edcan_buffer.c:112:10:EDCAN_getTxBufferElementCount 1
edcan_buffer.c:117:6:EDCAN_TxBufferPeekFirst 2
edcan_buffer.c:130:6:EDCAN_TxBufferRemoveFirst 2
edcan_buffer.c:143:6:EDCAN_RxBufferAdd 2
edcan_buffer.c:157:6:EDCAN_RxBufferGet 2
edcan_buffer.c:170:10:EDCAN_getRxBufferElementCount 1
edcan_buffer.c:175:6:EDCAN_RxBufferPeekFirst 2
edcan_buffer.c:186:6:EDCAN_RxBufferRemoveFirst 2
edcan_buffer.c:198:6:EDCAN_ExchangeRxBuffer 6
edcan_handler.c:43:6:EDCAN_WriteHandler 3
edcan_handler.c:63:6:EDCAN_WriteSystemRegister 5
edcan_handler.c:90:9:EDCAN_GetSystemRegisterValue 8

File diff suppressed because it is too large Load Diff