对任何型号的树莓派超频都很简单,对树莓派 Pico 超频甚至更容易实现。仅需两行 MicroPython 代码就能使你的 Pico 以正常速度的两倍运行,无需任何散热器。
本文中我们将树莓派 Pico 超频至 270 MHz(约基准速度 133 Mhz 的两倍)。然后,我们将写一个脚本来测试 Pico CPU 超频的上限和降频的下限。
在 C 语言的支持下,Pico 既可以通过 HDMI 接口输出 Doom 完整版游戏,也可以模拟 ZX Spectrum、Commodore 64 之类的复古计算机,超频似乎显得没有必要。但对 MicroPython 程序来说,超频能显著提升 Pico 的运行速度。同时,当我们需要使用电池对 Pico 供电时,降频能延长电池的电池续航。
当你使用 MicroPython 时,本文适用于树莓派 Pico、Pico W、PicoBit 和其他基于 RP2040 的开发板。当然你也可以使用其他编程语言来更改 Pico 的 CPU 频率,本文中不再阐述。
对树莓派 Pico 超频
安装最新版本 MicroPython,具体方法参考这篇文章的第三步。
在 MicroPython 交互式解释器中,导入 machine
并检查树莓派 Pico 的当前速度。返回的结果可能为 125000000 Hz (125 MHz)。默认情况下,某些开发板可能会将其设置得更高一些。
import machine machine.freq()
将 CPU 频率设置为 270 MHz。
machine.freq(270000000)
检查 CPU 频率,确保超频已生效。不出意外的话,返回的结果为 270000000 Hz(270 MHz)。
machine.freq()
现在速度的提升只是暂时的。一旦重新启动树莓派 Pico ,它就会恢复到默认速度(通常为 125 MHz)。如果不想让超频失效,每次启动树莓派 Pico 时都必须设置超频。这很简单,只需将这两行添加到任何 MicroPython 代码的开头,就能在代码运行时将 RP2040 (树莓派 Pico 的 CPU)超频到期望的速度。
import machine machine.freq(此处填写超频后的 CPU 频率,纯数字,不带单位)
RP2040 超频的上限是多少?
超频爱好者们总希望尽可能提高 CPU 频率,但如何才能确定 RP2040 超频的上限呢?为此,我们使用 Python 代码来自动获取 RP2040 能运行的极限频率。
注:完整的代码在文末
下载并打开 Thonny 编辑器。然后创建一个新文件,并导入两个模块。其中 machine
模块用于调整 CPU 频率,time
模块用于调整代码执行速度。
import machine import time
创建一个变量 freq
,并将其值设置为 270 MHz。经测试,RP2040 能以 270 MHz 的频率稳定运行,所以我们从 270 MHz 开始。如果你要对对 RP2040 进行降频,请相应地降低 freq
的值。
freq = 270000000
创建一个对象 speed
,并把它设置为 RP2040 的当前速度。借助数学运算,我们把返回值的单位转换为 MHz,然后保留一位小数,最后将其转换为字符串。
speed = str(round(machine.freq()/1000000,1))
把当前 CPU 速度插入要打印的消息中。由于 speed
对象是整数,我们需要把它转换为字符串。
print("The starting speed is",speed,"MHz")
向用户打印一条消息,通知他们测试将在五秒后开始,然后等待五秒钟。
print("Starting the test in five seconds") time.sleep(5)
为了持续运行代码,我们需要创建一个循环。你可以尝试使用 for 循环,但是 True 循环在遇到不合适的 CPU 频率时会崩溃,所以我们不建议这么做。
while True:
使用 freq
变量设置 CPU 速度。
machine.freq(freq)
创建一个对象 speed
,并把它设置为 RP2040 的当前频率。借助数学运算,我们把返回值的单位转换为 MHz,然后保留一位小数,最后将其转换为字符串。
speed = str(round(machine.freq()/1000000,1))
把当前 CPU 频率插入要打印的消息中。由于 speed
对象是整数,我们需要把它转换为字符串。
print("The starting speed is",speed,"MHz")
将 CPU 频率增加 10 MHz 并将值保存到 freq
。这里的+=
运算符相当于 freq = freq + 10000000
。这么写可以简化代码,使代码看起来清晰。如果你要获取 CPU 的最低工作速度,只需把 +=
换成 -=
即可。
freq += 10000000
让代码暂停两秒钟,以便在循环重复之前有充足的时间读取数值。
time.sleep(2)
将代码命名为 speedtest.py
并保存树莓派 Pico 上,然后单击“运行”。我们测试到的最佳频率是 280 MHz,但你也可能会得到比这更好的结果。
我们还进行了一个降频测试(每次循环减少10 MHz 的频率),并成功将其降至10 MHz,这对需要长时间使用电池的项目很有用。但由于设备测量精度的限制,我们无法捕获任何数据。
完整代码
import machine import time freq = 270000000 speed = str(round(machine.freq()/1000000,1)) print("The starting speed is",speed,"MHz") print("Starting the test in five seconds") time.sleep(5) while True: machine.freq(freq) speed = str(round(machine.freq()/1000000,1)) print("The current speed is",speed,"MHz") freq += 10000000 time.sleep(2)
刚刚测试了,超频到270MHz,基本不会发烫,完美!