diff options
Diffstat (limited to 'firmware/targets/f6/furi_hal/furi_hal_sd.c')
-rw-r--r-- | firmware/targets/f6/furi_hal/furi_hal_sd.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/firmware/targets/f6/furi_hal/furi_hal_sd.c b/firmware/targets/f6/furi_hal/furi_hal_sd.c new file mode 100644 index 00000000..c62b4aa5 --- /dev/null +++ b/firmware/targets/f6/furi_hal/furi_hal_sd.c @@ -0,0 +1,24 @@ +#include "furi_hal_sd.h" +#include <stm32wbxx_ll_gpio.h> +#include <furi.h> + +void hal_sd_detect_init(void) { + // low speed input with pullup + LL_GPIO_SetPinMode(SD_CD_GPIO_Port, SD_CD_Pin, LL_GPIO_MODE_INPUT); + LL_GPIO_SetPinSpeed(SD_CD_GPIO_Port, SD_CD_Pin, LL_GPIO_SPEED_FREQ_LOW); + LL_GPIO_SetPinPull(SD_CD_GPIO_Port, SD_CD_Pin, LL_GPIO_PULL_UP); +} + +void hal_sd_detect_set_low(void) { + // low speed input with pullup + LL_GPIO_SetPinMode(SD_CD_GPIO_Port, SD_CD_Pin, LL_GPIO_MODE_OUTPUT); + LL_GPIO_SetPinOutputType(SD_CD_GPIO_Port, SD_CD_Pin, LL_GPIO_OUTPUT_OPENDRAIN); + LL_GPIO_ResetOutputPin(SD_CD_GPIO_Port, SD_CD_Pin); +} + +bool hal_sd_detect(void) { + bool result = !(LL_GPIO_IsInputPinSet(SD_CD_GPIO_Port, SD_CD_Pin)); + return result; +} + +FuriHalSpiBusHandle* furi_hal_sd_spi_handle = NULL; |