api-hal-sd.c 897 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include <api-hal-sd.h>
  2. #include <api-hal-spi.h>
  3. #include <api-hal-resources.h>
  4. #include <api-hal-delay.h>
  5. #include <furi.h>
  6. void hal_sd_detect_init(void) {
  7. // nothing to do
  8. }
  9. void hal_sd_detect_set_low(void) {
  10. // nothing to do
  11. }
  12. bool hal_sd_detect(void) {
  13. bool result = false;
  14. // TODO open record
  15. const GpioPin* sd_cs_record = &sd_cs_gpio;
  16. // TODO: SPI manager
  17. api_hal_spi_lock(sd_fast_spi.spi);
  18. // configure pin as input
  19. gpio_init_ex(sd_cs_record, GpioModeInput, GpioPullUp, GpioSpeedVeryHigh);
  20. delay(1);
  21. // if gpio_read == 0 return true else return false
  22. result = !gpio_read(sd_cs_record);
  23. // configure pin back
  24. gpio_init_ex(sd_cs_record, GpioModeOutputPushPull, GpioPullNo, GpioSpeedVeryHigh);
  25. gpio_write(sd_cs_record, 1);
  26. delay(1);
  27. // TODO: SPI manager
  28. api_hal_spi_unlock(sd_fast_spi.spi);
  29. return result;
  30. }