Basic library for SHARP LCD LS027B4DH01/LS027B7DH01

Dependents:   AkiSpiLcd_demo AkiSpiLcd_demo2 LCDRAM AkiSpiLcd_example

Files at this revision

API Documentation at this revision

Comitter:
K4zuki
Date:
Wed Sep 28 04:12:37 2016 +0900
Parent:
24:242c02ed28e6
Child:
26:652198c957a0
Commit message:
add caution; fix LCD spec part

Changed in this revision

markdown/1.0_BoardDesign.md Show annotated file Show diff for this revision Revisions of this file
markdown/TITLE.md Show annotated file Show diff for this revision Revisions of this file
--- a/markdown/1.0_BoardDesign.md	Mon Sep 26 02:02:06 2016 +0900
+++ b/markdown/1.0_BoardDesign.md	Wed Sep 28 04:12:37 2016 +0900
@@ -1,21 +1,26 @@
 # 基板の設計
-## 液晶の仕様
-~~データシートを参照したらわかりますよね~~
+## 液晶(_LS027B7DH01_)の仕様
+~~データシート[^16]を参照したらわかりますよね~~
 
 - 5V単一電源で動作、低消費電力
 - 2.7インチモノクロTFT液晶
 - 400 x 240ドットで高解像度
 - 液晶が画素メモリを保持 - コントローラのVRAMが不要
+- 最大6本の信号が必要
+- 画素の情報を保持したまま表示をオンオフできる端子がある(**`DISP`**)
+- 画面焼け防止のためのモード選択及びクロック入力端子がある(**`EXTMODE`/`EXCOMIN`**)
 
 この液晶の操作には最低3本の信号線が必要です:
 
-- **MOSI**:SPIマスターからのデータ線
-- **SCK**:SPIクロック線
-- **CS**:スレーブセレクト信号線
+- **SI/MOSI**:SPIマスターからのデータ線
+- **SCLK/SCK**:SPIクロック線
+- **SCS/CSL**:スレーブセレクト信号線
     - 他のSPIスレーブデバイスはLアクティブが主流です(よく見かけます)が
       この液晶はHアクティブで動作します。
 
-この他にSRAMのセレクト信号とMISO出力
+ブレークアウト基板ではこの他にSPI-SRAMのセレクト信号とMISO出力がピンヘッダに
+つながっています。一方、表示をオンオフする端子をH固定、画面焼け防止モード
+選択端子はL固定、クロック入力端子は開放してあります
 
 ## 5V単一で動くという話だけど...
 この液晶は5V単一電源で動作させられますが、データシートでは信号電圧は3Vが
@@ -31,10 +36,21 @@
 mbedなら品種によりますが動かせるので、筆者は当初から青mbedで実験していました。
 
 ## SRAMの存在意義
-<!-- ー _なんちゃってDMA_ -->
-なんちゃってDMAというか擬似DMAの実装を考えました。
+_擬似DMA_ というものをご存知でしょうか。ChaNさん[^13]の記事にパラレルバスでSRAMから
+カラー液晶にデータを流しこむ方法として掲載されていたもの[^14]です。SRAMと液晶の
+セレクト信号を同時に操作して、SRAMを読み出す操作が同時に液晶の書込みになる
+というものです。CPUが読み出し操作をするので正しい意味でのDMAではありませんが、
+それぞれを読み書きするよりは早く済みます(単純に半分程度の時間で済む)。
+
+これをSPIバスで実現しました:SPI-SRAMと液晶のセレクト信号を同時に[^15]
+イネーブルにして、読み出されたデータをそのまま液晶への命令にします。したがって
+SRAMには画像データと液晶への命令データが書かれていなければなりません。
 
 <!--  -->
 [^11]: ちなみにこれがカラー液晶だとRGB各1ビットだとしても少なくともこの3倍必要な計算に
 なります。ムリダナ
 [^12]: ArduinoのメインマイコンATMega328のSRAMは2KBです。まぢ無理...
+[^13]: http://elm-chan.org/index_j.html
+[^14]: http://elm-chan.org/docs/avr/avrdma_j.html
+[^15]: TODO:実際はSRAMの読み出し命令を書き込んでいる間、液晶はセレクトされません
+[^16]: http://www.mouser.com/ds/2/365/LS027B7DH01-542063.pdf
--- a/markdown/TITLE.md	Mon Sep 26 02:02:06 2016 +0900
+++ b/markdown/TITLE.md	Wed Sep 28 04:12:37 2016 +0900
@@ -45,16 +45,22 @@
 側のプログラムが簡潔にできます。
 
 直後に秋月電子もコントローラ基板を売りだした[^03]のですが、コントローラのPICマイコン
-と液晶搭載部分が一体になっていました。
-
-一方筆者も2014年にArduinoシールド形状の基板を試作[^04]し、OMMFで販売もしました
-が、その後マルツ[^05]とスイッチサイエンス[^06]で通販を始めた際に現在の設計に
-変更しました。
+と液晶搭載部分が一体になっていました。しかしこれでは液晶の動作確認はできますが
+応用・流用しづらいので筆者も2014年にArduinoシールド形状の基板を試作[^04]し、
+OMMFで販売もしました。その後マルツ[^05]とスイッチサイエンス[^06]で通販を
+始めた際に現在の設計に変更しました。
 
 この本では、現在販売されている基板及びmbed用ライブラリ[^07]の設計についての解説
 をします。いままでにこの基板を入手された方は特に _SRAMの存在価値について_ 疑問を
 お持ちだと思いますので、そのあたりを重点的に。
 
+# 注意事項
+
+この文書で対象とする液晶モジュールは前述の秋月電子で販売中のものと、Mouserで
+入手できるもの[^08]の2品種のみとします。最近スイッチサイエンスで販売しだした
+カラータイプはどうやらピン互換のようですが電源電圧が異なるので基板側に改造が
+必要になると思いますし、とりあえず対象外にします。
+
 `markdown/1.0_BoardDesign.md`{.include}
 <!--  -->
 [^01]: TODO: 秋月商品ページへのリンク
@@ -64,3 +70,4 @@
 [^05]: TODO: マルツ商品ページヘのリンク
 [^06]: TODO: スイッチサイエンス商品ページへのリンク
 [^07]: TODO: mbedライブラリへのリンク
+[^08]: TODO: Mouser商品ページへのリンク