Cleanup SPI_Multiple_Buses (#3527)
* Utilize prepoc symbols for SPI pins * Adjusts for GPIO pins when ALTERNATE_PINS is set
This commit is contained in:
parent
5443d7ca93
commit
579e04be25
@ -15,6 +15,30 @@
|
||||
*/
|
||||
#include <SPI.h>
|
||||
|
||||
// Define ALTERNATE_PINS to use non-standard GPIO pins for SPI bus
|
||||
|
||||
#ifdef ALTERNATE_PINS
|
||||
#define VSPI_MISO 2
|
||||
#define VSPI_MOSI 4
|
||||
#define VSPI_SCLK 0
|
||||
#define VSPI_SS 33
|
||||
|
||||
#define HSPI_MISO 26
|
||||
#define HSPI_MOSI 27
|
||||
#define HSPI_SCLK 25
|
||||
#define HSPI_SS 32
|
||||
#else
|
||||
#define VSPI_MISO MISO
|
||||
#define VSPI_MOSI MOSI
|
||||
#define VSPI_SCLK SCK
|
||||
#define VSPI_SS SS
|
||||
|
||||
#define HSPI_MISO 12
|
||||
#define HSPI_MOSI 13
|
||||
#define HSPI_SCLK 14
|
||||
#define HSPI_SS 15
|
||||
#endif
|
||||
|
||||
static const int spiClk = 1000000; // 1 MHz
|
||||
|
||||
//uninitalised pointers to SPI objects
|
||||
@ -28,22 +52,28 @@ void setup() {
|
||||
|
||||
//clock miso mosi ss
|
||||
|
||||
#ifndef ALTERNATE_PINS
|
||||
//initialise vspi with default pins
|
||||
//SCLK = 18, MISO = 19, MOSI = 23, SS = 5
|
||||
vspi->begin();
|
||||
#else
|
||||
//alternatively route through GPIO pins of your choice
|
||||
//hspi->begin(0, 2, 4, 33); //SCLK, MISO, MOSI, SS
|
||||
vspi->begin(VSPI_SCLK, VSPI_MISO, VSPI_MOSI, VSPI_SS); //SCLK, MISO, MOSI, SS
|
||||
#endif
|
||||
|
||||
#ifndef ALTERNATE_PINS
|
||||
//initialise hspi with default pins
|
||||
//SCLK = 14, MISO = 12, MOSI = 13, SS = 15
|
||||
hspi->begin();
|
||||
#else
|
||||
//alternatively route through GPIO pins
|
||||
//hspi->begin(25, 26, 27, 32); //SCLK, MISO, MOSI, SS
|
||||
hspi->begin(HSPI_SCLK, HSPI_MISO, HSPI_MOSI, HSPI_SS); //SCLK, MISO, MOSI, SS
|
||||
#endif
|
||||
|
||||
//set up slave select pins as outputs as the Arduino API
|
||||
//doesn't handle automatically pulling SS low
|
||||
pinMode(5, OUTPUT); //VSPI SS
|
||||
pinMode(15, OUTPUT); //HSPI SS
|
||||
pinMode(VSPI_SS, OUTPUT); //VSPI SS
|
||||
pinMode(HSPI_SS, OUTPUT); //HSPI SS
|
||||
|
||||
}
|
||||
|
||||
@ -60,9 +90,9 @@ void vspiCommand() {
|
||||
|
||||
//use it as you would the regular arduino SPI API
|
||||
vspi->beginTransaction(SPISettings(spiClk, MSBFIRST, SPI_MODE0));
|
||||
digitalWrite(5, LOW); //pull SS slow to prep other end for transfer
|
||||
digitalWrite(VSPI_SS, LOW); //pull SS slow to prep other end for transfer
|
||||
vspi->transfer(data);
|
||||
digitalWrite(5, HIGH); //pull ss high to signify end of data transfer
|
||||
digitalWrite(VSPI_SS, HIGH); //pull ss high to signify end of data transfer
|
||||
vspi->endTransaction();
|
||||
}
|
||||
|
||||
@ -70,8 +100,8 @@ void hspiCommand() {
|
||||
byte stuff = 0b11001100;
|
||||
|
||||
hspi->beginTransaction(SPISettings(spiClk, MSBFIRST, SPI_MODE0));
|
||||
digitalWrite(15, LOW);
|
||||
digitalWrite(HSPI_SS, LOW);
|
||||
hspi->transfer(stuff);
|
||||
digitalWrite(15, HIGH);
|
||||
digitalWrite(HSPI_SS, HIGH);
|
||||
hspi->endTransaction();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user