

なにが良いかというと
- TFT で綺麗。視野角も広い。
- タッチパネル付き。
- 3.3V でドライブできる。-- バックライトも 3.2V - 3.4V 。
- 比較的安い 1980円。タッチパネルも利用するなら格安かも。
- ちょっと改造するだけで、8bit パラレルにできるらしい。
→EGO028Q02 8ビット MPU I/F化 成功!!
R3 の抵抗を R4 に移すだけ。 - コネクタが 1mm ピッチフレキ。
この液晶のサイズは、50.0 x 69.2 x 4.05 だそうだ。C 基板より少しだけ幅がある。
C 基板サイズで思い出したのだが、千石でも扱っている RFAD のケースに入りそう。MK8260 は 外寸:82× 60×20mm 内寸: 76× 54×12mm 。ガラス板は、ABS の枠を下から当てて止めている。この枠は瞬間接着剤で接着してあるような感じだが、なんとか外せる。(彫刻刀の平刀をタガネ代わりにする/はがし液(アセトン)は×)
彫刻刀は、中央は半丸刀をつかって、端は薄刃の平刀をつかっている。(どちらもダイソー)。半丸刀は、隙間を広げていくのに具合が良いが端の処理ができない。端は薄刃のほうが具合が良い。

関係ないが、RFAD のサイトで、パワーLED用アルミ基板を扱ってた。秋月の1W/3W出力LEDが付けられるようだ。


NEWランチャーライト改造ネタに良いかも。

大きさは 20mm 。一方 NEWランチャーライトの内径は φ22mm ぐらい。入るのは良いが、熱を外に伝える方法を考えないと。
次の基板設計のネタにしたい。
ちなみに、2.4 inch の YHY024006A も同じ機能。コントローラチップも同じでピンアサインも同じ(ピッチは 0.8mm で違う)。8bit パラレルに改造できるのも同じ (R2 を R1 に付け替え) 基板を設計するならこれもつなげられるようにしたい。


基板サイズは、50 x 72 ?
CPU は xmega256A3/192A3 にしたいところだが... それでいったい何をするのかが問題だ。
理由は 0.8mm ピッチで最大のものだから。D4は、RAM が少ないし、ADC が 1つしかない。( DAC も 1 個だが 2ch 出力なので OK)
簡易オシロ?
XMAGA の ADC は、2つあり 12bit で 最大 2M sps。同期しての採取も可能。... 差動入力もあり利得が 1 倍 〜 64 倍まで、 符号付きも OK。さらに 内部 1.0V 基準電圧 はデータシートによると非常に正確だそうだ。
DMA も使えるから CPU の負荷も減らせる。
メモリが少ないし演算能力も相対的に低いので 簡易オシロにしかならないが、なかなか良さそう。
メモリは、xmega256A3/192A3 が 16KB 。
ちなみに DMA は 直接 SPI とかに送ることも可能。あまりわかっていないのだが、2 バイト x 2ch を送るのも可能なような感じ。相手が SPI RAM とか なら 2M bytes/sec (2ch 12bit なら 500ksps) で 32KB 連続で書き込むことは可能。
microSD では、連続で書けるのは セクタサイズまでなのでバッファリングしないといけない。ただ microSD 内部に書き込みバッファがあるので、工夫すれば MB クラスの量を途切れなく書き込める(はず)。あと、たいがいの シリアルフラッシュは連続書き込みは遅い。
入力部は、こんな風にオペアンプを入れようと思う。

ここでは AREF=1.0V と仮定。そして、AREFを仮想グランドにする。増幅度が 1/10 になるから フルスケール -9V 〜 +11V 。Rail-to-Rail のオペアンプでなければ もっと範囲は狭くなる。
11V だと オペアンプの出力は AREF を基準にして -1V .. すなわち 0V 。差動入力 ADC から見れば +1V だから MAX 値。
-9 V だと オペアンプの出力は AREF を基準にして +1V。差動入力 ADC から見れば -1V だから、両極モードで測定する。
ADC の利得は、8 倍まで。そうしないと 0V も測定できなくなる。カップリングコンデンサを enable にすれば AC しか測定できないが、利得は 64倍まで OK。AC/DC モード の切り替えは アナログスイッチ(SN74HC4066D,74LVC4066Dなど)を使おうと思う。
1M + 0.1uF の直列 は HPF で cut-off 周波数は、1.6 Hz。
オペアンプの (+) 入力 は、R1 // R2 (合成抵抗値) の抵抗を通して 仮想グランドに接続すると良いらしい。R1 = 1M, R2 = 100K だと 合成抵抗値は 90K 。基準電圧の インピーダンスが 高い場合は、ボルテージフォロワとかで増幅する。

低電圧で動作するオペアンプは選択枝が少ない。0.65mm ピッチの LMV358 ぐらいしか安く買えない。これでも 帯域幅 1 MHz あるし、RAIL-to-RAIL 出力だし 問題ないように思う。ADC の性能 以上は無意味だし。一応 デジキーで これ以上の帯域のものを探してみたが、TS972 , MCP6022ぐらい?
実は、内部基準電圧は外部に引き出せない。外部基準電圧を使う場合 1.2V の方が具合が良い。1.0V で検討してみたが、たぶん 1.2V に変更する。
ところで、A4 は、ADC が 1つしかないから選択しないと書いた。同時に採取できないと思ったためだが、条件を付ければ同時採取が可能。ADC 1 つにチャネルが 4 つある。ch0/ch1 は、利得のない差動増幅器付きで、ch2/ch3 は、利得付き。利得なし と 利得ありは、同時に採取できる。よくわかっていないのだが、ch0/ch1/ch3 の同時起動 または全チャネルの同時起動で ch1/ch2 が同時採取になるみたい。
ロジアナ?
8ch で 数M sps で良いのならロジアナも可能かも知れない。こちらも メモリがネック。
事象システムとDMA を組み合わせる。事象システムで 4clock の遅延がある。... となると 最大でも 8M sps ぐらい?
あと外付けラッチを付けないと 数クロック遅れて採取することになる。定期的に採取するなら PWM でラッチを制御する。
ラッチは 透過モードと 3state がある 74LVC573AM が 良さそう。5V トレラントだし。
OE=L , LE=H で、入力がスルーになる。LE=L にすると、そのときの値を HOLD 。トリガにした場合は、XMEGA が受け取るまで (120ns) L レベルを保つ必要がある。入力をスルーにした場合でも、レベル変換のバッファとして役に立つ。OE=H にすれば Hi-Z になるので、PORT を他の目的に使用できる。
機能は良いのだが、20pin SOIC は 幅がある。0.65 mm ピッチは嫌なのだが ... うーん。
あと 数クロック遅れて良いなら、トリガの自由度を高くできる。
ポートを複数つかっての同時採取はできそう。ただやっぱりメモリが厳しい。
SDRAM を付ければメモリの問題は一気に解決するわけだが ... そこまでしたいなら XPLAIN を買う。
音源とかプレーヤーとか?
DAC も 付いているし取り敢えずサウンド出力は付けるだろう。... そうなると MicroSD も一応付けたくなる。
DAC に 負帰還のアンプが付いているようだから カップリングコンデンサを入れるだけで ヘッドホン出力ぐらいは出来そう。
カップリングコンデンサは場所を取る。いっそのこと BTL とかにできないか。(低耐圧の大容量セラコンは波形が歪むから良くないらしい。耐圧は 25Vぐらい欲しい)
パラレル出力
PORT A,B は、ADC/DAC 用として割り当てる。それ以外はデジタル。いろいろなデバイスと兼用になっているわけだが、同じ種類のデバイスが複数あるので、条件は少ない。パラレル出力用に PORTF あたりを割り当てれば良さそう。
ところで、DMA で出力するには、起動するためのタイミングが必要。パラレルの場合データを出力するだけなので、それ自体にはタイミングがない。たぶん PWM を使って nWR のパルスを作り、nWR の __↑~~ に合わせて DMA で次のデータを出力するのだろう。PWM を止めるのも 事象システム+DMA 。DMA 完了で PWM を止めるためのデータを転送する。
ちなみに、ILI9320 のデータシートには、nWR のパルス幅は 50ns 以上、WRITE サイクルタイムは、100ns 以上と書いてある。DMA がどれぐらい遅延するか見極めないと周期が決められないので要注意。
( PORTに事象0 を出力する機能を使って nWR を作ろうかと思ったのだが、1clock 30ns のパルス幅なので厳しい。)
タッチパネル
タッチパネルも 自前の ADC で制御したい。コントローラとして、ADS7843があるので、データシートをちゃんと読めばどうするのが良いかわかるはず。
... どうも 測定しない方 に 電圧をかけて 分圧した電圧を AREF=VCC で測定すれば良いらしい。
X+ X- Y+ Y-
PORT(H) PORT(L) ADC
ADC PORT(H) PORT(L)
この程度の処理なら、AVR の ADC で十分そうだ。
ホスト インターフェイス
やはり、USART か。自作ボードの DAC23-U4 か SRT162B をつなぎたい。この 2 つのボードは USART のピン配置を同じにしている。
PDI にもつなげておけば、書き換えも出来るようにはなる。普通はブートローダ使うのだろうけど。それを作ったりもしたいから PDI も欲しい。
DAC23-U4 の場合、ADC も 4ch コネクタに出しているし、SPI も使える。単独で液晶を制御できても良いかもしれない。
液晶のコントローラ ILI9320 自体は、SPI をサポートしているのだが、SPI に設定する IM1/IM2 がアサインされていない。フレキ上になにか抵抗があれば、あるいは設定可能だったりするのかも。
XMEGA の方でも パラレルでDMA するのはなにかと面倒なので、結局 SPI の方が高速になったりするような気がする。どうにかならないものか。
... フレキの上にある抵抗は 1 個しかない。どうやっても無理そうだ。
追記:
サイズを確認するためのデータを作成。

一番外が RFAD ケースの内寸 -1mm 。基板の最大サイズ。四方に穴があいているのが C 基板のサイズ。コネクタは、dac23-mega とか dac23-u4 に合わせた。
2.8インチTFT 液晶 EGO028Q02 と 2.4 inch の YHY024006A の両方を載せられるようにするのは無理がありそうだ。そして、YHY024006Aの方が収まりが良い。他のものと干渉しないし、C 基板にフィットしている。
YHY024006A を使うことを考えようかと思う。--- というわけで確保。EGO028Q02 の方は忘れよう。
ところで、バックライト LED が 3つ4つあり、アノードコモンになっている。明るさにバラツキが出るのは面白くないし、ちょっとドライバは凝りたい。
普通は個別に電流制限抵抗を付けるそうだ。そうすると Vf より少々 高い電圧が必要になる。Vf はばらつくのが普通だから、電流を揃えるのは面倒そうだ。探したら、STP08DP05MTRというのを見つけた。8bit の ラッチ付きシフトレジスタなのだが、出力に定電流回路がある。出力を LEDK1/2/3/4 に直結できて良いかも。他にも同じピン配置の TLC5916やCAT4008Wなどがあり定番の IC らしい。

LMV358を使った定電流回路でも良いかも知れない。安いし小さくて場所を取らない。
ちなみに、大電流を流す場合は、トランジスタや MOS FET を追加する。

あ、LED はアノードコモンだった。トランジスタを入れないと使えない。... そうすると場所を取る。... ボツ。
追記:ちょっと考えかたを変えた。
いろいろ検討してきたが、すべてを載せるのは無理そう。
とりあえずは、DAC23-U4 ボードをマウントして使う場合に便利なものを載せて、I/O ボードとして考える。その上で、XMEGA も同じようにマウントできるようなことを考えよう。
そして、DAC23-U4 ボードで効率良く使うために SPI でインターフェイスする。SPI → パラレルは、CPLD で 設計する。
CPLD は、XC2C64A 。32A でも、SPI 機能 に十分そうだが、もう少し付加機能を入れたい。
もともとある SPI 機能互換にするのは能がないので、以前の記事で書いた I2C ディスプレー と同じように、制御バイトを付けて、コマンド / データ を切り分ける。Read をできるようにすべきかどうか あまり考えていない。
付加機能 としては、LED のドライバはどうだろう?
I/O バンクは 2 つあるので、片方を LED 用ドライブ用にする。合計で 60mA 流せるのかどうか? よくわからないものの大丈夫そうな感じ。絶対最大定格は 4.0V で 通常範囲では 最大 3.6V 。Vf は、最大 3.4V だそうだから大丈夫。1 pin あたりは、数 mA しか流れないから 何本か まとめて 1 つの LED に接続する。
クロックを供給して、個別に明るさを調整できる PWM 機能を付ける。8bit は無理で 6bit ぐらいか。クロックは DAC23-U4 の MCLK 用のピンから供給する。
無理かも知れない。出力 1 つに マクロセル 1 つ 必要だし。そんなことより、余ったら付けるべきは プリスケーラ。AVR は同期入力だから、クロック / 2.5 ぐらいまでの周波数しか入力できない。周波数カウンタとか .. そういうものを作りたい場合 プリスケーラが有用。
基板サイズも決めた。RFADのケースの内寸 + 1mm 〜 1.5mm で作成して、ガラスが入っていたところにマウントする。ケース内部に入れる基板も面付けして同時に作る前提なら、縦方向は 内寸ギリギリでも可。ちなみに、厚さは 1.6t で問題ない。現物で合わせてみた。
120mm x 120mm に面付けすることを考えると ガラス部分用 + 内部用 に加えて 余った部分に 小ケースの ガラス部分用 + 内部用が作れる。切りしろ (外形線含む)をいれないとこんな感じか。
76.5 35.5
+------------------------+---------------+
| | |
| | |
| 大ガラス部分用 |小ガラス部分用 | 56.5
| | |
| | |
+------------------------+---------------+
| | |
| | |
| 大内部用 | 小内部用 | 54.5
| | |
| | |
+------------------------+---------------+
56.5 mm の部分が ガラス部ぎりぎり。大だと長辺で、小だと短辺。後は内寸に合わせてあるから遊びが大きい。
ガラス部専用なら
78.5 37.5
+------------------------+---------------+
| | |
| | |
| 大ガラス部分用 |小ガラス部分用 | 56.5
| | |
| | |
+------------------------+---------------+
| | |
| | |
| 大ガラス部分用 |小ガラス部分用 | 56.5
| | |
| | |
+------------------------+---------------+
遊びは、ほんのわずかなので、角をすこしヤスリで削らないといけないかも。両辺合わせたので 上記から -0.5mm しても 問題ないはず。
小ガラス部分用はなにに使おうか考えていない。
そういうものにしたので、2.8インチTFT 液晶 EGO028Q02の方がやっぱり見栄えがしそう。うーん YHY024006A をいくつか確保したんだが .. 悩ましい。
ところで、サイズを見ていて思ったのだが ... Arduino のサイズは、68.58mm x 53.34mm で RFAD のケースに入る。ピンソケットが 8mm タイプだとしても 内寸の 12mm 以下のはず。
ガラスをつけたまま 保存用ケースとして使えるし、ガラスを取って、ピンソケットだけ露出させるというのもアリかも知れない。
ejackino は、78.74mm x 55.88mm でケースには入らない。だがしかし、DC ジャックが邪魔なものの ガラス部分にはマウントできる。下向きにマウント出来るなら、使わないときの保護ケースになったりして便利かも。
それはともかく、作ろうとしているものが arduino に合うのなら考えねばならない。 japanino。たぶん dac23-u4 とコネクタ位置が 競合しない。
追記: CPLD の回路設計
いろいろ考えてみたわけだが、CPLD の回路が作れなければ話にならない。さて、それは作れるのだろうか?
基本的なことをここでメモしておこうと思う。
SPI は、1 バイトのデータを送るのに CLK に対して 8 回 クロックする。 普通 MSB が先。送信データはお互いに ↓でシフト。受信側では ↑で受け取る。作ろうとしている回路は データが確定したら nWR にパルスを送らなければならない。
CS ~|__________________________________...._|~
_ _ _ _ _ _ _ _
CLK ___| |_| |_| |_| |_| |_| |_| |_| |______
MOSI |MSB| D6| D5| D4| D3| D2| D1| D0|
|
(shift) 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 0
______________________________ _________
nWR |_|
どうも nWR の↑で データ採取するようなので、CLK の ↑ で
o シフトレジスタを シフト
o 3 bit のカウンタを +1
o カウンタ(の今の状態) が 7 のとき nWR = ~CLK , それ以外で H
RS を外から指定する前提なら 8bit のシフトレジスタ と 3bit のカウンタで事足りる。ちなみに CS は リセット 。
さて、制御バイト を追加して、RS を内部で作り出すには ...
まず、状態として RS と nCB , nCONT を新たに作り、以下の動作を カウンタ(の今の状態) が 7 のとき 行う。
o nCB が 0 のとき、RS=D7 (シフトレジスタの MSB)
o nCB が 0 のとき、nCONT=D6
o nCB が 0 のとき、nCB=1
o nCB が 1 のとき、nCB= ~nCONT
あと、nWR の動作を変更
o カウンタが 7 のとき nWR = ~(CLK && nCB ) , それ以外で L
まぁ間違っているかも知れないが、最低限の機能はだいたいこんな感じ。
ここまでで、ラッチ数 14 bit 。XC2C32A ですら 楽勝。
READ を付けるとすると どうなるのだろうか?
まず、RD という情報を 追加。制御バイトの bit5 を RD に割り当てる。
で、RD=H のときは、シフトレジスタの出力を Hi-Z にしなければならない。あと、READ 用の シフトレジスタを用意する。READ したデータは一旦ここに格納して、次の 転送で送る。
... ここらで面倒になってきた。それにしても 楽に 32bit に入りそうだ。
ちなみに、LED 用の PWM の機能を追加するには、まず カウントと PWM のレジスタ 4 つを定義して、それぞれ「カウンタ値 > レジスタ値」で H を出力する。PWM のレジスタに書き込む場合は、制御バイトに bit を追加していけば良さそうだ。
追記: arduino のシールドにしてRFAD のケースに入るのか?
サイズ確認のためのデータ2

灰色の点線がケース外寸で実線が内寸。arduino 自体はケースに入りそうだし、dec23-u4 のコネクタとも干渉しない。
だが、高さが問題。液晶の基板から底面まで 12mm しかない。普通のピンソケットとピンヘッダの組み合わせだと基板間 10mm 。基板厚 1.6mm とすると 入りそうな気もするが 基板底面のハンダ部分があるから無理。ケース底面にドリルでくぼみを作るぐらいしないと。液晶の基板側のピンヘッダを ピンだけにすれば基板間 8mm にはなる。だが、今度は aruino の部品と 液晶の基板の部品が干渉する。AVR や ISP コネクタ、コンデンサの位置を入れてみたが、結構厳しそうだ。
さらに、大物がある。USB コネクタと DC ジャック。USB コネクタは 11mm 高さだったような... これは無理。液晶の基板を切るぐらいしないと。 DC ジャックは樹脂だから、削ればなんとか。
互換ボードだと Seeeduino なら MINI コネクタだし なんとかなりそう。大人の科学の japanino どうなるか分からないが 背があるのは、コンデンサぐらいのようだ。
arduino + ケースというオプションは 、ほとんど部品を載せられない。それでは本末転倒のような気がしてきた。とりあえず忘れよう。
そんなことより、基板が大きくなったおかげで、部品が沢山載るようになった。再度 XMEGA を検討してみよう。