Created example program showing usage of both VSPI/HSPI within arduino API (#1368)
This commit is contained in:
parent
1424b6d1a4
commit
68265084b1
@ -0,0 +1,77 @@
|
||||
|
||||
|
||||
/* The ESP32 has four SPi buses, however as of right now only two of
|
||||
* them are available to use, HSPI and VSPI. Simply using the SPI API
|
||||
* as illustrated in Arduino examples will use HSPI, leaving VSPI unused.
|
||||
*
|
||||
* However if we simply intialise two instance of the SPI class for both
|
||||
* of these buses both can be used. However when just using these the Arduino
|
||||
* way only will actually be outputting at a time.
|
||||
*
|
||||
* Logic analyser capture is in the same folder as this example as
|
||||
* "multiple_bus_output.png"
|
||||
*
|
||||
* created 30/04/2018 by Alistair Symonds
|
||||
*/
|
||||
#include <SPI.h>
|
||||
|
||||
static const int spiClk = 1000000; // 1 MHz
|
||||
|
||||
//uninitalised pointers to SPI objects
|
||||
SPIClass * vspi = NULL;
|
||||
SPIClass * hspi = NULL;
|
||||
|
||||
void setup() {
|
||||
//initialise two instances of the SPIClass attached to VSPI and HSPI respectively
|
||||
vspi = new SPIClass(VSPI);
|
||||
hspi = new SPIClass(HSPI);
|
||||
|
||||
//clock miso mosi ss
|
||||
|
||||
//initialise vspi with default pins
|
||||
//SCLK = 18, MISO = 19, MOSI = 23, SS = 5
|
||||
vspi->begin();
|
||||
//alternatively route through GPIO pins of your choice
|
||||
//hspi->begin(5,6,7,8); //SCLK, MISO, MOSI, SS
|
||||
|
||||
//initialise hspi with default pins
|
||||
//SCLK = 14, MISO = 12, MOSI = 13, SS = 15
|
||||
hspi->begin();
|
||||
//alternatively route through GPIO pins
|
||||
//hspi->begin(1,2,3,4); //SCLK, MISO, MOSI, SS
|
||||
|
||||
//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
|
||||
|
||||
}
|
||||
|
||||
// the loop function runs over and over again until power down or reset
|
||||
void loop() {
|
||||
//use the SPI buses
|
||||
vspiCommand();
|
||||
hspiCommand();
|
||||
delay(100);
|
||||
}
|
||||
|
||||
void vspiCommand() {
|
||||
byte data = 0b01010101; // junk data to illustrate usage
|
||||
|
||||
//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
|
||||
vspi->transfer(data);
|
||||
digitalWrite(5, HIGH); //pull ss high to signify end of data transfer
|
||||
vspi->endTransaction();
|
||||
}
|
||||
|
||||
void hspiCommand() {
|
||||
byte stuff = 0b11001100;
|
||||
|
||||
hspi->beginTransaction(SPISettings(spiClk, MSBFIRST, SPI_MODE0));
|
||||
digitalWrite(15, LOW);
|
||||
hspi->transfer(stuff);
|
||||
digitalWrite(15, HIGH);
|
||||
hspi->endTransaction();
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
Loading…
Reference in New Issue
Block a user