// // 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); }