Обновление
This commit is contained in:
parent
7a68cd2ad5
commit
03621e2981
51
Gpios.c
51
Gpios.c
|
|
@ -10,11 +10,54 @@ tGpios GPIOS;
|
|||
void Gpios_Init() {
|
||||
tGpios *env = &GPIOS;
|
||||
|
||||
env->led.LED1 = vInitGpioPinPull(GPIO_A, PORT_PIN_8, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, false, PORT_PULL_DOWN);
|
||||
env->led.LED2 = vInitGpioPinPull(GPIO_A, PORT_PIN_11, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, false, PORT_PULL_DOWN);
|
||||
env->led.LED3 = vInitGpioPinPull(GPIO_A, PORT_PIN_15, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, false, PORT_PULL_DOWN);
|
||||
env->power.TPS7B6850QPWPRQ1.WD_EN = vInitGpioPinPull(GPIO_C, PORT_PIN_12, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_HIGH, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// В схеме нет внешней подтяжки (ошибка) !!!
|
||||
env->power.TPS7B6850QPWPRQ1.WDO = vInitGpioPinPull(GPIO_C, PORT_PIN_13, GPIO_IN, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_OPEN_DRAIN, PORT_PULL_DOWN);
|
||||
env->power.TPS7B6850QPWPRQ1.WD = vInitGpioPinPull(GPIO_C, PORT_PIN_14, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_HIGH, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
|
||||
// Контроль напряжения борт-сети (0 - ВКЛ)
|
||||
env->power.PBATT_CK_EN = vInitGpioPinPull(GPIO_C, PORT_PIN_17, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_HIGH, GPIO_PUSH_PULL, PORT_PULL_UP);
|
||||
// Включение 5V (0 - ВКЛ)
|
||||
env->power.SW5V_EN = vInitGpioPinPull(GPIO_C, PORT_PIN_18, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_HIGH, GPIO_PUSH_PULL, PORT_PULL_UP);
|
||||
|
||||
// Канал 0 (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_Motor_Front_EN = vInitGpioPinPull(GPIO_A, PORT_PIN_9, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Разрешение диагностики (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_EN_Diag = vInitGpioPinPull(GPIO_A, PORT_PIN_10, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Вывод диагностики (0 - Канал 0; 1 - Канал 1)
|
||||
env->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_SEL_Diag = vInitGpioPinPull(GPIO_A, PORT_PIN_11, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Канал 1 (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_FrontRearIncarMotor.Incar_Motor_Rear_EN = vInitGpioPinPull(GPIO_A, PORT_PIN_17, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
|
||||
|
||||
// env->led.LED1 = vInitGpioPinPull(GPIO_B, PORT_PIN_8, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, false, PORT_PULL_DOWN);
|
||||
// Канал 0 (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN = vInitGpioPinPull(GPIO_D, PORT_PIN_24, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Разрешение диагностики (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_EN_Diag = vInitGpioPinPull(GPIO_D, PORT_PIN_25, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Вывод диагностики (0 - Канал 0; 1 - Канал 1)
|
||||
env->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.TwoWayValve_SEL_Diag = vInitGpioPinPull(GPIO_D, PORT_PIN_26, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Канал 1 (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_TwoWayValveAndReservePowerSupply.ReservePower_EN = vInitGpioPinPull(GPIO_D, PORT_PIN_27, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
|
||||
|
||||
// Канал 0 (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver1_EN = vInitGpioPinPull(GPIO_C, PORT_PIN_20, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Разрешение диагностики (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver_EN_Diag = vInitGpioPinPull(GPIO_C, PORT_PIN_23, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Вывод диагностики (0 - Канал 0; 1 - Канал 1)
|
||||
env->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver_SEL_Diag = vInitGpioPinPull(GPIO_C, PORT_PIN_24, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Канал 1 (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_2xChannelPTCPower.PtcRelayDriver2_EN = vInitGpioPinPull(GPIO_C, PORT_PIN_21, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
|
||||
|
||||
// Канал 0 (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOffFront_EN = vInitGpioPinPull(GPIO_A, PORT_PIN_20, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Разрешение диагностики (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOff_EN_Diag = vInitGpioPinPull(GPIO_A, PORT_PIN_21, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Вывод диагностики (0 - Канал 0; 1 - Канал 1)
|
||||
env->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutSel_SEL_Diag = vInitGpioPinPull(GPIO_A, PORT_PIN_29, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
// Канал 1 (1 - ВКЛ)
|
||||
env->power.BTS5180_2EKA_ShutOFFValveFrontRear.ShutOffRear_EN = vInitGpioPinPull(GPIO_A, PORT_PIN_30, GPIO_OUT, GPIO_PIN_NOREVERSE, GPIO_LOW, GPIO_PUSH_PULL, PORT_PULL_DOWN);
|
||||
|
||||
|
||||
}
|
||||
63
Gpios.h
63
Gpios.h
|
|
@ -14,8 +14,71 @@ typedef struct {
|
|||
tGpioPin LED3;
|
||||
} tLed;
|
||||
|
||||
typedef struct {
|
||||
tGpioPin WD_EN; // Разрешение работы WD (0 - ВКЛ)
|
||||
tGpioPin WDO; // При возникновении ошибки сторожевого таймера этот вывод подтягивается к низкому уровню напряжения (OpenDrain HIGH)
|
||||
tGpioPin WD; // Watchdog service-signal (подавать меандр не менее 100 мкс)
|
||||
} tTPS7B6850QPWPRQ1;
|
||||
|
||||
|
||||
// Допустим, вы выбрали R_резистора = 1.2 кОм (1200 Ом). Микроконтроллер измерил U_на_резисторе = 1.1 В (U_на_резисторе = ADC_reading * (Vref / 4095)).
|
||||
// Сначала находим ток диагностики: I_IS = U / R = 1.1 В / 1200 Ом ≈ 0.000917 А (0.917 мА).
|
||||
// Затем находим ток нагрузки: I_мотора = I_IS * kILIS = 0.000917 А * 550 ≈ 0.504 А.
|
||||
// kILIS = 550 (константа микросхемы из документации)
|
||||
// Результат: ток через мотор составляет примерно 0.5 А.
|
||||
// IL(NOM)1 - номинальный ток нагрузки при активном одном канале (2А)
|
||||
// IL(NOM)2 - номинальный ток нагрузки при активных двух каналах (1.5А)
|
||||
|
||||
// IL(SC) — ток нагрузки в режиме короткого замыкания (ограниченный схемой защиты)
|
||||
// 5 В Минимум 8 А (типично ~10 А)
|
||||
// 28 В Типично 4 А (IL28(SC))
|
||||
|
||||
// IL(OL) (5-30 mA) — пороговый ток для обнаружения обрыва нагрузки (Open Load), когда канал включен. Если IL < IL(OL), система диагностирует обрыв
|
||||
|
||||
|
||||
typedef struct {
|
||||
tGpioPin Incar_Motor_Front_EN; // Канал 0 (1 - ВКЛ)
|
||||
tGpioPin Incar_EN_Diag; // Разрешение диагностики (1 - ВКЛ)
|
||||
tGpioPin Incar_SEL_Diag; // Вывод диагностики (0 - Канал 0; 1 - Канал 1)
|
||||
tGpioPin Incar_Motor_Rear_EN; // Канал 1 (1 - ВКЛ)
|
||||
} tBTS5180_2EKA_FrontAndRearIncarMotor;
|
||||
|
||||
typedef struct {
|
||||
tGpioPin TwoWayValve_EN; // Канал 0 (1 - ВКЛ)
|
||||
tGpioPin TwoWayValve_EN_Diag; // Разрешение диагностики (1 - ВКЛ)
|
||||
tGpioPin TwoWayValve_SEL_Diag; // Вывод диагностики (0 - Канал 0; 1 - Канал 1)
|
||||
tGpioPin ReservePower_EN; // Канал 1 (1 - ВКЛ)
|
||||
} tBTS5180_2EKA_TwoWayValveAndReservePowerSupply;
|
||||
|
||||
typedef struct {
|
||||
tGpioPin PtcRelayDriver1_EN; // Канал 0 (1 - ВКЛ)
|
||||
tGpioPin PtcRelayDriver_EN_Diag; // Разрешение диагностики (1 - ВКЛ)
|
||||
tGpioPin PtcRelayDriver_SEL_Diag; // Вывод диагностики (0 - Канал 0; 1 - Канал 1)
|
||||
tGpioPin PtcRelayDriver2_EN; // Канал 1 (1 - ВКЛ)
|
||||
} tBTS5180_2EKA_2xChannelPTCPowerControl;
|
||||
|
||||
typedef struct {
|
||||
tGpioPin ShutOffFront_EN; // Канал 0 (1 - ВКЛ)
|
||||
tGpioPin ShutOff_EN_Diag; // Разрешение диагностики (1 - ВКЛ)
|
||||
tGpioPin ShutSel_SEL_Diag; // Вывод диагностики (0 - Канал 0; 1 - Канал 1)
|
||||
tGpioPin ShutOffRear_EN; // Канал 1 (1 - ВКЛ)
|
||||
} tBTS5180_2EKA_ShutOFFValveFrontRear;
|
||||
|
||||
typedef struct {
|
||||
tTPS7B6850QPWPRQ1 TPS7B6850QPWPRQ1;
|
||||
tBTS5180_2EKA_FrontAndRearIncarMotor BTS5180_2EKA_FrontRearIncarMotor;
|
||||
tBTS5180_2EKA_TwoWayValveAndReservePowerSupply BTS5180_2EKA_TwoWayValveAndReservePowerSupply;
|
||||
tBTS5180_2EKA_2xChannelPTCPowerControl BTS5180_2EKA_2xChannelPTCPower;
|
||||
tBTS5180_2EKA_ShutOFFValveFrontRear BTS5180_2EKA_ShutOFFValveFrontRear;
|
||||
tGpioPin PBATT_CK_EN; // Контроль напряжения борт-сети (0 - ВКЛ)
|
||||
tGpioPin SW5V_EN; // Включение 5V (0 - ВКЛ)
|
||||
|
||||
|
||||
} tPower;
|
||||
|
||||
typedef struct {
|
||||
tLed led;
|
||||
tPower power;
|
||||
} tGpios;
|
||||
|
||||
extern tGpios GPIOS;
|
||||
|
|
|
|||
Loading…
Reference in New Issue