Merge pull request #2747 from arturo182/imx-spi-init-check
mimxrt1011: Only re-init SPI when it's actually needed
This commit is contained in:
commit
2900d92235
@ -210,6 +210,18 @@ void common_hal_busio_spi_deinit(busio_spi_obj_t *self) {
|
|||||||
|
|
||||||
bool common_hal_busio_spi_configure(busio_spi_obj_t *self,
|
bool common_hal_busio_spi_configure(busio_spi_obj_t *self,
|
||||||
uint32_t baudrate, uint8_t polarity, uint8_t phase, uint8_t bits) {
|
uint32_t baudrate, uint8_t polarity, uint8_t phase, uint8_t bits) {
|
||||||
|
|
||||||
|
LPSPI_Enable(self->spi, false);
|
||||||
|
uint32_t tcrPrescaleValue;
|
||||||
|
self->baudrate = LPSPI_MasterSetBaudRate(self->spi, baudrate, LPSPI_MASTER_CLK_FREQ, &tcrPrescaleValue);
|
||||||
|
LPSPI_Enable(self->spi, true);
|
||||||
|
|
||||||
|
if ((polarity == common_hal_busio_spi_get_polarity(self)) &&
|
||||||
|
(phase == common_hal_busio_spi_get_phase(self)) &&
|
||||||
|
(bits == ((self->spi->TCR & LPSPI_TCR_FRAMESZ_MASK) >> LPSPI_TCR_FRAMESZ_SHIFT)) + 1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
lpspi_master_config_t config = { 0 };
|
lpspi_master_config_t config = { 0 };
|
||||||
LPSPI_MasterGetDefaultConfig(&config);
|
LPSPI_MasterGetDefaultConfig(&config);
|
||||||
|
|
||||||
@ -221,11 +233,6 @@ bool common_hal_busio_spi_configure(busio_spi_obj_t *self,
|
|||||||
LPSPI_Deinit(self->spi);
|
LPSPI_Deinit(self->spi);
|
||||||
LPSPI_MasterInit(self->spi, &config, LPSPI_MASTER_CLK_FREQ);
|
LPSPI_MasterInit(self->spi, &config, LPSPI_MASTER_CLK_FREQ);
|
||||||
|
|
||||||
LPSPI_Enable(self->spi, false);
|
|
||||||
uint32_t tcrPrescaleValue;
|
|
||||||
self->baudrate = LPSPI_MasterSetBaudRate(self->spi, config.baudRate, LPSPI_MASTER_CLK_FREQ, &tcrPrescaleValue);
|
|
||||||
LPSPI_Enable(self->spi, true);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user