nrf: give more flexibility in picking SPI speeds
Instead of only allowing a limited number of speeds, use the provided speed as an upper bound on the allowed speed. The reasoning is that picking a higher speed than requrested will likely result in malfunction while picking a lower speed will usually only result in slower operation. This behavior matches the ESP32 at least.
Этот коммит содержится в:
родитель
d382f3a259
коммит
47dc76fc34
1 изменённых файлов: 17 добавлений и 15 удалений
|
@ -357,23 +357,25 @@ func (spi SPI) Configure(config SPIConfig) {
|
||||||
// set frequency
|
// set frequency
|
||||||
var freq uint32
|
var freq uint32
|
||||||
|
|
||||||
switch config.Frequency {
|
if config.Frequency == 0 {
|
||||||
case 125000:
|
config.Frequency = 4000000 // 4MHz
|
||||||
freq = nrf.SPI_FREQUENCY_FREQUENCY_K125
|
}
|
||||||
case 250000:
|
|
||||||
freq = nrf.SPI_FREQUENCY_FREQUENCY_K250
|
switch {
|
||||||
case 500000:
|
case config.Frequency >= 8000000:
|
||||||
freq = nrf.SPI_FREQUENCY_FREQUENCY_K500
|
|
||||||
case 1000000:
|
|
||||||
freq = nrf.SPI_FREQUENCY_FREQUENCY_M1
|
|
||||||
case 2000000:
|
|
||||||
freq = nrf.SPI_FREQUENCY_FREQUENCY_M2
|
|
||||||
case 4000000:
|
|
||||||
freq = nrf.SPI_FREQUENCY_FREQUENCY_M4
|
|
||||||
case 8000000:
|
|
||||||
freq = nrf.SPI_FREQUENCY_FREQUENCY_M8
|
freq = nrf.SPI_FREQUENCY_FREQUENCY_M8
|
||||||
default:
|
case config.Frequency >= 4000000:
|
||||||
|
freq = nrf.SPI_FREQUENCY_FREQUENCY_M4
|
||||||
|
case config.Frequency >= 2000000:
|
||||||
|
freq = nrf.SPI_FREQUENCY_FREQUENCY_M2
|
||||||
|
case config.Frequency >= 1000000:
|
||||||
|
freq = nrf.SPI_FREQUENCY_FREQUENCY_M1
|
||||||
|
case config.Frequency >= 500000:
|
||||||
freq = nrf.SPI_FREQUENCY_FREQUENCY_K500
|
freq = nrf.SPI_FREQUENCY_FREQUENCY_K500
|
||||||
|
case config.Frequency >= 250000:
|
||||||
|
freq = nrf.SPI_FREQUENCY_FREQUENCY_K250
|
||||||
|
default: // below 250kHz, default to the lowest speed available
|
||||||
|
freq = nrf.SPI_FREQUENCY_FREQUENCY_K125
|
||||||
}
|
}
|
||||||
spi.Bus.FREQUENCY.Set(freq)
|
spi.Bus.FREQUENCY.Set(freq)
|
||||||
|
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче