9. Picocalc用 PSRAM ドライバ完成
PIOってなんて不安定なんだ。。。と思いながらあれこれやってきた。
その苦労がやっと報われました。
pio_asm で書いていた PSRAM アクセスプログラムのバグでした orz
色々試して、もうあきらめて「うまく動かないときは soft-resetしてね」という運用で逃げることに決めて、ソースのコメントとかを整理し始めた。
そして pio_asm で書いてる部分のコメントを整理しだしたら、気になる部分が見つかった。
直してみたら今までの苦労がウソのように安定した。
原因:
SPI通信のCLK信号は、平常時 CLK=LOであるべきだが、コマンド送信処理を CLK=HI で終了していた。
PSRAMの処理を打ち切り、次のコマンド開始時に CLK=HI でスタートするため、PSRAMの動作が不安定になった。
もしかしてPSRAMのクロックがあげられないのはそのせいか?
と思って PSRAM アクセス時のクロックを調整したら3倍まで上昇。
まぁそれでも CLK 15MHz なので、PSRAMのスペックに対しては全然足りてないけど。
ともあれ安定して使える CLK 10MHz まで落として github に push。
micropythonでできる範囲で性能改善かけたけど R/W 2Mbyte/s ぐらいがせいぜい。Cで書き直すと転用難しくなる。
動画プレイヤーの早送りならCで書き直してもいいけど、別のボードも手を付けたいので後回し(汗
ともあれPSRAM編はこれで終了です。
PIO,DMA対応PSRAMドライバはこちら
https://github.com/bjsoftab4/picocalc_viewer




