RUI3 (RAK Unified Interface 3) - RAK4631
SPI.h
Go to the documentation of this file.
1 #ifndef __SPI_H__
2 #define __SPI_H__
3 
4 #ifdef SUPPORT_SPI
5 
6 #include "udrv_spimst.h"
7 #include "Arduino.h"
8 
9 #define SPI_HAS_TRANSACTION 1
10 
11 #define SPI_MODE0 0x00
12 #define SPI_MODE1 0x01
13 #define SPI_MODE2 0x02
14 #define SPI_MODE3 0x03
15 
16 #define SPI_CLOCK_DIV2 2
17 #define SPI_CLOCK_DIV4 4
18 #define SPI_CLOCK_DIV8 8
19 #define SPI_CLOCK_DIV16 16
20 #define SPI_CLOCK_DIV32 32
21 #define SPI_CLOCK_DIV64 64
22 #define SPI_CLOCK_DIV128 128
23 #define SPI_CLOCK_DIV256 256
24 #define SPI_CLOCK_DIV512 512
25 
27 {
28  private:
29  uint32_t clockFreq;
30  uint8_t dataMode;
31  uint8_t bitOrder;
32  friend class SPIClass;
33 
34  public:
35  SPISettings(uint32_t clock, BitOrder bitOrder, uint8_t dataMode) {
36  this->clockFreq = clock;
37  this->bitOrder = bitOrder;
38  this->dataMode = dataMode;
39  }
40 
42  this->clockFreq = 4000000;
43  this->bitOrder = MSBFIRST;
44  this->dataMode = SPI_MODE0;
45  }
46 
47 };
48 
49 class SPIClass
50 {
51  private:
52  udrv_spimst_port port;
53  bool isInitialized;
54  uint8_t bitOrder;
55 
56  public:
58 
59  uint8_t transfer(uint8_t data);
60  void transfer(const void *tx_buf, void *rx_buf, size_t count);
61 
72  void begin();
73 
80  void end();
81 
89  uint16_t transfer16(uint16_t data);
90 
100  void transfer(void *buf, size_t count);
101 
109  void beginTransaction(SPISettings settings);
110 
117  void endTransaction();
118 
126  void setBitOrder(BitOrder order);
127 
138  void setDataMode(uint8_t mode);
139 
154  void setClockDivider(uint32_t uc_div);
155 
164  void usingInterrupt();
165 
166 };
167 
168 extern SPIClass SPI;
169 
170 #endif //end SPI.h
171 
172 #endif
SPIClass SPI
Definition: SPI.h:26
SPISettings(uint32_t clock, BitOrder bitOrder, uint8_t dataMode)
Definition: SPI.h:35
friend class SPIClass
Definition: SPI.h:32
udrv_spimst_port
Definition: udrv_spimst.h:20
BitOrder
Definition: ruiTop.h:62
Provide a hardware independent SPI master driver layer for API layer to use.
Definition: SPI.h:49
Definition: ruiTop.h:64
#define SPI_MODE0
Definition: SPI.h:11
SPISettings()
Definition: SPI.h:41