1515 */
1616#include < SPI.h>
1717
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+
1842static const int spiClk = 1000000 ; // 1 MHz
1943
2044// uninitalised pointers to SPI objects
@@ -28,22 +52,28 @@ void setup() {
2852
2953 // clock miso mosi ss
3054
55+ #ifndef ALTERNATE_PINS
3156 // initialise vspi with default pins
3257 // SCLK = 18, MISO = 19, MOSI = 23, SS = 5
3358 vspi->begin ();
59+ #else
3460 // 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
3765 // initialise hspi with default pins
3866 // SCLK = 14, MISO = 12, MOSI = 13, SS = 15
39- hspi->begin ();
67+ hspi->begin ();
68+ #else
4069 // 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
4272
4373 // set up slave select pins as outputs as the Arduino API
4474 // 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
4777
4878}
4979
@@ -60,18 +90,18 @@ void vspiCommand() {
6090
6191 // use it as you would the regular arduino SPI API
6292 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
6494 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
6696 vspi->endTransaction ();
6797}
6898
6999void hspiCommand () {
70100 byte stuff = 0b11001100 ;
71101
72102 hspi->beginTransaction (SPISettings (spiClk, MSBFIRST, SPI_MODE0));
73- digitalWrite (15 , LOW);
103+ digitalWrite (HSPI_SS , LOW);
74104 hspi->transfer (stuff);
75- digitalWrite (15 , HIGH);
105+ digitalWrite (HSPI_SS , HIGH);
76106 hspi->endTransaction ();
77107}
0 commit comments