From 1700231cec58005bf9caf8973421f9fe92b92a6a Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 24 Jan 2025 13:22:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BD=D0=BE=D0=B2=D1=83=D1=8E=20=D0=BE=D1=80?= =?UTF-8?q?=D0=B3=D0=B0=D0=BD=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8E=20GONEC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PowerManagement.c | 62 +++++++++++++++++++++++++++++++++++++++++++++ PowerManagement.h | 64 +++++++++++++++++++++++++++++++++++++++++++++++ modular.json | 10 ++++++++ 3 files changed, 136 insertions(+) create mode 100644 PowerManagement.c create mode 100644 PowerManagement.h create mode 100644 modular.json diff --git a/PowerManagement.c b/PowerManagement.c new file mode 100644 index 0000000..16a9169 --- /dev/null +++ b/PowerManagement.c @@ -0,0 +1,62 @@ +// +// Created by cfif on 15.11.22. +// +#include +#include "PowerManagement.h" + +void Pwm_Init( + tPowerManagement *env, + tPower *Power, + tSIM800FPower *SIM800FPower, + tPRO04Power *PRO04Power +) { + env->Power = Power; + env->SIM800FPower = SIM800FPower; + env->PRO04Power = PRO04Power; +} + +void Pwm_Power(tPowerManagement *env) { +// GpioPinSet(&env->Power->discretOut1_pd3, true); + GpioPinSet(&env->Power->discretOut1_pd0, true); + + GpioPinSet(&env->Power->gonec_boot, false); + + GpioPinSet(&env->Power->gonec_reset, true); + + + GpioPinSet(&env->Power->tx_pwr_5, true); + GpioPinSet(&env->Power->tx_pwr_en, false); +} + +void Pwm_PRO04Startup(tPowerManagement *env) { + GpioPinSet(&env->PRO04Power->reset, false); + GpioPinSet(&env->PRO04Power->onOff, false); + GpioPinSet(&env->PRO04Power->pwr_en, false); + + SystemDelayMs(50); + GpioPinSet(&env->PRO04Power->onOff, true); + SystemDelayMs(50); + GpioPinSet(&env->PRO04Power->reset, true); + SystemDelayMs(50); +} + +void Pwm_SIM800FStartup(tPowerManagement *env) { + + // Sleep + GpioPinSet(&env->SIM800FPower->dtr_sleep, false); + // Reset + GpioPinSet(&env->SIM800FPower->reset, true); + // Рабочее состояние + GpioPinSet(&env->SIM800FPower->pwrkey, false); + // Подача питания + GpioPinSet(&env->SIM800FPower->pwr_en, true); + + SystemDelayMs(50); + // Включение + GpioPinSet(&env->SIM800FPower->pwrkey, true); + SystemDelayMs(1000); + // Возврат в рабочее состояние + GpioPinSet(&env->SIM800FPower->pwrkey, false); + SystemDelayMs(50); + +} diff --git a/PowerManagement.h b/PowerManagement.h new file mode 100644 index 0000000..3d1afc1 --- /dev/null +++ b/PowerManagement.h @@ -0,0 +1,64 @@ +// +// Created by cfif on 27.09.22. +// + +#ifndef POWERMANAGEMENT_H +#define POWERMANAGEMENT_H + +#include "SerialPorts.h" +#include "stdint.h" +#include "GpioPin.h" +#include "SpiPorts.h" + +typedef struct { + tGpioPin pwrkey; + tGpioPin reset; + tGpioPin pwr_en; + tGpioPin dtr_sleep; +} tSIM800FPower; + +typedef struct { + tGpioPin onOff; + tGpioPin reset; + tGpioPin pwr_en; +} tPRO04Power; + +typedef struct { + tGpioPin gpio1; + tGpioPin gpio4; + + tGpioPin gonec_pwr_amp; +// tGpioPin gonec_is_prm; + tGpioPin gonec_boot; + + tGpioPin gonec_reset; + tGpioPin tx_pwr_en; + tGpioPin tx_pwr_5; + tGpioPin tx_pwr_good; + + tGpioPin discretOut1_pd3; + tGpioPin discretOut1_pd0; + + tGpioPin discretIn1_pg3; + tGpioPin discretIn1_pg2; + +} tPower; + +typedef struct { + tSIM800FPower *SIM800FPower; + tPRO04Power *PRO04Power; + tPower *Power; +} tPowerManagement; + +void Pwm_Init( + tPowerManagement *env, + tPower *Power, + tSIM800FPower *SIM800FPower, + tPRO04Power *PRO04Power +); + +void Pwm_Power(tPowerManagement *env); +void Pwm_SIM800FStartup(tPowerManagement *env); +void Pwm_PRO04Startup(tPowerManagement *env); + +#endif //POWERMANAGEMENT_H diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..0dd1901 --- /dev/null +++ b/modular.json @@ -0,0 +1,10 @@ +{ + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "./**.c" + ] + } +} \ No newline at end of file