いろいろ試す59
●STM32L1とSTM8シリーズがNRNDになってしまった…
ほら言わんこっちゃない…温めすぎて腐ってしまいました…orz
STM8シリーズはもう少し進めたかったのですがSTM32C0が登場して
既存の8ビットはエコシステムから排除され駆逐される勢いとなって
しまいましたね…STM32L1のほうはSTM32L0,STM32U5とかが登場した
のでお役御免となった感じでしょうか…
今のラインナップを鑑みるにねむいさんが使ってきたSTM32F2やF4,
L4,L5とかも次のNRND候補になっちゃいそうですね…
まぁこれも時代の流れということで…とにも書くにもSTM8Lに関しては
最後っ屁で一件記事書いてクローズとさせてもらおうとおもいます…!
●STM32F4のHALじゃなくてSPLがアップデートしていたが…
2022年にHALライブラリじゃなくて古のStandardPeripheralLibraryが
アップデートしていたようです…内容は…
余計なことするな〜〜!
GPIOのレジスタ周りは致命的だったのでここだけ元に戻してアップデート
いたしました…
●ILI9341をシリアル接続で動かした際にDeviceIDを読み出す方法
10年前に一度記事を書きましたが10年の時を超えて皆忘れてしまってる
ようなので改めて詳しく解説しようと思います。
ILI9340,ILI9341,ILI9342のILITEK製のTFT-LCDコントローラはDeviceID
をそれぞれ持っておりそれらの読み出しコマンドは"0xD3"を使用します。
尤もi8080などのパラレルなデータバスの読出しはデータシートの
通りに従えば期待していたDeviceID(ILI9341なら0x9341)を読み出す
ことができます。しかし、SPI(以下シリアル)バス接続の場合は何故か
この通りにやっても絶対に読み出すことはできません。
これについては10年以上前から様々なコミュニティで話題が上がって
おりますがシリアル接続では独特の手順をもってしないと読みだす
ことができません。
ILI934x系のコントローラはシリアル接続でレジスタの値を読み出す
ためにはデータシート未記載の"undocumented"なレジスタにアクセス
する必要があります。それがRegisterReadIndex(0xD9)です!
使い方は以下の通りです。ReadID4コマンド(0xD3)を実行してシリアル
接続でDeviceIDを読み出す手順です。
/**************************************************************************/
/*!
Read ID ILI934x.
*/
/**************************************************************************/
static uint16_t ILI934x_rd_id(uint8_t cmd)
{
uint16_t val;
uint16_t temp;
ILI934x_wr_cmd(0xD9); /* SPI Register Read Command */
ILI934x_wr_dat(0x10); /* Read Mode Enable,1st Byte */
temp = ILI934x_rd_cmd(cmd); /* Dummy Read */
ILI934x_wr_cmd(0xD9); /* SPI Register Read Command */
ILI934x_wr_dat(0x11); /* Read Mode Enable,2nd Byte */
temp = ILI934x_rd_cmd(cmd); /* Dummy Read */
ILI934x_wr_cmd(0xD9); /* SPI Register Read Command */
ILI934x_wr_dat(0x12); /* Read Mode Enable,3rd Byte */
temp = ILI934x_rd_cmd(cmd); /* Upper Read */
ILI934x_wr_cmd(0xD9); /* SPI Register Read Command */
ILI934x_wr_dat(0x13); /* Read Mode Enable,4th Byte */
val = ILI934x_rd_cmd(cmd); /* Lower Read */
val &= 0x00FF;
val |= (uint16_t)temp<<8;
return val;
}
☝こんな感じでインデックスを一つずつ指定して読みだしていきます。このようなかんじでシリアル接続でもDeviceIDを読みだせます。
なんでデータシート未記載なんだYO!とお思いの方もいらっしゃる
でしょうが、実は近年にリニューアルされたデータシートにはちゃんと
記載されてやがったりします。これはILI9342"C"のデータシートです。
もちろんILI9342無印では記述がありませんでした。
また、同様のアクセス方法としてはILI9486Lも同機能のコマンドが存在
しております。てか"DGAMCTRL (Digital Gamma Control 2)"とかなってて
でたらめでめっちゃ適当ですね…
さらに今年判明した衝撃の事実ですが128x128サイズを主にサポートする
ILI9163系のコントローラも0xD9を実行すると不可能だと思われていた
シリアル接続のDeviceIDを読み出し可能なことを確認しました!!
ソースコードに上記のように反映しております!
という感じで定期的に持ち上がるILI934x系のネタですがシリアル接続で
この液晶を使うシーンが極めて多いので情報としてしっかり残して
おこうと思います!
最も昨今はST7789Vx一族にだいぶ押されておりますがー!
これらの成果物は主におきぱにあるSTM32F4のFatFs移植作例に収蔵
されております。プロジェクトの下記ドライバを参照してください。
./lib/display/drivers/src/ili934x.c(ILI9342を除く)
./lib/display/drivers/src/ili9342.c
./lib/display/drivers/src/ili9481.c
./lib/display/drivers/src/ili9163x.c
●新液晶モジュール続々登場!
液晶モジュールつながりでもう一件です。
超久しぶりですがこの前ST7789V2にも対応したついでに新たに買った
中華TFT液晶モジュールをいくつか紹介させていただきます。
こちらはなななんと5inchで540x960pixelでi8080データバス対応という
今までで最大サイズの液晶モジュールです!!!!!
コントローラはNT35516という品種です。
480x854が今までの最大サイズだったので大進化ですね〜
で、動かそうとすると結構癖があった…
データバスが外来ノイズに弱くてすぐ崩れるのでねむいさんのいつもの
に合わせるのに結構苦労しましたがなんとか安定動作できるように
なりました。それにしても540x960は広すぎる…
ついに(叢雲のコスプレをした)いないさんの全身が見切れせずに
表現できるように!!やった!!
とはいえ静電性タッチパネルが装着されたモデルがまだAliexpressに
登場してないのでメインで使用する段階ではないです…
やっぱしILI9806Gなこいつが一番使いやすいですね…!
お次はHX8363Bをコントローラに持つ3.97inch,480x800な現在では
定番サイズの液晶です。こちらもタッチパネルなしです。
ていうかなんなんだ真ん中のシールは。
このコントローラはちょっと癖があって8/16bitのインターフェース
を決定する設定は外部に出るピンではなくレジスタに入れる値で決定
します。これ10年以上前に使用したS1D19122に似てますね〜
動かしたところです。
まぁ可もなく不可もなくといったところですね〜
やっぱしILI9806Gなこいつが一番使いや(r
こちらはR61408が使用された3.97inch,480x800のものです。
FT5216の容量性タッチパネルコントローラがついたタッチパネル
つきになっております☆
最近に販売されている中華液晶の下駄基板はパタンでお絵描きしたりが
なくなって殺風景なのでちょっと寂しいですね…一応RGB/8bit/16bit
そしてI2Cまで使用可能です。R61408のシールは私が貼りました。
動かしたところ。
かなり発色が良いですね〜
でもやっぱしILI9806Gなこい(ry
んでもって10年くらいまえのりべんぢですがNT35510のまともな奴が
手に入りましたので動かしてみました。
サイズは定番の3.97inch,480x800です。
こちらも発色がなかなかでした…以前はまともに表示できなかったので
10年越しにりべんぢできたかんじですね…!
最後にRM68180が使用された3.97inch,480x800のモジュールです。
FPCコネクタ接続でインターフェースは8bitという速度的に苦しい
ものですがはてさて
かなり苦労しましたが何とか表示できるようになりました。
RM68120のコードとほぼ同じなのでrm68120.cと同居しました。
というわけで最近久しぶりに入手したTFT液晶モジュールを一気に
紹介しましたが現時点では使いやすさ、安定性、表示領域の面を
鑑みるとILI9806Gなこいつが鉄板と言わざるを得ませんね。
NT35516のやつがもうちょっと頑張ってくれたらよいのですが、
これから先も当分の間はILI9806G使ったやつのお世話になりそうです。
-
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (116)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (81)
- STM8 (2)
- Wirelessなアレ (16)
- おきぱ (1)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (25)
- STM32U0はぢめました
⇒ ねむい (08/07) - STM32U0はぢめました
⇒ ひかわ (07/28) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (05/17) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - いろいろ試す61(と今年の反省会)
⇒ ねむい (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/01) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (12/31) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ひかわ (12/31)
- October 2024 (1)
- September 2024 (1)
- August 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (1)
- April 2024 (1)
- March 2024 (1)
- February 2024 (2)
- January 2024 (1)
- December 2023 (4)
- November 2023 (2)
- October 2023 (2)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (6)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.