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();  | ||||
|   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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user