概要
Zephry RTOSで以下のLCDに表示を出す。
マイコンの状態確認用で使いたいので、SPIでのLCD表示に慣れるのが目的。
ボードは以下を使う。
準備:Cubeprogrammerのインストール
https://www.st.com/en/development-tools/stm32cubeprog.html
からSetupSTM32CubeProgrammer_linux_64.zipをダウンロードする。
STアカウント作成時は、STからのメールに届いたパスワードリセットのリンクではなく、STのサイトでパスワードを忘れたを選んでリセットすると良い。
ダウンロードできたら、zipを解凍して、
$ ./SetupSTM32CubeProgrammer-2.22.0.linux
でインストールする。
CubeprogrammerではなくSEGGER J-LINKを使いたかったけど、何でか--runnerでjlink指定するとエラーになるので、諦めてCubeprogrammerを入れた。
結線
| LCD | NUCLEO |
|---|---|
| VCC | 3.3V (CN7) |
| GND | GND (CN7) |
| DIN | D11 (MOSI) |
| CLK | D13 (SCK) |
| CS | D10 |
| DC | D9 |
| RST | D8 |
BLは繋がなくても、VCCでバックライトは光った。
NUCLER側のピンヘッダはすべて内側を使うこと。内側がArduino Header(内側のメス)とつながっている。
CN10の一番上はArduino Headerではないので、数えるときは要注意。
下から数えると、ズレない。
ビルドとフラッシュ
PCとNucleoボードをつないで、/dev/ttyACM0が見えることを確認。
$ minicom -D /dev/ttyACM0
でシリアルをつないでおく。
venvに入ってから、
$ west build -p always -b nucleo_f401re samples/drivers/display -- -DSHIELD=st7789v_tl019fqv01
$ west flash
Application is running, Please Hold on...
Start operation achieved successfully
SHIELDの指定は、
https://bridle.tiac-systems.net/doc/2.7.1/zephyr/boards/shields/st7789v_generic/doc/index.html?utm_source=chatgpt.com
を参考にした。
動作確認
解像度がズレているっぽいので、overlayを書いて直してみる
シリアルには以下が出る
*** Booting Zephyr OS build v4.3.0-rc3-5-gf955d541a434 ***
[00:00:00.188,000] <inf> sample: Display sample for st7789v@0
[00:00:00.982,000] <inf> sample: Display starts
とりあえず表示されて安心。
LVGLを試す。
まずはLVGLのサンプルプログラムを素直に書いてみる
$ cd zephyrproject/zephyr
$ west build -p always -b nucleo_f401re samples/subsys/display/lvgl -- -DSHIELD=st7789v_tl019fqv01
$ west flash
overlayのシビアな設定が影響していそう。
そもそもこの1.47インチのディスプレイが特殊っぽいので、SHIELDのoverlayを作ってみる。
$ cd boards/shields/st7789v_generic/
$ cp st7789v_tl019fqv01.overlay st7789v_waveshare_320x172.overlay
以下の通り修正する
$ diff st7789v_tl019fqv01.overlay st7789v_waveshare_320x172.overlay
27,30c27,30
< width = <320>;
< height = <170>;
< x-offset = <0>;
< y-offset = <35>;
---
> width = <172>;
> height = <320>;
> x-offset = <34>;
> y-offset = <0>;
35c35
< mdac = <0x60>;
---
> mdac = <0x00>;
$ west build -p always -b nucleo_f401re samples/subsys/display/lvgl -- -DSHIELD=st7789v_waveshare_320x172
$ west flash
こんな感じで、無事表示された。



