Le Raspberry Pi SPI fonctionne à la vitesse d'horloge APB, qui est équivalente à la fréquence d'horloge principale, 250 MHz. Cela peut être divisé par un nombre pair de 2 à 65536 pour la vitesse souhaitée. La fiche technique spécifie que le diviseur doit être une puissance de deux, mais c'est incorrect . Les nombres impairs sont arrondis et 0 (ou 1) équivaut à 65536. Un diviseur inférieur à 2 est donc impossible.
Cela rend la plage de fréquences de 3,814 kHz à 125 MHz, avec 32768 pas entre les deux.
(Il y a eu beaucoup de désinformation à ce sujet, mais ces résultats ont été vérifiés par expérimentation. Veuillez passer le mot.)
Le SPI peut être exécuté à la vitesse d'horloge de base ou divisé pour les périphériques plus lents. L'horloge principale est de 250 MHz. Le diviseur peut être réglé sur n'importe quelle puissance de deux - de 2 ^ 0 à 2 ^ 16. Cela signifie que les fréquences SPI de 3,8 kHz à 250 MHz sont prises en charge.
Sources:
.rate = 250000000, /* 250MHz */
https://github.com/bootc/linux/blob/073993b3f3e23fb8d376f9e159eee410968e0c57/arch/arm/mach-bcm2708/bcm2708.cla source
La fiche technique du BCM2835 indique ce qui suit à la page 120: La valeur du registre d'horloge du bloc SPI contient.
Je ne trouve aucune référence à quelle est la fréquence maximale du bus APB, je pense que cela fait partie de la documentation ARM11 et non de ce SoC.
la source
J'ai testé avec le comme vu sur http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html et changé la vitesse.
La vitesse maximale lorsque le test est réussi est de 15 MHz = 15 000 KHz: Voir résultat:
Le test à 16 MHz a échoué. André
la source