furi-hal-spi-config.h 1.6 KB

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