Raspberry Pi PicoでAT-Xを作る⑨-1 フレームレートを上げる工夫をする

raspberry pi pico

前回なんの工夫もせず再生したら1.1fpsくらいだったから
限界まで悪あがきをします。

今回はボーレート(baudrate)を上げてみる。

ボーレート(baudrate)とは

データを1秒間に何回変復調するか。らしい。

なんか上げたら早くなりそう

気にしておくこと

色々いじってみて、先に気にしておいたほうがよかったことがいくつかあった

あんまり上げると不安定になる

当たり前なんだけど、限界がある。
具体的には0→1、1→0で急峻な信号が潰れちゃったりするみたい。

リード線の長さに起因してL成分が乗っちゃうんだろうね。

ラズパイピコのクロック周波数も変えれる

デフォルトは125MHz

発熱が心配だけど
今回は250MHzにオーバークロックする

参考サイト
マイコンの性能調査 High/Low(OverClock) | たまねぎブログ

microSDの性能にも左右される

データシートの味方がよくわかんなかったけどあるっぽい。

ラズパイピコのクロック周波数を上げる

ラズパイピコに電源を投入したとき(USBを接続したとき)真っ先に走る、
main.pyに記述を追加する

import machine
import os
import sdcard

# クロック周波数を設定
machine.freq(250_000_000)  

# SDカードのマウント
sd = sdcard.SDCard(machine.SPI(0), machine.Pin(28))  
vfs = os.VfsFat(sd)
os.mount(vfs, '/sd')

ボーレートを上げてSPI通信の速度を上げる

通信速度が速すぎてコケる速度に設定して段々下げていって
ギリ動く速度に設定した

microSDカードリーダーとの通信

sdcard.pyの__init__を直接書き換える

class SDCard:
    # def __init__(self, spi, cs, baudrate=1320000):
    def __init__(self, spi, cs, baudrate=23_000_000):
        self.spi = spi
        self.cs = cs
以下略

1.32MHz→23MHzまで上げれられた

LCDモジュールとの通信

こっちも同じようにbaudrateを上げまくってみたけど、
効果は感じられなかった。

つまりmicroカードリーダーとの通信がおっせえから
今のフレームレートになってる?

結果

3.3fpsくらいになった。まだおせえ。

おわりに

まだ改善できる。

次 → バイナリファイルを1つにまとめて読み出しを改善

タイトルとURLをコピーしました