Previous: 2.3.3.1. 接続 |
Up: 2.3.3. HD44780互換LCDコントローラ |
Next: 2.3.3.3. データ・命令の内容 |
LCDモジュールに対してはいつでもデータを送信してもよいということではなく、各ピンのレベルの操作のタイミングが規定されています(図 6?66/図 6?67/表 6?14)。筆者が実験した限りでは、このタイミングはかなりシビアで、ずれてしまうと全く表示されないといった事態が起こります。またこのタイミングはHD44780互換液晶相互間でも微妙に異なることがありますので注意が必要です。
図 6?66 書き込み時のタイミングチャート
***再トレース 「FIG.1 WRITE OPERATION」は不要 LCDマニュアル(SUNLIKE)より***
図 6?67 読み込み時のタイミングチャート
***再トレース 「FIG.2 READ OPERATION」は不要 LCDマニュアル(SUNLIKE)より***
先述のタイミングチャートの読み方を思い出してタイミングチャートをよく理解しておきましょう。このタイミングチャートであれば、まずは最初にRSとR/Wを設定してからEをHレベルにします。読み込み動作の場合は、その後、EをLレベルにした後にLCDモジュールのデータバスからデータが出力されますので、マイコン側でデータを読み取りまず。書き込み操作の場合は、EをHレベルにした後、データバスにマイコンからデータを出力し、EをLレベルにします。この時点でLCDモジュールがデータを読み取ります。その後はまた次の読み書き操作のサイクルが始まります。
表 6?14 タイミング仕様
***再トレースして日本語にする 「Timing chart」は不要 LCDマニュアル(SUNLIKE)より***
***訳語
項目 記号 最小 最大 単位
イネーブルサイクル時間
イネーブルパルス幅(Hレベル)
イネーブル上昇・下降時間
セットアップ時間(RS R/W E)
アドレスホールド時間
データセットアップ時間
データ遅延時間
データホールド時間(書込)
データホールド時間(読み込み)
クロック発振周波数
***
この中でも重要なのが、RSとR/Wを設定してからEをHレベルにする間の待ち時間(tAS)、EをHレベルにしてからLレベルにするまでの保持時間(PWEH)、EをLレベルにした後もデータバスのデータを保持する必要がある時間(tH)、全体のサイクル時間(tCYCLE)です。ピンへのデータの出力変更はこれらの時間を意識しながら行う必要があります。
ここで気をつけないといけないのは、読み取り動作の際には、LCDモジュールからデータが出力されている間に行わないといけないので、EをLレベルにするよりも前に読み取りを行った方がよいということです。tAHが10nsしかないので、後から読み込んでもすでにLCDの出力内容は変更されている可能性があります。EをLレベルにするときが同期時だと考えていると、つい勘違いしやすいです。このあたりはデータシートでは「それぐらい理解していて当然」といったスタンスのようで、注意書きなどはありませんので気をつけましょう。
コラム6?18 1クロックの処理時間
クロック周波数の高低はHz(ヘルツ)で表します。Hzは1秒間の回数を表す単位ですから、1クロックの処理時間は、 1 ───────── = 1クロック処理時間(秒) クロック周波数(Hz) となります。 たとえば仮にクロック周波数が1KHzとすれば、1クロックの処理時間は0.001秒=1ms(ミリセコンド)となります。データシート上では「ミリセコンド」とは書かずにmsと書くことが多いでしょう。クロック周波数が1MHzだと、1クロックあたりの処理時間は0.000001秒=1μs(マイクロセコンド)となります。「μs」は、印字のフォントの関係で「mcs」や「us」と書かれたりすることがあります。そしてクロック周波数が1GHzの時は0.000000001秒=1ns(ナノセコンド)となります。 STM32の動作速度は最高で72MHzですので、1クロックの処理時間は、13.9ns≒14nsとなります。プリスケーラで36MHzに分周したときには、27.7ns≒28nsです。本章で紹介するような、外部機器とのタイミング調整を行うときには、STM32の動作速度が速いこともあり、クロック単位で待つことがよくあります。1クロックの処理時間を、概数として覚えておくとよいでしょう。 |
Previous: 2.3.3.1. 接続 |
Up: 2.3.3. HD44780互換LCDコントローラ |
Next: 2.3.3.3. データ・命令の内容 |