stm32f103
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
spi.h
Go to the documentation of this file.
1 #ifndef STM32F103_CORE_SPI_H_
2 #define STM32F103_CORE_SPI_H_
3 
4 #include <memory>
5 
6 #include <stm32f10x_spi.h>
7 
8 #include "gpio.h"
9 #include "util.h"
10 
14 class SPI {
15  public:
19  struct Config {
23  SPI_TypeDef* spi;
27  uint32_t rcc;
44  };
45 
51  explicit SPI(const Config& config);
52 
53  char Transfer(char byte);
54 
58  void Enable();
62  void Disable();
63 
64  protected:
68  void Init();
69 
70  private:
71  SPI_TypeDef* spi_;
72  uint32_t rcc_;
73  std::unique_ptr<GPIO> sck_ = nullptr;
74  std::unique_ptr<GPIO> miso_ = nullptr;
75  std::unique_ptr<GPIO> mosi_ = nullptr;
76  std::unique_ptr<GPIO> ss_ = nullptr;
77 };
78 
79 #endif // STM32F103_CORE_SPI_H_
Pin mosi
Master Input -> Slave Output Pin.
Definition: spi.h:39
SPI(const Config &config)
Constructor for SPI.
Definition: spi.cpp:8
Pin miso
Master Output -> Slave Input Pin.
Definition: spi.h:35
void Init()
Performs initialization for this SPI bus.
Definition: spi.cpp:43
Implements an abstraction layer for SPI.
Definition: spi.h:14
std::pair< GPIO_TypeDef *, uint16_t > Pin
Type definition for a single pin.
Definition: util.h:16
void Disable()
Disables the SPI bus.
Definition: spi.cpp:77
Pin sck
Serial Clock Pin.
Definition: spi.h:31
void Enable()
Enables the SPI bus.
Definition: spi.cpp:73
uint32_t rcc
RCC: Reset & Clock Control.
Definition: spi.h:27
SPI_TypeDef * spi
SPI Bus.
Definition: spi.h:23
Pin ss
Slave Select Pin.
Definition: spi.h:43
char Transfer(char byte)
Definition: spi.cpp:65
Configuration for individual SPI.
Definition: spi.h:19