This commit is contained in:
cfif 2025-06-02 13:26:40 +03:00
commit edc6ddb3c7
3 changed files with 175 additions and 0 deletions

126
Gpios.c Normal file
View File

@ -0,0 +1,126 @@
//
// Created by ilya on 22.03.24.
//
#include "Gpios.h"
#include <SpiPorts.h>
#include "SystemDelayInterface.h"
#include "PwmSim7600e.h"
tGpios GPIOS;
void Gpios_InitMainPower(tMainPower *env){
env->ecallOut= InitGpioPin(GPIOB, GPIO_PINS_2, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->garage = InitGpioPin(GPIOE, GPIO_PINS_7, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->muteP = InitGpioPin(GPIOD, GPIO_PINS_11, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->muteN = InitGpioPin(GPIOE, GPIO_PINS_8, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->Power12V = InitGpioPinOpenDrain(GPIOE, GPIO_PINS_13, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->inAnt = InitGpioPin(GPIOC, GPIO_PINS_6, GPIO_MODE_OUTPUT, GPIO_PIN_REVERSE);
env->ignition = InitGpioPin(GPIOD, GPIO_PINS_10, GPIO_MODE_INPUT, GPIO_PIN_REVERSE);
env->standby = InitGpioPin(GPIOD, GPIO_PINS_14, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
}
void Gpios_CanStandby(tCanStandby *env) {
env->can1_standby = InitGpioPin(GPIOD, GPIO_PINS_3, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->can2_standby = InitGpioPin(GPIOB, GPIO_PINS_7, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
}
static void Gpios_InitBattery(tBatteryPower *env) {
env->enable = InitGpioPin(GPIOD, GPIO_PINS_2, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->charge =InitGpioPin(GPIOC, GPIO_PINS_10, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
}
static void Gpios_InitBIP(tBipPins *env) {
crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);
env->led.ledsBip = InitGpioPin(GPIOE, GPIO_PINS_14, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->led.red = InitGpioPin(GPIOA, GPIO_PINS_5, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->led.green = InitGpioPin(GPIOA, GPIO_PINS_6, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->Backlight = InitGpioPin(GPIOA, GPIO_PINS_4, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->Diagnost = InitGpioPin(GPIOC, GPIO_PINS_4, GPIO_MODE_INPUT, GPIO_PIN_REVERSE);
env->buttons.additional = InitGpioPin(GPIOE, GPIO_PINS_1, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
env->buttons.emergency = InitGpioPin(GPIOE, GPIO_PINS_0, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
env->lastTestTime = 0;
GpioPinSet(&env->led.green, false);
GpioPinSet(&env->led.red, true);
}
void Gpios_DeviceLeds(tOnBoardLed *env){
env->red1 = InitGpioPin(GPIOE, GPIO_PINS_2, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->green1 = InitGpioPin(GPIOE, GPIO_PINS_3, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->red2 = InitGpioPin(GPIOE, GPIO_PINS_4, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->green2 = InitGpioPin(GPIOE, GPIO_PINS_5, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
}
void Gpios_InitSim7600(tSim7600ePower *env) {
env->gsm.powerKey = InitGpioPin(GPIOE, GPIO_PINS_11, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->gsm.PowerGsm = InitGpioPin(GPIOA, GPIO_PINS_8, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->gsm.PowerCheckGsm = InitGpioPin(GPIOA, GPIO_PINS_10, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
env->powerStatus = InitGpioPin(GPIOA, GPIO_PINS_9, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
env->reset = InitGpioPin(GPIOE, GPIO_PINS_10, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
env->SimSelector = InitGpioPin(GPIOD, GPIO_PINS_15, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
}
void Gpios_AccelPins(tAccelPins *env){
env->spiChipSelect = InitGpioPin(GPIOB, GPIO_PINS_12, GPIO_MODE_OUTPUT, GPIO_PIN_REVERSE);
env->int1 = InitGpioPin(GPIOA, GPIO_PINS_11, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
env->int2 = InitGpioPin(GPIOA, GPIO_PINS_12, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
}
void Gpios_RS485DirectionPins(tRs485DirectionPins *env){
env->transmit = InitGpioPin(GPIOB, GPIO_PINS_8, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->receive = InitGpioPin(GPIOB, GPIO_PINS_9, GPIO_MODE_OUTPUT, GPIO_PIN_REVERSE);
}
void Gpios_InitAudio(tAudioPower *env){
env->resetAmp = InitGpioPin(GPIOB, GPIO_PINS_0, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
// env->powerAmp = InitGpioPinOpenDrain(GPIOE, GPIO_PINS_12, GPIO_MODE_OUTPUT, GPIO_PIN_REVERSE);
}
void Gpios_InitTestAudio(tSpekTestPower *env){
env->PowerCheckSpkOn = InitGpioPinOpenDrain(GPIOA, GPIO_PINS_7, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->PowerTestSpkIn = InitGpioPin(GPIOC, GPIO_PINS_5, GPIO_MODE_INPUT, GPIO_PIN_REVERSE);
env->speakTestAcsess = true;
}
static void Gpios_InitPower(tPowerSusystem *env) {
env->PowerRS485 = InitGpioPin(GPIOC, GPIO_PINS_3, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
Gpios_InitTestAudio(&env->SpekTestPower);
Gpios_InitSim7600(&env->sim7600);
Gpios_InitAudio(&env->audio);
Gpios_InitMainPower(&env->main);
Gpios_InitBattery(&env->battery);
}
void Gpios_ClcInit() {
crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOD_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOE_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOF_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOH_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOG_PERIPH_CLOCK, TRUE);
}
void Gpios_Init() {
Gpios_ClcInit();
tGpios *env = &GPIOS;
Gpios_AccelPins(&env->accel);
Gpios_DeviceLeds(&env->onBoardLed);
Gpios_RS485DirectionPins(&env->comIntDir);
Gpios_InitBIP(&env->bip);
Gpios_InitPower(&env->powerSusystem);
Gpios_InitAudio(&env->powerSusystem.audio);
Gpios_InitSim7600(&env->powerSusystem.sim7600);
Gpios_CanStandby(&env->powerSusystem.canStandby);
}

39
Gpios.h Normal file
View File

@ -0,0 +1,39 @@
//
// Created by ilya on 22.03.24.
//
#ifndef SMART_COMPONENTS_GPIOS_H
#define SMART_COMPONENTS_GPIOS_H
#include <SerialPorts.h>
//#include "PowerManagement.h"
#include "UserInput.h"
#include "UserIndication.h"
#include "SpiPorts.h"
#include "PowerManagment.h"
//#include "PowerManagment.h"
typedef struct {
tBipLed led;
tUserInputPins buttons;
tGpioPin Backlight;
tGpioPin Power;
tGpioPin Diagnost;
uint16_t lastTestTime;
} tBipPins;
typedef struct {
tAccelPins accel;
tFlashPins flash;
tOnBoardLed onBoardLed;
tBipPins bip;
tRs485DirectionPins comIntDir;
tPowerSusystem powerSusystem;
} tGpios;
extern tGpios GPIOS;
void Gpios_Init();
void Gpios_CanStandby(tCanStandby *env);
#endif //SMART_COMPONENTS_GPIOS_H

10
modular.json Normal file
View File

@ -0,0 +1,10 @@
{
"cmake": {
"inc_dirs": [
"./"
],
"srcs": [
"./**.c"
]
}
}