/* * peripherial.c * * Created on: Sep 10, 2024 * Author: jakubski */ #include "peripherial.h" void DbgLEDOn(uint8_t ledNumber) { HAL_GPIO_WritePin(GPIOD, ledNumber, GPIO_PIN_SET); } void DbgLEDOff(uint8_t ledNumber) { HAL_GPIO_WritePin(GPIOD, ledNumber, GPIO_PIN_RESET); } void DbgLEDToggle(uint8_t ledNumber) { HAL_GPIO_TogglePin(GPIOD, ledNumber); } void EnableCurrentSensors(void) { HAL_GPIO_WritePin(GPIOE, MCU_CS_PWR_EN, GPIO_PIN_SET); } void DisableCurrentSensors(void) { HAL_GPIO_WritePin(GPIOE, MCU_CS_PWR_EN, GPIO_PIN_RESET); } void SelectCurrentSensorGain(CurrentSensor sensor, CurrentSensorGain gain) { uint8_t gpioOffset = 0; switch(sensor) { case CurrentSensorL1: gpioOffset = CURRENT_SENSOR_L1_GPIO_OFFSET; break; case CurrentSensorL2: gpioOffset = CURRENT_SENSOR_L2_GPIO_OFFSET; break; case CurrentSensorL3: gpioOffset = CURRENT_SENSOR_L3_GPIO_OFFSET; break; default: break; } if(gpioOffset > 0) { uint16_t gain0Gpio = 1 << gpioOffset; uint16_t gain1Gpio = 1 << (gpioOffset + 1); uint16_t gpioState = ((uint16_t)gain) & 0x0001; HAL_GPIO_WritePin(GPIOE, gain0Gpio, gpioState); gpioState = (((uint16_t)gain) >> 1) & 0x0001; HAL_GPIO_WritePin(GPIOE, gain1Gpio, gpioState); } }