Skip SPI re-init if clock frequency doesn't change (#1934)
This commit is contained in:
parent
2a74250a51
commit
02c272b091
1 changed files with 10 additions and 7 deletions
|
|
@ -184,15 +184,18 @@ void SPIClassRP2040::beginTransaction(SPISettings settings) {
|
||||||
if (_initted && settings == _spis) {
|
if (_initted && settings == _spis) {
|
||||||
DEBUGSPI("SPI: Reusing existing initted SPI\n");
|
DEBUGSPI("SPI: Reusing existing initted SPI\n");
|
||||||
} else {
|
} else {
|
||||||
_spis = settings;
|
/* Only de-init if the clock changes frequency */
|
||||||
|
if (settings.getClockFreq() != _spis.getClockFreq()) {
|
||||||
if (_initted) {
|
if (_initted) {
|
||||||
DEBUGSPI("SPI: deinitting currently active SPI\n");
|
DEBUGSPI("SPI: deinitting currently active SPI\n");
|
||||||
spi_deinit(_spi);
|
spi_deinit(_spi);
|
||||||
}
|
}
|
||||||
DEBUGSPI("SPI: initting SPI\n");
|
DEBUGSPI("SPI: initting SPI\n");
|
||||||
spi_init(_spi, _spis.getClockFreq());
|
spi_init(_spi, settings.getClockFreq());
|
||||||
spi_set_format(_spi, 8, cpol(), cpha(), SPI_MSB_FIRST);
|
|
||||||
DEBUGSPI("SPI: actual baudrate=%u\n", spi_get_baudrate(_spi));
|
DEBUGSPI("SPI: actual baudrate=%u\n", spi_get_baudrate(_spi));
|
||||||
|
}
|
||||||
|
_spis = settings;
|
||||||
|
spi_set_format(_spi, 8, cpol(), cpha(), SPI_MSB_FIRST);
|
||||||
_initted = true;
|
_initted = true;
|
||||||
}
|
}
|
||||||
// Disable any IRQs that are being used for SPI
|
// Disable any IRQs that are being used for SPI
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue