有機ELディスプレイコントローラ SSD1351について

SSD1351 はSOLOMON SYSTECH社のOLED (有機ELディスプレイ)を制御するチップです。中国製のOLEDモジュールなどに搭載されています。SSD1351の基本的な情報を調べてみました。

# SSD1351の概要仕様
* 128 x 128 までの解像度をサポート
* 128x128x18 bit SRAM display buffer を内蔵
* VDD 2.4V-2.6V, VDDIO 1.65V-VCI, VCI 2.4V-3.5V, VCC 10V-20V
* MCUインターフェイス 8/16/18 6800, 8/16/18 88080, 3-wire/4-wire SPI
* Color depth 262k(6:6:6) / 65k (5:6:5)
* 垂直、水平スクロールサポート

# SSD1351の電源について
* 3.3Vと13Vの電源を使う
* 一般販売されているモジュールでは、MC34063を使って3.3Vから13Vを生成している。

# SSD1351の起動シーケンス
* VCCとVDDIOに電源を入力
* 2us以上RES#をLOW
* 2us待って、VCCに電源を入力
* VCCが安定してから、２００ms待ってコマンドを送信

# SSD1351のホストインターフェース
* BS0, BS1のピンで設定する。

| BS1 | BS0 | Host interface |
|:-:|:-:|:-:|
| 0  | 0  | 4 line SPI  |
| 0  | 1  | 3 line SPI  |
| 1  | 1  | 8bit 6800 parallel  |
| 1  | 0  | 8bit 8080 parallel  |

* パラレルの16bit, 18bitモードを使う場合は、コマンドでBS2とBS3の設定を行う。


# SSD1351のコマンド

## Set Column Address (15h)
Columnの開始アドレスと終了アドレスを設定
## Set Row Address (75h) 
Rowの開始アドレスと終了アドレスを設定
## Write RAM Command (5Ch) 
RAMにデータを書き込み
他のコマンドを送るまで自動インクリメントでデータを書き込む
## Read RAM Command (5Dh) 
RAMのデータを読み込む
他のコマンドを送るまで自動インクリメントでデータを読み込む
## Set Re-map & Dual COM Line Mode (A0h) 
アドレスのインクリメントのモード（垂直方向/水平方向)を設定
色の順序(RGB/RBG)を設定
色モード(262k/65k/256)を設定
## Set Display Start Line (A1h)
RAMのどこから描画対象にするかを設定 
## Set Display Offset (A2h) 
## Set Display Mode (A4h ~ A7h)
### All OFF (A4h) 
全て黒 (GDRAMは書き換えない。)
### Set Entire Display ON (A5h) 
全て白 (GDRAMは書き換えない。)
### Set Entire Display OFF (A6h) 
上の二つのコマンドを無効にする。
### Inverse Display (A7h)
色を反転
## Set Function selection (ABh) 
VDD regulatorの設定
## Set Sleep mode ON/OFF (AEh / AFh)
スリープモードの設定
## Set Phase Length (B1h)
Phase1 と Phase2の設定 (よく分からない)
## Set Front Clock Divider / Oscillator Frequency (B3h) 
CLK、DCLKの設定
## Set GPIO (B5h) 
GPIO0とGPIO1の設定
## Set Second Pre-charge period (B6h)
phase 3 second pre-charge periodの設定
## Look Up Table for Gray Scale Pulse width (B8h) 
グレイスケールのルックアップテーブル(GS1-GS63)を設定
## Use Built-in Linear LUT (B9h) 
ビルトインのグレイスケールのルックアップテーブルを使う
## Set Pre-charge voltage (BBh) 
Pre-charge voltageを設定
## Set VCOMH Voltage (BEh)
VCOMH Voltageを設定 
## Set Contrast Current for Color A,B,C (C1h)
R,G,B毎のコントラスト設定
## Master Contrast Current Control (C7h)
全体のコントラスト設定
## Set Multiplex Ratio (CAh) 
Multiplex Ratioの設定
## Set Command Lock (FDh) 
コマンドを受けつけないモードにする

以下はテストコマンド

## Horizontal Scroll (96h)
スクロールのテストコマンド スクロール設定
## Stop Moving (9Eh)
スクロールのテストコマンド スクロール停止
## Start Moving (9Fh)
スクロールのテストコマンド スクロール開始


# SSD1351のコマンド起動シーケンス
UG-2828GDEDF11のデータシートに記載の内容がベースです。

* Command Lock 0xfd 0x12
* Command Lock 0xfd 0xb1
* Set Sleep Mode On 0xae
* Set Display Clock Divide Ratio/Oscillator Frequency 0xb3 0xf1
* Set Multiplex Ratio 0xca 0x7f
* Set Display Offset 0xa2 0x00
* Set Display Start Line 0xa1 0x00
* Set Re-Map & Color Depth 0xa0 0xb4
* Set GPIO 0xb5 0x00
* Function Selection 0xab 0x01
* Set Segment Low Voltage 0xb4 0xa0 0xb0 0x55
* Set Contrast Current 0xc1 0xc8 0x80 0xc8
* Set Master Current Control 0xc7 0x0f
* Gamma Look up Table0 0xb8  
 * 0x02, 0x03, 0x04, 0x05,0x06, 0x07, 0x08, 0x09,0x0A, 0x0B, 0x0C, 0x0D,0x0E, 0x0F, 0x10, 0x11,0x12, 0x13, 0x15, 0x17,0x19, 0x1B, 0x1D, 0x1F,0x21, 0x23, 0x25, 0x27,0x2A, 0x2D, 0x30, 0x33,0x36, 0x39, 0x3C, 0x3F,0x42, 0x45, 0x48, 0x4C,0x50, 0x54, 0x58, 0x5C,0x60, 0x64, 0x68, 0x6C,0x70, 0x74, 0x78, 0x7D,0x82, 0x87, 0x8C, 0x91,0x96, 0x9B, 0xA0, 0xA5,0xAA, 0xAF, 0xB4
* Set Phase Length 0xb1 0x32 
* Enhance Driving Scheme Capability 0xb2 0xa4 0x00 0x00
* Set Pre-Charge Voltage 0xbb 0x17
* Set Second Pre-Charge Period 0xb6 0x01
* Set VCOMH Voltage 0xbe 0x05
* Set Display Mode 0xa6
* Clear Screen どうやるの？
* Set Sleep Mode Off 0xaf

## 参考
* SSD1351のデータシート
 * https://cdn-shop.adafruit.com/datasheets/SSD1351-Revision+1.3.pdf
* SSD1351搭載のモジュール UG-2828GDEDF11のデータシート
 * https://cdn-shop.adafruit.com/datasheets/UG-2828GDEDF11.pdf