Raspberry Pi支持哪些SPI频率?


Answers:


21

Raspberry Pi SPI以APB时钟速度运行,该速度等于250 MHz的核心时钟速度。可以将其除以2到65536之间任意偶数以获得所需的速度。数据表指定除数必须为2的幂,但这是不正确的。奇数取整,0(或1)等于65536。因此,小于2的除数是不可能的。

这使得频率范围介于3.814 kHz至125 MHz之间,中间有32768步。

(有关此事的信息有很多误导,但这些结果已通过实验得到验证。请大声疾呼。)


1
我认为这个答案应该是最重要的。
乔恩·瓦特

你确定吗?Gordon断言,尽管您可以给它提供任何偶数,但实际上只有2的幂才有所不同:了解Raspberry Pi上的SPI | Gordons Projects
scruss

3
我用示波器对此进行了测试。我认为Gordon的问题在于他使用了内核驱动程序,该驱动程序改变了时钟速​​度,而不是在不使用内核驱动程序的情况下直接命令处理器。
Nakedible

2
本次论坛线程提供更多信息,证明Nakedible的回答是:raspberrypi.org/phpBB3/...
Nippey

5

SPI可以以核心时钟速度运行,也可以分频以降低外设速度。核心时钟为250 MHz。分频器可以设置为2的任意幂-从2 ^ 0一直到2 ^ 16。这意味着支持3.8 kHz至250 MHz的SPI频率。

资料来源:


1
也许-Farhad是从BCM2835的数据表中采购的,BCM2835是RPi的实际SoC,而我的参考文献是针对BCM2708(仅是SoC的一部分)。这些源可能会汇聚在一起……但是,它们可能不会再次聚合。因此,我认为现在最好保留备用资源。
Maria Zverina 2012年

1
哦,area51列出我们每个问题有1.7个答案,并指出“每个问题2.5个答案是好的,每个问题只有1个答案需要一些工作。在健康的网站上,问题会收到多个答案,而最佳答案将被评选为最高答案。” :-)
Maria Zverina 2012年

1
错误答案:不支持2 ^ 0,并且分频器不必为2的幂。
Nakedible

1
@Nakedible您可以提供陈述的来源吗?
Maria Zverina

1
bcm2835数据表确认了2 ^ 0点。raspberrypi.org/wp-content/uploads/2012/02/...这也是由bcm2835库定义了证实。open.com.au/mikem/bcm2835至于两个除数的非幂,数据表勘误表提到可能是2的倍数。elinux.org/BCM2835_datasheet_errata这也发布在某个论坛上,任何2的倍数似乎都可以使用。通过在真实硬件上测试 SPI输出,所有这些都得到了证实。请参阅下面的我的答案,其中确切说明了这一点。
Nakedible

4

BCM2835数据手册在第120页上说以下内容:SPI模块的时钟寄存器的值包含在内

BC时钟分频器SCLK =核心时钟/ CDIV如果CDIV设置为0,除数为65536。除数必须为2的幂。SPI的最大时钟速率为APB时钟的速率。

我找不到关于APB总线最大频率的任何参考,我认为这是ARM11文档的一部分,而不是此SoC。


1
感谢您的参考;我相信页面是156吗?CDIV似乎是16b宽,因此从1到65536。“核心时钟”大概是700MHz?那么我们得到的范围是从〜10.7kHz到神秘的APB限制?
akavel 2012年

1
非常欢迎您,但恐怕此时钟不是核心时钟。它是APB总线:“ APB专为低带宽控制访问而设计,例如系统外设上的寄存器接口。该总线的地址和数据相位与AHB相似,但是信号列表大大减少了,复杂度也很低(例如,没有突发) )。它必须支持32bit和66MHz信号。”
FarhadA 2012年

4

我已经使用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的测试失败。安德烈


1
我的在32MHz = 32,000KHz时运行正常。我在这里看到它提到这也是实际的限制。如果有所不同,我将在Raspbian硬浮动上运行最新的RPi固件。
dodgy_coder

让RPi 3以60MHz成功运行该测试。
弗拉德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.