From 78a0cd6f3a2e8309fb6137ad79b0718a5d48b7d4 Mon Sep 17 00:00:00 2001 From: cfif Date: Wed, 4 Dec 2024 13:10:48 +0300 Subject: [PATCH] Init --- Gpios.c | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++ Gpios.h | 40 +++++++++++++++++ modular.json | 42 ++++++++++++++++++ 3 files changed, 202 insertions(+) create mode 100644 Gpios.c create mode 100644 Gpios.h create mode 100644 modular.json diff --git a/Gpios.c b/Gpios.c new file mode 100644 index 0000000..e573ba4 --- /dev/null +++ b/Gpios.c @@ -0,0 +1,120 @@ +// +// Created by xemon on 29.08.22. +// +#include "Gpios.h" +#include +#include "SystemDelayInterface.h" + +tGpios GPIOS; + +static void Gpios_InitAudio(tAudioPower *env) { + env->shutdownB = GpioPin_Init(GPIOE, GPIO_PIN_8, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->shutdownD = GpioPin_Init(GPIOE, GPIO_PIN_9, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + + env->gain = GpioPin_Init(GPIOE, GPIO_PIN_10, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->mic = GpioPin_Init(GPIOE, GPIO_PIN_11, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +} + +#ifdef USE_GSM_AND_GNSS_TELIT +static void Gpios_InitTelit(tTelitPower *env) { + //env->charge.ChargeC = GpioPin_Init(GPIOD, GPIO_PIN_1, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_REVERSE); + env->charge.power = GpioPin_Init(GPIOC, GPIO_PIN_6, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->charge.onOff = GpioPin_Init(GPIOA, GPIO_PIN_10, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->ring = GpioPin_Init(GPIOE, GPIO_PIN_12, GPIO_Mode_IN_FLOATING, GPIO_Speed_50MHz, GPIO_PIN_REVERSE); + +// env->discharge.chargeCapacitors = InitGpioPin(GPIO?, GPIO_PIN_?, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +// env->discharge.chargeCapacitorsDNI = InitGpioPin(GPIO?, GPIO_PIN_?, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +} +#endif + + +static void Gpios_InitBIP(tBipPins *env) { +#if USE_POLAR_DEPENDENT_BIP + env->uiLeds.red.positiv = GpioPin_Init(GPIOE, GPIO_PIN_13, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); //- + env->uiLeds.red.negativ = GpioPin_Init(GPIOE, GPIO_PIN_2, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); //+ + + env->uiLeds.green.positiv = GpioPin_Init(GPIOE, GPIO_PIN_14, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->uiLeds.green.negativ = GpioPin_Init(GPIOE, GPIO_PIN_3, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + + env->powerBip.ignitionOn = GpioPin_Init(GPIOC, GPIO_PIN_7, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +// env->powerBip.bacLightOn = GpioPin_Init(GPIOE, GPIO_PIN_4, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +#else + env->led.green = GpioPin_Init(GPIOE, GPIO_PIN_3, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->led.red = GpioPin_Init(GPIOE, GPIO_PIN_2, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +#endif + + env->powerMicLed = GpioPin_Init(GPIOA, GPIO_PIN_9, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->buttons.additional = GpioPin_Init( + GPIOE, GPIO_PIN_6, GPIO_Mode_IN_FLOATING, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE + ); + + env->buttons.emergency = GpioPin_Init( + GPIOE, GPIO_PIN_5, GPIO_Mode_IN_FLOATING, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE + ); +} + +static void Gpios_InitComInt485(tRs485DirectionPins *env) { + env->transmit = GpioPin_Init(GPIOC, GPIO_PIN_12, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->receive = GpioPin_Init(GPIOE, GPIO_PIN_0, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_REVERSE); +} + +static void Gpios_InitOnBoardLed(tOnBoardLed *env) { + env->green = GpioPin_Init(GPIOD, GPIO_PIN_13, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->blue = GpioPin_Init(GPIOD, GPIO_PIN_14, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->red = GpioPin_Init(GPIOD, GPIO_PIN_15, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +} + +static void Gpios_InitAccelPower(tAccelPins *env) { + env->spiChipSelect = GpioPin_Init(GPIOB, GPIO_PIN_12, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_REVERSE); + env->int1 = GpioPin_Init(GPIOB, GPIO_PIN_10, GPIO_Mode_IN_FLOATING, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +} + +static void Gpios_InitFlashPower(tFlashPins *env) { + env->spiChipSelect = GpioPin_Init(GPIOD, GPIO_PIN_0, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_REVERSE); +} + +static void Gpios_InitMainPower(tMainPower *env) { + + GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_SW_ENABLE, ENABLE); +///======== var_01 +// env->garage = GpioPin_Init(GPIOB, GPIO_PIN_3, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +// env->ecall = GpioPin_Init(GPIOB, GPIO_PIN_4, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +///======== var_02 + env->garage = GpioPin_Init(GPIOA, GPIO_PIN_3, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->ecall = GpioPin_Init(GPIOA, GPIO_PIN_4, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + + env->muteP = GpioPin_Init(GPIOB, GPIO_PIN_5, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->muteN = GpioPin_Init(GPIOB, GPIO_PIN_2, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + + env->ignition = GpioPin_Init(GPIOE, GPIO_PIN_1, GPIO_Mode_IN_FLOATING, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->standby = GpioPin_Init(GPIOD, GPIO_PIN_12, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + + env->inAnt = GpioPin_Init(GPIOC, GPIO_PIN_5, GPIO_Mode_Out_OD, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +} + +static void Gpios_InitBattery(tBatteryPower *env) { + env->enable = GpioPin_Init(GPIOC, GPIO_PIN_8, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->charge = GpioPin_Init(GPIOB, GPIO_PIN_0, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); +} + +static void Gpios_InitPower(tPowerPins *env) { + env->comInt485 = GpioPin_Init(GPIOE, GPIO_PIN_7, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->bip = GpioPin_Init(GPIOA, GPIO_PIN_9, GPIO_Mode_Out_PP, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + env->usb = GpioPin_Init(GPIOA, GPIO_PIN_15, GPIO_Mode_IN_FLOATING, GPIO_Speed_50MHz, GPIO_PIN_NOREVERSE); + Gpios_InitTelit(&env->telit); + + Gpios_InitAudio(&env->audio); + Gpios_InitMainPower(&env->main); + Gpios_InitBattery(&env->battery); +} + +void Gpios_Init() { + tGpios *env = &GPIOS; + Gpios_InitFlashPower(&env->flash); + Gpios_InitAccelPower(&env->accel); + Gpios_InitOnBoardLed(&env->onBoardLed); + Gpios_InitComInt485(&env->comIntDir); + Gpios_InitBIP(&env->bip); + + Gpios_InitPower(&env->power); +} \ No newline at end of file diff --git a/Gpios.h b/Gpios.h new file mode 100644 index 0000000..d3fb2d4 --- /dev/null +++ b/Gpios.h @@ -0,0 +1,40 @@ +// +// Created by xemon on 29.08.22. +// + +#ifndef UVEOS_DEMO_ON_NIIET_MCU_Gpios_H +#define UVEOS_DEMO_ON_NIIET_MCU_Gpios_H + +#include +#include +#include "GpioPin.h" +#include "UserInput.h" +#include "UserIndication.h" +#include "SpiPorts.h" + +typedef struct { + tGpioPin powerMicLed; +#if USE_POLAR_DEPENDENT_BIP + tIndicationBip uiLeds; + tPowerBip powerBip; +#else + tBipLed led; +#endif + tUserInputPins buttons; +} tBipPins; + +typedef struct { + tAccelPins accel; + tFlashPins flash; + tOnBoardLed onBoardLed; + tBipPins bip; + tRs485DirectionPins comIntDir; + + tPowerPins power; +} tGpios; + +extern tGpios GPIOS; + +void Gpios_Init(); + +#endif //UVEOS_DEMO_ON_NIIET_MCU_Gpios_H diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..48d4879 --- /dev/null +++ b/modular.json @@ -0,0 +1,42 @@ +{ + "dep": [ + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "GpioPin_NATION_N32G45X" + }, + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "SystemDelay_CMSIS_RTOS" + }, + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "UveosOnNation_VEGA_SerialPorts" + }, + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "UveosOnNation_VEGA_UserIndication" + }, + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "UveosOnNation_VEGA_UserInput" + }, + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "UveosOnNation_VEGA_SpiPorts" + } + ], + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "Gpios.c" + ] + } +} \ No newline at end of file