8000 Skip SPI re-init if clock frequency doesn't change (#1934) · BritvaBo/arduino-pico@02c272b · GitHub
[go: up one dir, main page]

Skip to content

Commit 02c272b

Browse files
authored
Skip SPI re-init if clock frequency doesn't change (earlephilhower#1934)
1 parent 2a74250 commit 02c272b

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

libraries/SPI/src/SPI.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -184,15 +184,18 @@ void SPIClassRP2040::beginTransaction(SPISettings settings) {
184184 8000
if (_initted && settings == _spis) {
185185
DEBUGSPI("SPI: Reusing existing initted SPI\n");
186186
} else {
187-
_spis = settings;
188-
if (_initted) {
189-
DEBUGSPI("SPI: deinitting currently active SPI\n");
190-
spi_deinit(_spi);
187+
/* Only de-init if the clock changes frequency */
188+
if (settings.getClockFreq() != _spis.getClockFreq()) {
189+
if (_initted) {
190+
DEBUGSPI("SPI: deinitting currently active SPI\n");
191+
spi_deinit(_spi);
192+
}
193+
DEBUGSPI("SPI: initting SPI\n");
194+
spi_init(_spi, settings.getClockFreq());
195+
DEBUGSPI("SPI: actual baudrate=%u\n", spi_get_baudrate(_spi));
191196
}
192-
DEBUGSPI("SPI: initting SPI\n");
193-
spi_init(_spi, _spis.getClockFreq());
197+
_spis = settings;
194198
spi_set_format(_spi, 8, cpol(), cpha(), SPI_MSB_FIRST);
195-
DEBUGSPI("SPI: actual baudrate=%u\n", spi_get_baudrate(_spi));
196199
_initted = true;
197200
}
198201
// Disable any IRQs that are being used for SPI

0 commit comments

Comments
 (0)
0