furi-hal-spi-config.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include <furi-hal-gpio.h>
  3. #include <stm32wbxx_ll_spi.h>
  4. #include <cmsis_os2.h>
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. extern const LL_SPI_InitTypeDef furi_hal_spi_config_nfc;
  9. extern const LL_SPI_InitTypeDef furi_hal_spi_config_subghz;
  10. extern const LL_SPI_InitTypeDef furi_hal_spi_config_display;
  11. extern const LL_SPI_InitTypeDef furi_hal_spi_config_sd_fast;
  12. extern const LL_SPI_InitTypeDef furi_hal_spi_config_sd_slow;
  13. /** FURI HAL SPI BUS handler
  14. * Structure content may change at some point
  15. */
  16. typedef struct {
  17. const SPI_TypeDef* spi;
  18. const osMutexId_t* mutex;
  19. const GpioPin* miso;
  20. const GpioPin* mosi;
  21. const GpioPin* clk;
  22. } FuriHalSpiBus;
  23. /** FURI HAL SPI Device handler
  24. * Structure content may change at some point
  25. */
  26. typedef struct {
  27. const FuriHalSpiBus* bus;
  28. const LL_SPI_InitTypeDef* config;
  29. const GpioPin* chip_select;
  30. } FuriHalSpiDevice;
  31. /** FURI HAL SPI Standard Device IDs */
  32. typedef enum {
  33. FuriHalSpiDeviceIdSubGhz, /** SubGhz: CC1101, non-standard SPI usage */
  34. FuriHalSpiDeviceIdDisplay, /** Display: ERC12864, only have MOSI */
  35. FuriHalSpiDeviceIdSdCardFast, /** SDCARD: fast mode, after initialization */
  36. FuriHalSpiDeviceIdSdCardSlow, /** SDCARD: slow mode, before initialization */
  37. FuriHalSpiDeviceIdNfc, /** NFC: ST25R3916, pretty standard, but RFAL makes it complex */
  38. FuriHalSpiDeviceIdMax, /** Service Value, do not use */
  39. } FuriHalSpiDeviceId;
  40. /** Furi Hal Spi Bus R
  41. * CC1101, Nfc
  42. */
  43. extern const FuriHalSpiBus spi_r;
  44. /** Furi Hal Spi Bus D
  45. * Display, SdCard
  46. */
  47. extern const FuriHalSpiBus spi_d;
  48. /** Furi Hal Spi devices */
  49. extern const FuriHalSpiDevice furi_hal_spi_devices[FuriHalSpiDeviceIdMax];
  50. #ifdef __cplusplus
  51. }
  52. #endif