我遇到了一个奇怪的问题。我正在运行一个用 Python3 编写的 TCP 到串行服务器。它使用 RPI4 的 UART,波特率为 500000。最初我为 NanoPi 编写了它,运行良好,但当切换到 RPI4 时,我遇到了通信错误。我将示波器连接到 TX,发现当命令失败时,波特率会降低。在调查过程中,我可以将其与 RPI4 上的时钟速度联系起来。watchcat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 显示 600000,当它在第一个命令上工作正常时,CPU 频率变为 1500000。然后我看到波特率发生了变化。切换回来时它又恢复了工作。我现在用 echo "powersave" |sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 将 CPU 速度固定为低频率。然后它继续运行。但是 RPI 当然以半速运行。当我将 CPU 频率固定为“性能”时,即使 CPU 频率保持在 1500000,我仍然遇到更改波特率的相同问题。我对这一切感到非常困惑。有人有什么建议吗?
答案1
我实际上自己修复了这个问题。禁用蓝牙解决了这个问题。但它不稳定,无论我运行哪种治理模式都没关系。以下是我所做的:
我在 /boot/firmware/config.txt 中添加了 dtoverlay=disable-bt