SPI液晶 の ILI9341 のコードが Github にて公開されていましたので今回は TouchGFX を SPI液晶 で使用してみたいと思います。
ILI9XXX/XPT2046-STM32
Github の ILI9XXX/XPT2046-STM32 を使用します。
https://github.com/maudeve-it/ILI9XXX-XPT2046-STM32
参考動画
A fast TouchGFX library for ILI9341, ILI9488 and ST7735 on STM32
設定内容
z_displ_ILI9XXX.h の STEP と HOW TO setup a project with this software の内容に合わせて設定します。
/*||||||||||| USER/PROJECT PARAMETERS |||||||||||*/
/***************** STEP 1 *****************
HOW TO setup a project with this software
プロジェクトを生成する
最初に新規プロジェクトを作ります。
File⇒New⇒STM32 project
使用するマイコンを選定し OK をクリックします。
Project Name を入力し、Finish をクリックします。
デバイス設定をする
最初に クロック の生成と 周波数 を設定します。
Crystal/Ceramic Resonator を選択します。
次に Clock Configuration をクリックし、周波数を設定します。
今回は 100MHz にするため、HCLK に 100 を入力します。
Enterを押すと、自動で設定が変更されます。
SPI設定
次に、使用する SPI の設定を Step3 の通り SPI2 の Mode を Full-Duplex Master に設定します。
GPIO のピンの名称は以下を参考に設定します。
DMASettings にて Add から SPI2__TX を追加します。
NVIC Settings において SPI2 global Interrupt の チェック を入れておきます。
GPIO設定
GPIO Output を 4本追加し、以下設定を行います。
GPIO⇒Configuration
TOUCH_INTの設定
TOUCH_INT用 に GPIO_EXIT を追加します。
Interrupt mode において External interrupt-falling edge を選択します。
PWM設定
バックライトに使用するPWMの設定を行います。
STEP 6 の通り TIM2 TIM_CHANNEL_1にPWM Generation CH1 を選択します。
prescaler,counter period は Youtube を参考に 10000/100 としました。
使用するピンの UserLabel を入力します。
STEP 7 を参考に TIM3 の InternalClock のチェックを入れておきます。
TouchGFXを使用する
TouchGFX 使用するため、CRC の Activated にチェックを入れてます。
TouchGFX を有効にするため X-CUBE-TOUCHGFX を使用できるようにします。
X-CUBE-TOUCHGFX をクリックします。
SoftwarePacks Component Selector にて X-CUBE-TOUCHGFX を有効にします。
X-CUBE-TOUCHGFX を開き Graphics Application のチェックを入れることで X-CUBE-TOUCHGFX が有効になります。
FrameBuffer Strategy にて Partial Buffer を選択します。
解像度は使用するデバイスに合わせて設定します。
ILI9341の場合、240/320 pixelsにします。
Device Configuration Tool code Generate を押すことでハードウェア設定に基づいてコード生成されます。
続いて、プログラムに進みましょう。
SPI液晶 ILI9341をTouchGFXで使おう2に続きます。
https://qiita.com/usashirou/items/1671e1664f473ea01c59