【STM32】ILI9488とFONTX2とbmp画像を使う

えー、前回の記事でFat32なSDが読めるようになったので、今回の本命であるSTM32時計で大容量データを扱っていきたいと思います。

前回の記事でILI9488.hなるヘッダをインクルードしてたのですが、アレがILI9488ドライバです。

https://www.aliexpress.com/item/3-8-inch-TFT-LCD-Screen-with-Adapter-Board-ILI9488-Drive-IC-8080-Interface-480-320/32823907937.html

今回使った液晶です。まあまあ安くてタッチパネル付きでそこそこ高解像度ってしたときにこれが出てきたので買ってみました。

しかし情報が全く無くて結構困ったり…

↑今回作ったものをすべて使って動かした様子。え?左半分表示がおかしい?割っちゃったんだよ…

で、今の所タッチパネルは手を付けてませんが一応いろいろ表示して使えるぐらいになったかなぁってことでGitHubにライブラリとサンプルをブチ込んで来ました。

https://github.com/Haruroid/fff

こ れ は ひ ど い

動いてるコードに手を出したくないというのもあるのですが、やっぱりほぼ全て勢いで3時頃書いたので特にILI9488.cとかはひどいです…

 

で、それぞれの若干詳しい説明をしたいと思います。てかコード見たほうが早い気がしますが…

・ILI9488

初期化部はねむいさん氏のサンプルを参考にさせてもらいました(ほぼ丸コピだけど)。わかりやすいソースに感謝✨

ほとんどはデータシートに書いてあるとおり実装した感じなのですが、なんか16bitで繋いでるにもかかわらずRGB565のときは8bitごとに送らないといけないという謎の自体が起きました。しかしよく見たらデータシートに書いてあるじゃん…

こんなん気付かんくね~💢💢

あとRGB565で送れるのかと思ったらBGR565で送らないといけませんでした。この辺は多分初期化の仕方間違えてるんだと思いますが…なのでsendColorがいろいろワークアラウンドな感じに…

 

・ビットマップ

最初、普通にbmpファイルを読んでバッファに入れたあとポインタ渡しで処理してたのですが、流石にこんなん使い勝手悪すぎやろってことでFILのポインタを受け取って自分でseekやらreadやらをやってくれるように変更しました。特段書くことはないです…

 

・FONTX2

結構苦労しました。半角は255って決まってるのでオフセットはすぐわかるのですが、最初コードブロックの概念がよくわかりませんでした…

が、ブロックを探すときにカウントしていけばそれまでの文字数が求められると知ってなるほど!みたいな…

 

書いたものは全部Driversの中に入ってるのでcとh全部目を通すとよく分かると思うよ(適当)って感じですね…

正直自分向けに作ったものを他人に説明するのって結構難しいような…

あとはタッチやりたいなぁ….

以上です✋

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です