Constrain divisor range to 2~256.
This commit is contained in:
parent
d557203fac
commit
8723416640
|
@ -27,6 +27,7 @@
|
||||||
#if defined(USE_SPI)
|
#if defined(USE_SPI)
|
||||||
|
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
|
#include "common/maths.h"
|
||||||
|
|
||||||
#include "drivers/bus.h"
|
#include "drivers/bus.h"
|
||||||
#include "drivers/bus_spi.h"
|
#include "drivers/bus_spi.h"
|
||||||
|
@ -226,8 +227,10 @@ void spiSetDivisor(SPI_TypeDef *instance, uint16_t divisor)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
divisor = constrain(divisor, 2, 256);
|
||||||
|
|
||||||
LL_SPI_Disable(instance);
|
LL_SPI_Disable(instance);
|
||||||
LL_SPI_SetBaudRatePrescaler(instance, divisor ? (ffs(divisor | 0x100) - 2) << SPI_CR1_BR_Pos : 0);
|
LL_SPI_SetBaudRatePrescaler(instance, (ffs(divisor) - 2) << SPI_CR1_BR_Pos);
|
||||||
LL_SPI_Enable(instance);
|
LL_SPI_Enable(instance);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
|
|
||||||
#ifdef USE_SPI
|
#ifdef USE_SPI
|
||||||
|
|
||||||
|
#include "common/maths.h"
|
||||||
#include "drivers/bus.h"
|
#include "drivers/bus.h"
|
||||||
#include "drivers/bus_spi.h"
|
#include "drivers/bus_spi.h"
|
||||||
#include "drivers/bus_spi_impl.h"
|
#include "drivers/bus_spi_impl.h"
|
||||||
|
@ -186,10 +187,12 @@ void spiSetDivisor(SPI_TypeDef *instance, uint16_t divisor)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
divisor = constrain(divisor, 2, 256);
|
||||||
|
|
||||||
SPI_Cmd(instance, DISABLE);
|
SPI_Cmd(instance, DISABLE);
|
||||||
|
|
||||||
const uint16_t tempRegister = (instance->CR1 & ~BR_BITS);
|
const uint16_t tempRegister = (instance->CR1 & ~BR_BITS);
|
||||||
instance->CR1 = tempRegister | (divisor ? ((ffs(divisor | 0x100) - 2) << 3) : 0);
|
instance->CR1 = tempRegister | ((ffs(divisor) - 2) << 3);
|
||||||
|
|
||||||
SPI_Cmd(instance, ENABLE);
|
SPI_Cmd(instance, ENABLE);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue