GONEC_ARTERY_GpioPins/Gpios.c

100 lines
4.1 KiB
C

//
// Created by xemon on 29.08.22.
//
#include "Gpios.h"
#include <SpiPorts.h>
#include "SystemDelayInterface.h"
tGpios GPIOS;
static void vPowerManagementInitComInt485(tRs485DirectionPins *env) {
env->transmit = InitGpioPin(GPIOD, GPIO_PINS_4, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->receive = InitGpioPin(GPIOD, GPIO_PINS_4, GPIO_MODE_OUTPUT, GPIO_PIN_REVERSE);
}
static void Gpios_InitFlash(tFlashPins *env) {
env->spiChipSelect1 = InitGpioPin(GPIOD, GPIO_PINS_15, GPIO_MODE_OUTPUT, GPIO_PIN_REVERSE);
env->spiChipSelect2 = InitGpioPin(GPIOD, GPIO_PINS_14, GPIO_MODE_OUTPUT, GPIO_PIN_REVERSE);
env->spiHold = InitGpioPin(GPIOG, GPIO_PINS_6, GPIO_MODE_OUTPUT, GPIO_PIN_REVERSE);
env->spiWp = InitGpioPin(GPIOG, GPIO_PINS_4, GPIO_MODE_OUTPUT, GPIO_PIN_REVERSE);
}
static void Gpios_InitSIM800F(tSIM800FPower *env) {
env->pwrkey = InitGpioPin(GPIOF, GPIO_PINS_10, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->reset = InitGpioPin(GPIOA, GPIO_PINS_4, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->pwr_en = InitGpioPin(GPIOG, GPIO_PINS_0, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->dtr_sleep = InitGpioPin(GPIOA, GPIO_PINS_5, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
}
static void Gpios_InitPRO04(tPRO04Power *env) {
env->onOff = InitGpioPin(GPIOF, GPIO_PINS_1, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->reset = InitGpioPin(GPIOF, GPIO_PINS_0, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->pwr_en = InitGpioPin(GPIOC, GPIO_PINS_13, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
}
static void Gpios_Power(tPower *env) {
// env->gpio1 = InitGpioPin(GPIOE, GPIO_PINS_4, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
// env->gpio4 = InitGpioPin(GPIOE, GPIO_PINS_2, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
/*
gpio_init_type GPIOInit;
gpio_default_para_init(&GPIOInit);
GPIOInit.gpio_mode = GPIO_MODE_INPUT;
GPIOInit.gpio_pull = GPIO_PULL_NONE;
GPIOInit.gpio_pins = GPIO_PINS_4;
gpio_init(GPIOE, &GPIOInit);
GPIOInit.gpio_mode = GPIO_MODE_INPUT;
GPIOInit.gpio_pull = GPIO_PULL_NONE;
GPIOInit.gpio_pins = GPIO_PINS_2;
gpio_init(GPIOE, &GPIOInit);
*/
env->gonec_pwr_amp = InitGpioPinPull(GPIOE, GPIO_PINS_6, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE, GPIO_PULL_DOWN);
env->gonec_boot = InitGpioPin(GPIOE, GPIO_PINS_5, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->gonec_reset = InitGpioPinPull(GPIOE, GPIO_PINS_3, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE, GPIO_PULL_UP);
// env->gonec_reset = InitGpioPin(GPIOE, GPIO_PINS_3, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
// env->gonec_reset = InitGpioPinOpenDrain(GPIOE, GPIO_PINS_3, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
env->tx_pwr_5 = InitGpioPin(GPIOB, GPIO_PINS_6, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->tx_pwr_en = InitGpioPin(GPIOB, GPIO_PINS_9, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->tx_pwr_good = InitGpioPin(GPIOB, GPIO_PINS_5, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
env->discretOut1_pd3 = InitGpioPin(GPIOD, GPIO_PINS_3, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
env->discretOut1_pd0 = InitGpioPin(GPIOD, GPIO_PINS_2, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
// env->discretIn1_pg2 = InitGpioPinPull(GPIOG, GPIO_PINS_2, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE, GPIO_PULL_UP);
env->discretIn1_pg2 = InitGpioPin(GPIOG, GPIO_PINS_2, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
env->discretIn1_pg3 = InitGpioPin(GPIOG, GPIO_PINS_3, GPIO_MODE_INPUT, GPIO_PIN_NOREVERSE);
}
void Gpios_Init() {
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);
tGpios *env = &GPIOS;
vPowerManagementInitComInt485(&env->comIntDir);
Gpios_InitFlash(&env->flashSPI);
Gpios_InitSIM800F(&env->SIM800FPower);
Gpios_InitPRO04(&env->PRO04Power);
Gpios_Power(&env->Power);
}