Jakie częstotliwości SPI obsługuje Raspberry Pi?
Dodatkowo:
- Czy wszystkie są obsługiwane przez sterownik SPI bootc.net ?
- Czy są jakieś dodatkowe rzeczy, na które powinienem uważać, próbując komunikować się z innym chipem za pośrednictwem SPI?
Raspberry Pi SPI działa z częstotliwością taktowania APB, co odpowiada szybkości taktowania rdzenia, 250 MHz. Można to podzielić na dowolną liczbę parzystą od 2 do 65536 dla żądanej prędkości. Arkusz danych określa, że dzielnik musi mieć potęgę dwóch, ale jest to niepoprawne . Liczby nieparzyste są zaokrąglane w dół, a 0 (lub 1) odpowiada 65536. Dzielnik mniejszy niż 2 jest zatem niemożliwy.
To sprawia, że zakres częstotliwości wynosi od 3,814 kHz do 125 MHz, z krokiem 32768 pomiędzy nimi.
(Było wiele dezinformacji w tej sprawie, ale wyniki te zostały zweryfikowane przez eksperymenty. Proszę rozpowszechniać informacje.)
Interfejs SPI można uruchamiać z częstotliwością taktowania rdzenia lub podzielić na wolniejsze urządzenia peryferyjne. Zegar rdzenia wynosi 250 MHz. Dzielnik można ustawić na dowolną potęgę dwóch - od 2 ^ 0 aż do 2 ^ 16. Oznacza to, że obsługiwane są częstotliwości SPI od 3,8 kHz do 250 MHz.
Źródła:
.rate = 250000000, /* 250MHz */
https://github.com/bootc/linux/blob/073993b3f3e23fb8d376f9e159eee410968e0c57/arch/arm/mach-bcm2708/bcm2708.cźródło
Datasheet od BCM2835 mówi następujących na stronie 120: Wartość rejestru zegara bloku SPI zawiera.
Nie mogę znaleźć żadnego odniesienia do maksymalnej częstotliwości magistrali APB, myślę, że jest to część dokumentacji ARM11, a nie tego SoC.
źródło
Przetestowałem z jak widać na http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html i zmieniłem prędkość.
Maksymalna prędkość po przejściu testu wynosi 15 MHz = 15000 KHz: Zobacz wynik:
Test przy 16 MHz nie powiódł się. André
źródło