タッチ付き液晶パネルと手製のリニアエンコーダー




以前から触っているebayやAliで今、安価に入手できるILI9341を液晶パネルのコントローラーとして持つ、中華液晶パネルをSTM32F410RBを使用して簡易的なDigitalReadOutを作りました。
この安価に入手出来るILI9341のSPIインターフェースの液晶パネル、マイコンから単純にSPI通信を使って単純に通信を行って制御すると、描画速度がとても遅く、リアルタイムの表示に近い速い表示はできません。
どうも、マイコン側が表示速度のネックとなるようで、DMAを通したSPIマスターとすると高速に送信できるようです(STM32の場合)

このあたりの液晶パネルの表示速度に関しては、通信の速度に依存していて、私が触った中では、STM32F4の100ピン以上の物に付いているFSMCとゆうメモリコントローラーを使い、16bit幅のパラレルで通信(ILI9325を使用)した時が最も速かったです。

ただ、国内で販売されているこのような小型液晶パネル、パラレル接続、SPI接続共良いお値段なので、そうそうバカスカ使うわけにもいかずですし、また、海外で何故かSPIインターフェースのILI9341がとても安価だったので数枚購入してあります。
また、ILI9341の液晶パネル、タッチパネルとタッチパネルコントローラーであるSPI接続のADC、SDカードスロットが付いているものと、SDカードスロットだけの物があり、SDカードスロットのみの物の方が若干お求めやすいのですが、タッチパネルとタッチパネルコントローラーの付いたものの方が他にスイッチ等を付けなくとも、選択入力が可能なので、タッチパネル付きを使いました。

載っているタッチパネルコントローラーはADS7843ピン互換のSPT2046。もちろんマイコンのADCを使用してタッチパネル制御(とゆうかADCでの読取り)も出来るのですが、コントローラーICはタッチパネルにタッチした時に信号が出るので、この信号で外部割り込みを起こし、SPI通信にてX,Y軸のADCの値を読みこみます。


参考リンク(ebay)
2.4" 240x320 SPI TFT LCD Touch Panel Serial Port Module with PBC ILI9341 3.3V
2.2 inch 2.2" SPI TFT LCD Display module 240x320 ILI9341 51/AVR/STM32/ARM/PIC


使用したMCUはSTM32F410RB。たまたま出荷初期の物だったようで現在の価格よりお求めやすい価格で購入できました。
STM32F4を選んだのは、単純に以前からF4を触っていてF4のスタンダードペリフェラルライブラリに慣れていたからからとゆうのが大きな理由ですが、このILI9341のSPIインターフェースのものをSTM32F4のDMAを通したバースト?SPI通信が出来るライブラリがWeb上に公開されていました。

http://stm32f4-discovery.net/より
Library 08- ILI9341 LCD for STM32F4

このページ内にあるライブラリをEm::Blocks IDEのプロジェクトにインポートして使わさせていただきました。

ところで、このEm::Blocks、私自身入力補完とかがとても便利で使いやすいのですが、新しいバージョンへの移行なのかどうか解りませんが極最近発売されたMCUの設定がありません。もちろんSTM32F410自体新しいもの、なので、設定は有りませんでしたが、STM32F401RBの設定でプロジェクトを作成、メモリサイズが違うのでビルド時に使うファイル内のメモリサイズを変更してビルド、書き込みをしました。F4シリーズ内では、メモリマップされたI/O部分はほぼ同じで、小変更でのプログラムの使い回しが利きやすいです(要データシートでの確認)

このSTM32F410、F4品種内での各種機能削除された廉価品とゆう位置づけで、USBとかの機能が削減されています、が、エンコーダーの出力信号を直接受けて、32bitのカウンタで計数できる直交エンコーダーインターフェースが載っています。
STM32F410自体の最大作動周波数は100Mhzで、このカウンタの最大作動周波数も100Mhzです。モーション系の制御に直交エンコーダーを使うときに、エンコーダーパルスの落ちによる計数不良は出したくないので、ハードウエアとして載っている直交エンコーダーインターフェースを使いました。

STM32に限らず、他のMCUでも直交エンコーダーインターフェースの載っているものが沢山あるので、同じ事を他のMCUでもできると思います。

液晶パネルの載っているMCU基板は、液晶パネルが簡単に載るように基板CADのEagleで作図、中華基板作成会社に発注しました。
DigitalReadOutとするため、、に基板を作りましたが必要なものを作るために割と汎用的にSTM32F410RBの全てのピンを引き出し、シルクにて各ポート番号を両面に書いてあります。
基板の回路としては、各ピン引き出しと、液晶パネル取り付け用の配線と引き出し、LDOにての電源と、電源周りのバイパスコンデンサとアナログ電源へのフィルタの追加程度で、内部OSCを使用しているためメインクロック生成用のクリスタルすら載ってません(取り付けは可能)。

パスコンの数、容量等々は、基本、STM32F410RBのデータシートに記載されてます。

このようなボードを作ると収まりが良いのですが、秋月電子で売っているSTM32の、タイマ/カウンタに直交インターフェースの載っているものであれば、ほぼ同じことが出来ると思います。

Nucleoや、STM32Discoボードなど、書き込みに必要なSTlinkが付いているので別途書き込みにSTLinkV2などを購入する必要が有りません。また、自作MCUボードを作った場合、NucleoやDiscoボード上のターゲットデバイスとSTLinkをジャンパで接続を切り離し、STLink単体としても使用できるのでお得です。
このボードにも、STM32F3Discovery上のSTLinkと、STMicroがMCU書き込み用に公開しているSTlink-utilityを使用して書き込んでいます。
スポンサーサイト

テーマ : 自作・改造
ジャンル : コンピュータ

コメントの投稿

非公開コメント

ライセンス
アクセスカウンター
プロフィール

あきらひとし。

Author:あきらひとし。
木工用CNCルーターフレームと、ステッピングモータードライバを作ってみました。
たぶん記事は一般的な人には殆ど必要のない事ばかりなの、かも。

モーターは回るだけでも楽しい。制御(速度、トルク、位置)できるともっと楽しい!

メールフォーム

名前:
メール:
件名:
本文:

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ