Fix SPISettings frequency parameters in ESP32 HW SPI (#13573)
This commit is contained in:
parent
63d95862fa
commit
692a0198f9
1 changed files with 19 additions and 7 deletions
|
@ -44,6 +44,15 @@ static SPISettings spiConfig;
|
||||||
// Public functions
|
// Public functions
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#if ENABLED(SOFTWARE_SPI)
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
// Software SPI
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
#error "Software SPI not supported for ESP32. Use Hardware SPI."
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
// Hardware SPI
|
// Hardware SPI
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
@ -61,13 +70,14 @@ void spiInit(uint8_t spiRate) {
|
||||||
uint32_t clock;
|
uint32_t clock;
|
||||||
|
|
||||||
switch (spiRate) {
|
switch (spiRate) {
|
||||||
case SPI_FULL_SPEED: clock = SPI_CLOCK_DIV2; break;
|
case SPI_FULL_SPEED: clock = 16000000; break;
|
||||||
case SPI_HALF_SPEED: clock = SPI_CLOCK_DIV4; break;
|
case SPI_HALF_SPEED: clock = 8000000; break;
|
||||||
case SPI_QUARTER_SPEED: clock = SPI_CLOCK_DIV8; break;
|
case SPI_QUARTER_SPEED: clock = 4000000; break;
|
||||||
case SPI_EIGHTH_SPEED: clock = SPI_CLOCK_DIV16; break;
|
case SPI_EIGHTH_SPEED: clock = 2000000; break;
|
||||||
case SPI_SPEED_5: clock = SPI_CLOCK_DIV32; break;
|
case SPI_SIXTEENTH_SPEED: clock = 1000000; break;
|
||||||
case SPI_SPEED_6: clock = SPI_CLOCK_DIV64; break;
|
case SPI_SPEED_5: clock = 500000; break;
|
||||||
default: clock = SPI_CLOCK_DIV2; // Default from the SPI library
|
case SPI_SPEED_6: clock = 250000; break;
|
||||||
|
default: clock = 1000000; // Default from the SPI library
|
||||||
}
|
}
|
||||||
|
|
||||||
spiConfig = SPISettings(clock, MSBFIRST, SPI_MODE0);
|
spiConfig = SPISettings(clock, MSBFIRST, SPI_MODE0);
|
||||||
|
@ -106,4 +116,6 @@ void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode)
|
||||||
SPI.beginTransaction(spiConfig);
|
SPI.beginTransaction(spiConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // !SOFTWARE_SPI
|
||||||
|
|
||||||
#endif // ARDUINO_ARCH_ESP32
|
#endif // ARDUINO_ARCH_ESP32
|
||||||
|
|
Reference in a new issue