15
15
*/
16
16
#include < SPI.h>
17
17
18
+ // Define ALTERNATE_PINS to use non-standard GPIO pins for SPI bus
19
+
20
+ #ifdef ALTERNATE_PINS
21
+ #define VSPI_MISO 2
22
+ #define VSPI_MOSI 4
23
+ #define VSPI_SCLK 0
24
+ #define VSPI_SS 33
25
+
26
+ #define HSPI_MISO 26
27
+ #define HSPI_MOSI 27
28
+ #define HSPI_SCLK 25
29
+ #define HSPI_SS 32
30
+ #else
31
+ #define VSPI_MISO MISO
32
+ #define VSPI_MOSI MOSI
33
+ #define VSPI_SCLK SCK
34
+ #define VSPI_SS SS
35
+
36
+ #define HSPI_MISO 12
37
+ #define HSPI_MOSI 13
38
+ #define HSPI_SCLK 14
39
+ #define HSPI_SS 15
40
+ #endif
41
+
18
42
static const int spiClk = 1000000 ; // 1 MHz
19
43
20
44
// uninitalised pointers to SPI objects
@@ -28,22 +52,28 @@ void setup() {
28
52
29
53
// clock miso mosi ss
30
54
55
+ #ifndef ALTERNATE_PINS
31
56
// initialise vspi with default pins
32
57
// SCLK = 18, MISO = 19, MOSI = 23, SS = 5
33
58
vspi->begin ();
59
+ #else
34
60
// alternatively route through GPIO pins of your choice
35
- // hspi->begin(0, 2, 4, 33); //SCLK, MISO, MOSI, SS
36
-
61
+ vspi->begin (VSPI_SCLK, VSPI_MISO, VSPI_MOSI, VSPI_SS); // SCLK, MISO, MOSI, SS
62
+ #endif
63
+
64
+ #ifndef ALTERNATE_PINS
37
65
// initialise hspi with default pins
38
66
// SCLK = 14, MISO = 12, MOSI = 13, SS = 15
39
- hspi->begin ();
67
+ hspi->begin ();
68
+ #else
40
69
// alternatively route through GPIO pins
41
- // hspi->begin(25, 26, 27, 32); //SCLK, MISO, MOSI, SS
70
+ hspi->begin (HSPI_SCLK, HSPI_MISO, HSPI_MOSI, HSPI_SS); // SCLK, MISO, MOSI, SS
71
+ #endif
42
72
43
73
// set up slave select pins as outputs as the Arduino API
44
74
// doesn't handle automatically pulling SS low
45
- pinMode (5 , OUTPUT); // VSPI SS
46
- pinMode (15 , OUTPUT); // HSPI SS
75
+ pinMode (VSPI_SS , OUTPUT); // VSPI SS
76
+ pinMode (HSPI_SS , OUTPUT); // HSPI SS
47
77
48
78
}
49
79
@@ -60,18 +90,18 @@ void vspiCommand() {
60
90
61
91
// use it as you would the regular arduino SPI API
62
92
vspi->beginTransaction (SPISettings (spiClk, MSBFIRST, SPI_MODE0));
63
- digitalWrite (5 , LOW); // pull SS slow to prep other end for transfer
93
+ digitalWrite (VSPI_SS , LOW); // pull SS slow to prep other end for transfer
64
94
vspi->transfer (data);
65
- digitalWrite (5 , HIGH); // pull ss high to signify end of data transfer
95
+ digitalWrite (VSPI_SS , HIGH); // pull ss high to signify end of data transfer
66
96
vspi->endTransaction ();
67
97
}
68
98
69
99
void hspiCommand () {
70
100
byte stuff = 0b11001100 ;
71
101
72
102
hspi->beginTransaction (SPISettings (spiClk, MSBFIRST, SPI_MODE0));
73
- digitalWrite (15 , LOW);
103
+ digitalWrite (HSPI_SS , LOW);
74
104
hspi->transfer (stuff);
75
- digitalWrite (15 , HIGH);
105
+ digitalWrite (HSPI_SS , HIGH);
76
106
hspi->endTransaction ();
77
107
}
0 commit comments