ESP32はRaspberry Pi Picoと同様にデュアルコアなので,Arduino IDEでマルチコア機能をいろいろ試しています。
Arduino IDEでESP32のマルチコア機能を試してみた
Arduino IDEでESP32のマルチコア間の情報伝達のためキュー(Queue)を試してみた


今回はPICOと同じようにダイナミック駆動が必要なHUB75E規格の128*64のフルカラーLEDパネルを動かしてみました。
Raspberry Pi Picoのマルチコアで RGB LEDディスプレイを動かしてみた


[構成図]
ESP32の内での役割分担とメモリなどの構成です。
( PRO_CPUがCore0, APP_CPUがCore1です)





上記の構成での出力例です。

5月は子供の日ですね。




4月の桜を出してみましたが,,淡い色は難しいですね。
赤を強調すると梅になってしまいます(^^;;;;;;





[プログラムの変更・追加部]
 以前のプログラムの表示出力部を別コアで動かすように少し変更しました。


・PICOとはSDカード周りと,パラレル出力のレジスタ指定が異なります。
 また,今回は512色(RGB各3bit)です。





・setup()の前にキューのハンドル名を宣言しています(38行)
・setup()内ではコア0で動かす"task1"とコア間連絡用のキュー作成しています。
 (60,62行)





・今回のloop()部はバッファにデータが入っているので,その表示バッファ番号をキューでコア0に送り,時間待ちしているだけです(^^;;;;;





コア0で動く"task1"で無限ループです。
 キューにバッファ番号が入っていたら読み取ってバッファを切り替えて表示を続けます。





・1画面の出力部です。
 PICOなどとパラレル出力のレジスタ操作の書き方は違いますが,出力動作は同じです。
 上記のプログラムでWDT(Watch Dog Timer)のリセットのためのdelay(1)が入った影響があり,表示の最終行と他の行との明るさに差が出たので調整のNopを入れています。





SDカードからの読み取りの不調などでゴタゴタしましたが,何とかマルチコアでLEDパネルの表示ができました。

あとは動きなど表示データの加工を,今は空っぽのloop()でいろいろとやっていけば良いはず,,です。

ま,このデータ加工部分はRaspberry Pi Picoのシステムとも共有できる部分ですので,作っておくと便利ですね(^^)。