¿Qué frecuencias SPI admite Raspberry Pi?
Adicionalmente:
- ¿Todos ellos son compatibles con el controlador bootc.net SPI ?
- ¿Hay alguna cosa adicional que deba tener cuidado al tratar de comunicarme con algún otro chip a través de SPI?
¿Qué frecuencias SPI admite Raspberry Pi?
Adicionalmente:
Respuestas:
El SPI de Raspberry Pi funciona a la velocidad de reloj APB, que es equivalente a la velocidad de reloj central, 250 MHz. Esto se puede dividir por cualquier número par de 2 a 65536 para la velocidad deseada. La hoja de datos especifica que el divisor debe ser una potencia de dos, pero esto es incorrecto . Los números impares se redondean hacia abajo y 0 (o 1) es equivalente a 65536. Por lo tanto, un divisor menor que 2 es imposible.
Esto hace que el rango de frecuencia sea de 3.814 kHz a 125 MHz, con 32768 pasos intermedios.
(Ha habido mucha información errónea sobre este asunto, pero estos resultados han sido verificados por experimentación. Por favor, corra la voz).
El SPI puede ejecutarse a la velocidad del reloj central o dividirse para obtener periféricos más lentos. El reloj central es de 250 MHz. El divisor se puede establecer en cualquier potencia de dos, desde 2 ^ 0 hasta 2 ^ 16. Esto significa que se admiten frecuencias SPI de 3.8 kHz a 250 MHz.
Fuentes:
.rate = 250000000, /* 250MHz */
https://github.com/bootc/linux/blob/073993b3f3e23fb8d376f9e159eee410968e0c57/arch/arm/mach-bcm2708/bcm2708.cLa hoja de datos de BCM2835 dice lo siguiente en la página 120: El valor del registro de reloj del bloque SPI contiene.
BC Clock Divider SCLK = Core Clock / CDIV Si CDIV se establece en 0, el divisor es 65536. El divisor debe ser una potencia de 2. Números impares redondeados hacia abajo. La velocidad máxima del reloj SPI es del reloj APB.
No puedo encontrar ninguna referencia a cuál es la frecuencia máxima del bus APB, creo que es parte de la documentación de ARM11 y no de este SoC.
He probado con lo que se ve en http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html y he cambiado la velocidad.
La velocidad máxima cuando se pasa la prueba es de 15MHz = 15000KHz: Ver resultado:
spi mode: 0
bits per word: 8
max speed: 15000000 Hz (15000 KHz)
FF FF FF FF FF FF
40 00 00 00 00 95
FF FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
DE AD BE EF BA AD
F0 0D
La prueba a 16MHz falló. André