0

VHDL でプログラミングし、LCD を構成しようとしています。私の質問は、LCD インターフェイスのタイミングと、電源投入時の初期化に必要な時間に関するものです。

初期化を行うとき、いくつかのタイミング制限があります。たとえば、ユーザー ガイドには次のように書かれています。

  1. 15ミリ秒待つ
  2. 0x30 を書き込み、240ns 待ちます
  3. 4.1ミリ秒待つなど

0x30 を LCD に書き込むとき、240ns + インターフェイス タイミングの時間を尊重する必要がありますか? (セットアップ用、ハイ有効、ホールド有効、ロー有効)。

私が間違っている場合は訂正してください。しかし、私が初期化しているときは、インターフェイスのタイミングは気にしないと思います。コマンド (機能セット、表示のオン/オフなど) を送信するときは、インターフェイスのタイミングを処理します。

ありがとう。!

4

2 に答える 2

1

新しい答え:

コメント http://www.xilinx.com/support/documentation/boards_and_kits/ug334.pdfで提供されるデータシートに従う

あなたのコメントのほとんどは、インターフェイスのタイミングがセットアップのタイミングよりも長いと主張していることに注意してください。これがバックワーズです。LCDと話すよりもセットアップに時間がかかります。

これを簡単にするために、毎回頭の中で置き換えることができる pulse LCD_E という疑似関数呼び出しを作成します。

Definition of pulse LCD_E
    wait a minimum of 40 ns (2 clock cycles at 50 MHz)    
    set LCD_E high
    wait a minimum of 230 ns (12 clock cycles at 50 MHz)
    set LCD_E low
    wait a minium 10 ns before changes (.5 clock cycle)

標準書き込みコマンドのタイミング図では、次のことを求められます。

set LCD_RS, LCD_DB(7:4), LCD_RW

pulse LCD_E

reset LCD_RS, LCD_DB(7:4), LCD_RW for lower nibble
wait 1 us

pulse LCD_E

wait a minium of 40 us before repeating

初期化は非常に似ていますが、最初の待機時間があり、間に長い待機時間がある 4 ビット コマンドのみを書いています。

初期化のためにこれを行います

wait at least 15 ms (750,000 clock cycles at 50 MHz) 

set LCD_DB<7:4> = 0x3
pulse LCD_E
wait 4.1 ms or longer, which is 205,000 clock cycles at 50 MHz.

set LCD_DB<7:4> = 0x3, 
pulse LCD_E
wait 100 μs or longer, which is 5,000 clock cycles at 50 MHz.

set LCD_DB<7:4> = 0x3
pulse LCD_E
wait 40 μs or longer, which is 2,000 clock cycles at 50 MHz.

set LCD_DB<7:4> = 0x2
pulse LCD_E
wait 40 μs or longer, which is 2,000 clock cycles at 50 MH

Initialization complete

何らかの理由で書き込み時間を短縮する必要がある場合は、より長い待機中に次のデータ入力を設定し、パルス LCD_E での最初の待機を削除できます。

私の古い答えを擁護して。データシートより~~

 After power-on, the display must be initialized to establish the required communication 
 protocol. The initialization sequence is simple and ideally suited to the highly-efficient 
 eight-bit PicoBlaze embedded controller. After initialization, the PicoBlaze controller is 
 available for more complex control or computation beyond simply driving the display.

古い答え:

これが FPGA で行われており、他のタイミング制約 (待機時間など) がある場合は、これを使用することを検討してください。

http://en.wikipedia.org/wiki/PicoBlaze

これは 8 ビット マイクロ コントローラの VHDL 実装であり、LCD からの情報の設定、書き込み、および読み取りに非常に役立ちます。チップセットは非常にシンプルで、簡単に手に入れることができます。さらに、独自の周辺機器をコーディングできます:)

無料のソフトウェアで、ここからすべてダウンロードできると思います。独自の IDE とデバッガーが付属しています。

http://www.picoblaze.info/tools.html

小さなプロジェクトだけの場合は、遅延のためにすべてのコーディングを自分で行いたいと思うかもしれません。しかし、より大きなプロジェクトに参加する場合、これは非常に便利であり、学ぶ価値があります。最大 50 MHz のクロックで動作すると思うので、より高速なクロックを使用している場合は、デジタル クロック管理を行う必要があるかもしれません。

于 2011-11-08T13:54:07.690 に答える
1

ディスプレイコントローラーに何かを書き込むときは、常にインターフェイスのタイミングを尊重する必要があります。そうしないと、無効なデータを送信する可能性があります。通常、タイムアウトを長くすると、ディスプレイ コントローラがさまざまなソフトウェア ルーチンを実行するための時間が与えられ、インターフェイス ポートの監視が妨げられる可能性があります。

したがって、初期化シーケンスの一部として 0x30 を書き込むときは、インターフェイスのタイミングを尊重する必要があります。

于 2011-11-08T12:21:39.837 に答える