Answers:
Raspberry Pi SPI以APB时钟速度运行,该速度等于250 MHz的核心时钟速度。可以将其除以2到65536之间的任意偶数以获得所需的速度。数据表指定除数必须为2的幂,但这是不正确的。奇数取整,0(或1)等于65536。因此,小于2的除数是不可能的。
这使得频率范围介于3.814 kHz至125 MHz之间,中间有32768步。
(有关此事的信息有很多误导,但这些结果已通过实验得到验证。请大声疾呼。)
SPI可以以核心时钟速度运行,也可以分频以降低外设速度。核心时钟为250 MHz。分频器可以设置为2的任意幂-从2 ^ 0一直到2 ^ 16。这意味着支持3.8 kHz至250 MHz的SPI频率。
资料来源:
.rate = 250000000, /* 250MHz */
//github.com/bootc/linux/blob/073993b3f3e23fb8d376f9e159eee410968e0c57/arch/arm/mach-bcm2708/bcm2708.cBCM2835的数据手册在第120页上说以下内容:SPI模块的时钟寄存器的值包含在内。
BC时钟分频器SCLK =核心时钟/ CDIV如果CDIV设置为0,除数为65536。除数必须为2的幂。SPI的最大时钟速率为APB时钟的速率。
我找不到关于APB总线最大频率的任何参考,我认为这是ARM11文档的一部分,而不是此SoC。
我已经使用http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html上的进行了测试,并更改了速度。
测试通过时的最高速度为15MHz = 15000KHz:参见结果:
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
16MHz的测试失败。安德烈