Der Raspberry Pi SPI läuft mit APB-Takt, was einer Kerntaktrate von 250 MHz entspricht. Dies kann durch eine gerade Zahl von 2 bis 65536 für die gewünschte Geschwindigkeit geteilt werden. Das Datenblatt gibt an, dass der Divisor eine Zweierpotenz sein muss, dies ist jedoch falsch . Ungerade Zahlen werden abgerundet und 0 (oder 1) entspricht 65536. Ein Divisor kleiner als 2 ist daher nicht möglich.
Dies macht den Frequenzbereich von 3,814 kHz bis 125 MHz mit 32768 Schritten dazwischen.
(Es gab viele Fehlinformationen in dieser Angelegenheit, aber diese Ergebnisse wurden durch Experimente bestätigt. Bitte verbreiten Sie das Wort.)
Der SPI kann mit der Kerntaktrate ausgeführt oder für langsamere Peripheriegeräte heruntergeteilt werden. Der Kerntakt ist 250 MHz. Der Teiler kann auf eine beliebige Zweierpotenz eingestellt werden - von 2 ^ 0 bis 2 ^ 16. Dies bedeutet, dass SPI-Frequenzen von 3,8 kHz bis 250 MHz unterstützt werden.
Quellen:
.rate = 250000000, /* 250MHz */
https://github.com/bootc/linux/blob/073993b3f3e23fb8d376f9e159eee410968e0c57/arch/arm/mach-bcm2708/bcm2708.cquelle
Im Datenblatt des BCM2835 heißt es auf Seite 120: Der Wert des Taktregisters des SPI-Blocks enthält.
Ich kann keinen Hinweis auf die maximale Frequenz des APB-Busses finden. Ich denke, dies ist Teil der ARM11-Dokumentation und nicht dieses SoC.
quelle
Ich habe mit dem wie auf http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html gesehen getestet und die Geschwindigkeit geändert.
Die maximale Geschwindigkeit bei bestandenem Test beträgt 15MHz = 15000KHz: Siehe Ergebnis:
Der Test bei 16MHz ist fehlgeschlagen. André
quelle