2019年8月16日金曜日

Raspberry PiでRetina液晶を使ってみた

前回作成した自作液晶をRaspberry Piで使用してみることに。しかしiPadのRetina液晶の解像度はRaspberry Piには標準的に組み込まれていない解像度設定になるためにカスタム解像度として登録する必要がある。

iPad3のRetina液晶の解像度はQXGA、数字でいうと2048x1536でXGA(1024×768)の面積4倍なのでQuad-XGAということらしい。
今どき4:3の液晶も少ないし、確かフラットブラウンの17~19インチぐらいで対応してた解像度だった気もしなくもない…

とりあえずそのままの状態でRaspberry Pi 3B+に接続して起動してみた。

するとフルHDの解像度のまま引き伸ばされて表示されている。液晶コントロール基板のスケーリング自体が比率固定に対応してないっぽいので(ファームの問題?)結構見ずらい。
この液晶の解像度自体はフルHDよりも高解像度のため、文字もぼやけた感じに。
まぁデフォルト解像度の中でも4:3を選べばとりあえずは縦横比合うけどせっかくのRetina液晶が無駄に…

というわけでカスタム解像度の設定。
config.txtをいじれば良いっぽい。

hdmi_group=2
hdmi_mode=87
hdmi_cvt=2048 1536 60 1 0 0 1
max_framebuffer_width=2048
max_framebuffer_height=1536
hdmi_pixel_freq_limit=224000000

これをconfig.txtの一番最後に追記するだけである。
一応どういう意味かというと
hdmi_groupは1または2を選択できる。
1はCEAで主にテレビなど。2はDMTで主にPC用ディスプレイ。
CEAは例えば1080pみたいな表記で、DMTは1920x1080みたいな表記になるはず。
今回はPC用ディスプレイの解像度フォーマットなので2を選択。
hdmi_modeは解像度設定番号みたいなもので、86までは定義されているので空いている87を使用。
hdmi_cvtはカスタム解像度の定義
縦の解像度、横の解像度、リフレッシュレート、縦横比、マージン、インターレース、リデュースドブランキング
2048x1536@60Hzで縦横比は今回は4:3なので1番を指定。マージンもインターレースもなし。リデュースドブランキングは今回はLCDなので1にしてみた。
max_framebuffer_widthとmax_framebuffer_heightはフレームバッファのサイズ設定。フレームバッファのサイズが解像度と合っていないと引き伸ばされたり縮小されたりしてしまう。
hdmi_pixel_freq_limitはピクセルクロックのリミット設定。Raspberry Piのピクセルクロックのデフォルト値ではRetina解像度には足りないためリミットを増やす必要がある。
単純にドット数×周波数ではないのが面倒なところなんだけど、ここはLCDのデータシートのクロック周期の最大値を持ってきて計算すると2348x1584x60で切り上げて224Mhzに設定。

再起動してみると
うまく認識した。ピクセルクロックは209.4Mhzだったみたいなので足りてるみたい。


いやーQXGAめっちゃ広いわー
そして結構発色が良い。さすがIPS液晶。

Retina液晶ネタもうちょっと続きそう。ケースとかスピーカーとか。

0 件のコメント:

コメントを投稿