いろいろ試す5



以前購入したものの全く触れていなかったPSoC5を少し触りました。PSoC5は中の
CPUコアがMAX80MHzで動作するCortex-M3が採用されています。6月位にPSoC5の
評価キットPSoC 5 FirstTOUCHが安価で販売されたので、CypressからSRAMと
一緒に購入しました。


統合開発環境のCPUコア(Cortex-M3)プログラムのビルドはGCCです。
CodeSourceryG++を呼び出すようになっています。


P.O.V.による文字表示がデモプログラムが出荷時に書き込まれています。
電源を入れてぶんぶんふるとメッセージが順次表示されます。

今現在C言語ソースしかいじり方が分からないのでCypressのサイトの
チュートリアルでもみてツールの使用方法を覚えていきますか…。
以上前フリ終わり!



さて、ゆっこちゃんの誕生日(だいぶ前ですが)も無事終わり、少し落ち着いた
のでかねてから考案中だった複数のフォントに対応したFontX2ドライバ作りを
行いました。
ProjectC3氏のページの内容を元に以下のような動かし方にしました。

1.半角・全角ごとにFontX2ファイルのヘッダー部の構造体をSRAM上に構成する。
2.各フォントを登録するごとにSRAM構造体の分だけをゴリゴリ消費。
 (というわけで比較的大規模のマイコン上での使用を想定してます)。
3.半角・全角ともにグローバルなFontX2の構造体ポインタを置き、文字描画する関数
 群は全てこれを参照するようにする。
 使いたいフォントで文字を描画する前に構造体ポインタに「1.」で登録した構造
 体のアドレスを渡すようにする。こうすることで使用したいフォントを簡単に切り
 換えることができる。
4.FontX2側のドライバは使用するFontX2ファイルの登録と、要求されたascii/sjis
 文字コードに対してフォントデータの実体があるアドレスのオフセットを返す。

決め打ちでやるのならばSRAMなぞ消費する必要はないのですが、汎用性を上げたかっ
たのでこんな感じにまとまりました。今はまだマイコンのフラッシュメモリ上にFontX2
のデータをそのままのっけています。こちらも追々と大容量のSPI-ROMに追い出すつ
もりです。

というわけでSTM32やLPC2388のTFT液晶表示プログラムにそれを組み込みました。
タッチパネルの設定の際に使用しています。


当たり前ですがフォントそのものは同じなので以前のと見た目は変わりませんけどね。
表示に使用しているデバイスはSTM025QVT-001を使用しています。何気に使用可能な
MCUバス接続タイプのディスプレイモジュールの種類もどんどん増やしていってます。



あと、IJG JPEGライブラリを使用したjpegファイルのデコードの実験なんかも試みて
います。同ライブラリを使用したsirius506氏作成のmp3プレーヤーのフォトフレーム
部をそら氏がSH-2A向けに利用されたものをさらに参考にさせてもらいました。

いろいろ試行錯誤してようやくビルドが通ったのですがバイナリサイズが220kbyteも
膨れ上がってしまったのでフラッシュメモリ容量がMAX256kByteしかないSTM32F107
系には到底載りません。というわけでjpegデコード機能を乗っけるのはフラッシュ
容量が豊富なLPC2388やSTM32 Primer2向けのみ(将来的にはLPC1769も)
になりそうです。

QVGAサイズの場合LPC2388ではjpegデコードに必要な最低限のRAMは
1024*35=35840Byte
以上必要でした。RAMもそれなりに喰うようです。その際標準関数mallocがheap領域を
使用するのでスタートアップをいじりmakefile内で使用量を明示できるようにしました。



コツ

メカ

ワウソ
やっぱデコード->描画には多少時間かかりますね。他にもIJG JPEGライブラリは
リサイズ機能なんかもあってピクセルサイズが大きいものでも縮小してくれます。
今回使用した小動物たちの画像は大阪海遊館で撮影したコツメカワウソたちです。
まだ全く手を付けてませんが120MHzで動くLPC1769で同じことやるとどんだけ早く
デコードできるかちょっと楽しみです。



最後になりますが、少し前からTFT-LCDShield開発の折にtaobaoで液晶モジュール
などをいろいろ購入していました。その中でひときわ目立ってた3.5inch、
320x480の大解像度、それでいて扱いやすいi8080インターフェースで接続できる
液晶モジュールを紹介します。



デカイ!

で、デカイ!

72MHz駆動のSTM32F107VCT6だとSDカードから320x480,24bitの標準的なWindowsBMP
ファイルの一枚絵を読み取り表示するのに掛かる時間を測定したところ約360mSec掛
かりました。
(全画面消去->SDカード読み出し->RGBデータ24bit->16bit変換->GPIO転送)


普通これくらいの解像度になるとRGBインターフェースしかないのですがこの
モジュールはi8080のMCUバスで接続できるコントローラIC(ILI9481)が内蔵されて
いてAVR等のワンチップマイコンでも手軽に扱えます(ただし16bitバス強制)。
まだタッチパネルが搭載されたモデルは一般に出回っていないものの、簡易で
フォトフレームを作成するのなら見栄えがあるものができると思います。



おや?aitendoにも似たようなものが…?(棒読み)
追:私のはFPCの形状・ピン間隔・外観が全く違う別物です!

Go to top of page