表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
8/13

6. PIOが使えない RP2350B固有の現象?

音声再生のノイズはさておき、動画プレイヤーとして仕上げよう。


コマ落ち対策にはマルチコアでJPEGデコード!とか思ったが、思ってたより改造範囲が広いのに気が付いた。

LCDドライバの構造が違いすぎるんだよな。

でも音付きで動画再生できるように、wrapper関数経由でJPEGデコード&音声再生を組み込んで動かした。


予想していたことだが SoftSPI 経由でのSDカード読み込みがボトルネックになってる。プログラムでクロック作ってるんだからそりゃ遅いよね。

となれば、SPIをPIOで作るしかないでしょ。

QSPI が動くようにできたんだから、SPI程度は楽勝楽勝。


と思いながら作り始めたら思った以上にシンプルなプログラムになった。そりゃそうか、PSRAM ドライバに比べたらシンプルだよね。マジ楽勝。


と思ってたこともありました。動きません。orz


1バイトは送受信できるが2バイト目が動かない。ステートマシンが途中でハングアップしてる。

もしかして RP2350のmicropythonのビルドが間違ってる?とか思ってボード情報を見直した。rp2350 を指定する必要があったが漏れてたので、それを修正したが動かない。

外部に信号線が出てればロジアナつなぐんだがなあ。RP2040PiZEROと違って不便だなぁ。

と思って気が付いた。RP2040PiZERO使ってテストすりゃいいのか。


pythonプログラムなので修正はポート変更するだけ。そして動かしたら全く問題なく波形が出てる。あれ?なんで?

SDカードをつないでも問題なく動く。あれ?なんで?


RP2350固有の問題かなぁ。と思ってマニュアルを読んでいたら RP2350の拡張機能が書いてある。

PIOはGPIO32本が前提で設計されているらしく、RP2350Bで追加されたGPIOを使うには、GPIO_BASE を設定して、GPIOのピン番号をずらして使うようだ。

なるほど、そういう仕掛けなのか。

って、じゃあmicropythonのドライバがエラーを返してくれればいいのに…


ともあれGPIO_BASEを設定すると、ちゃんと2バイト目以降も処理をするようになった。だがSDカードを認識しない。データの読み取りができてない感じ。


ポートが間違ってるかと思ったが、SoftSPIで動いて使えているから番号は間違ってない。

PIOのレジスタの値をダンプしても妥当そうな値が入っている。


さすがにもう疲れた。

LCDとSDカードが同じSPIを使ってるから同時使用ができないんだが、マルチコア処理をあきらめれば使えるはず。

ということで、PIOのデバッグは未来の自分にお任せだ。


とりあえず動くところまでもっていって github 更新したい。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ