api-hal-spi-config.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #pragma once
  2. #include <api-hal-gpio.h>
  3. #include <cmsis_os2.h>
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. extern const SPI_InitTypeDef api_hal_spi_config_nfc;
  8. extern const SPI_InitTypeDef api_hal_spi_config_subghz;
  9. extern const SPI_InitTypeDef api_hal_spi_config_display;
  10. /** API HAL SPI BUS handler
  11. * Structure content may change at some point
  12. */
  13. typedef struct {
  14. const SPI_HandleTypeDef* spi;
  15. const osMutexId_t* mutex;
  16. const GpioPin* miso;
  17. const GpioPin* mosi;
  18. const GpioPin* clk;
  19. } ApiHalSpiBus;
  20. /** API HAL SPI Device handler
  21. * Structure content may change at some point
  22. */
  23. typedef struct {
  24. const ApiHalSpiBus* bus;
  25. const SPI_InitTypeDef* config;
  26. const GpioPin* chip_select;
  27. } ApiHalSpiDevice;
  28. /** API HAL SPI Standard Device IDs */
  29. typedef enum {
  30. ApiHalSpiDeviceIdSubGhz, /** SubGhz: CC1101, non-standard SPI usage */
  31. ApiHalSpiDeviceIdDisplay, /** Display: ERC12864, only have MOSI */
  32. ApiHalSpiDeviceIdSdCard, /** SDCARD: no default bus config, bus must explicitly be configured */
  33. ApiHalSpiDeviceIdNfc, /** NFC: ST25R3916, pretty standard, but RFAL makes it complex */
  34. ApiHalSpiDeviceIdMax, /** Service Value, do not use */
  35. } ApiHalSpiDeviceId;
  36. /** Api Hal Spi Bus R
  37. * CC1101, Nfc
  38. */
  39. extern const ApiHalSpiBus spi_r;
  40. /** Api Hal Spi Bus D
  41. * Display, SdCard
  42. */
  43. extern const ApiHalSpiBus spi_d;
  44. /** Api Hal Spi devices */
  45. extern const ApiHalSpiDevice api_hal_spi_devices[ApiHalSpiDeviceIdMax];
  46. typedef struct {
  47. const ApiHalSpiBus* bus;
  48. const SPI_InitTypeDef config;
  49. } SPIDevice;
  50. extern const SPIDevice sd_fast_spi;
  51. extern const SPIDevice sd_slow_spi;
  52. #ifdef __cplusplus
  53. }
  54. #endif