// // Created by xemon on 29.08.22. // #include "Gpios.h" #include #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); }