furi-hal-spi-config.h 1.8 KB

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