STM32F107のTFT液晶のフォントを大きくする
東日本大震災から1年が経った。かけがいのない人を失った方々をどうお慰めしてよいか言葉が見当たらない。せめて何かお役に立つことをしてあげたいという気持ちは当然のこととして、生きのびた我々の努めは、貴重な自分の命を、亡くなった人の分まで有意義に使うことだろう。
そういう意味で、本来、生きている楽しみと喜びのためにやっている趣味の世界で、一部の心無い人のために、長年のみんなの交流の場であったkumanさんの掲示板が閉鎖された出来事は、残念でならない。
昔の飲み屋には、人のやっていることが気になって何にでも首を突っ込みたがり、訳知り顔で見当はずれの講釈を得々と披露する常連の爺さんが一人や二人必ず居たもので、みんな適当にいなしたり、時には話を聞いてやり(右から左に聞き流すだけだけど)、愉快に一緒に飲んでいた。
たまに話がこじれて危ない場面になると、さりげなく店のお姐さんが割り込んで、話題をそらし、その場をおさめる。場が荒れれば店の売り上げに響くからである。しかし、それでも言うことを聞かない客を追い出すときの姐さんの迫力は凄かった。なまじのチンピラなら震え上がるタンカを聞いて、姐さんを惚れ直したものである。
全く対価も得ず単なる好意で開設している電子掲示板の管理人にここまで期待することは酷というものだろう。参加する人々全員が、自覚を持って場を盛り立てる意識を持たないと、結局みずからの楽しむ場所を失うことになる。
それにしても、社会全体が、雰囲気として「不寛容」になっていることを感ずる。モンスターペアレントや、徹底した嫌煙、極端なまでの「臭い」に対する潔癖などの、最近の風潮は、昔の大人(おとな)の条件、「清濁併せ呑む度量と、悪に対する毅然とした個々の自律した行動力」が失われていることを物語る。
それはともかく、ブログの更新が20日以上滞ってしまった。3月はいつものように多忙なシーズンで、例年通りの所属団体の全国集会の準備と、恒例のスキー行、確定申告などの、雑用、遊び、仕事のほかに、今年は、娘の嫁入り準備(え、いやアッシーを引き受けるくらいですが)に時間をとられて、電子工作にまとまった時間がとれない。
TFT液晶でグラフを表示させる気圧計プロジェクトは、やっと液晶に画面が出たことで一気に肩の力が抜けてしまい、先に進む意欲を失った。そんなこともあって落穂ひろいのような工作を細々と続けている(3月12日 記)。
RTCの電池バックアップとリマップされたUART2を基板のRS232Cに接続する(2/20/2012)
Aitendoの生基板から作ったSTM32F107基板は、240X320ドットの2.4インチTFT液晶(YHY024006A)にSDカードのファイラーが動いてプロジェクトは一段落した。しかし動いたと言っても、単にネットから人さまの作ったソースコードをダウンロードしてきてビルドしたものが動いたというだけのレベルである。
今回は、細かい計画を立てずにあてずっぽうでプロジェクトを進めているので進捗が悪い。まあ仕事ではないので、大げさに考えることはないのだが、こういう作業の進め方は確かに効率が良くない。今後の反省材料である。
次のステップは、気圧の推移を表すグラフを画面上に表示することだが、このTFT液晶での描画ロジックはまだ全くわかっていない。コントローラーのデータシートは手に入れているが、ソースコードは何層にも階層化されており、ちょっと見ただけで修正が出来るレベルではない。ハードルが高い。それでもコードを少しづつ辿ってロジックを勉強しはじめる。それと一緒に気圧計を動かすための周辺のハード機能の整備も始めた。
まず、気圧の表示では実際の年月日が必須なので、RTCをまともに動かしてやらねばならない。Vccと直結されているVbatをボタン電池でバックアップする工作を始めた。この工作は前に何度もやっている。手馴れた工作だ。
CPUチップの背中にカプトンテープと瞬間接着剤で、ボタン電池フォルダーをつける。UEW線で基板のVbatパターンと接続する。問題なく動いた。これで電源を切っても、時刻を刻んでくれる。
次は、リマップされたUART2まわりの整備である。リマップされたUART2のPD5,PD6は別のピンヘッダーを追加して、そこに出しているが、せっかくRS232Cインターフェースがついているのに(AN3202)、元のUART2ピン(PA2,3)が使えないのは無駄である。基板上で接続換えをする。
基板上のパターンを切り、0.2mmのUEW線を裏に配線する。シリアルへのパターンを切られた元のPA2,PA3は基板上のソケットに出ているのでこれらのピンは汎用GPIOに使える。
こういう細かい作業をしていると時間を忘れる。これも一種の中毒かも知れない。テストする。始め、動かなくて焦ったが、ハンダ不良がみつかり(例のUEW線のハンダ不良)、これも問題なく動いた。シリアルアダプターがひとつ減らせて机の上が少しすっきりした。
描画のロジックの分析を進める。だいぶわかってきた(2/24/2012)
ソースの解析を少しづつ進めている。このねむいさんのソースは、どうももともとはMartin Thomas氏のSTM32版のFatFSがオリジナルなようで、これが構造上残っている。そのため少し無駄な動きがある。mainループは2つの大きなプロセスをUARTからのコマンド入力でスイッチするようになっているが、調べた限りでは、もう一方の部分は動いていないようだ。
TFT画面のコントロールは、filer()というモジュールにつめこまれている。その下の画面の操作関数は、ほぼ全てがts.cにある。filer()そのものは、FatFSのプロセスの最初に入っていて、一旦これを抜けると、それ以降はすべてUARTでの操作に限定されてしまい、元へ戻ることが出来ない。グラフィック気圧計に向けて大まかな制御をどうするかで頭を悩ます。
そのうち、BMP(ビットマップ形式)ファイル表示のソース解析をしていて、キーボード入力で画像をずらして全体を表示できる機能を発見した。これは便利だ。いくつかのBMPファイルを入れて楽しむ。ただ、速度はこのコードでは余り速くない。BMPでの全画面の動画は無理なようだ。
shuji009さんから画面の横向け表示をお願いされた。それもやりたいが、こちらの不満は、今の8ドットの美咲フォントが小さくて視認性が良くないことである(年をとると細かい字が苦手になる)。Makefileとソースを見ると、10ドット×10ドットのM+フォントが実装されているようなので、これを入れようとあれこれいじるが、これがどうもうまく動かない。
やっとビルドが通ったと思ったら、フラッシュサイズオーバーフローで振り出しに戻る。FatFSをReadOnlyにしたり、不要と思われるファイラーのコマンドを減らしたりしてメモリを縮めるが、あと10KBが減らない。ChaNさんのコードはさすがである。コードの効率が高い。ロジックをなくしても、フラッシュは思った程減ってくれない。
徐々にTFT液晶の描画ロジックがわかってきた。始めは、リニアーなVRAMアドレスを2バイトごとにアクセスしてなどと大層に考えていたが、コマンドで方形の描画領域(rectangle)を指定すれば、そのなかでのデータをピクセル単位に線形に送るだけで描画できることがわかった。
しかも、このとき方向と始点を指定して描画が出来る。ひとつひとつビットマップデータを細工しなくても文字が縦横表示できる理屈だ。これは楽だ。グラフや、JPEGなどの行単位のデータは、細いレクタングルを指定すればよい。
本題の電子工作は一時お休みしてLM2735のDCDCコンバーターをつくる(2/26/2012)
レクタングルで縦横の描画が出来ることまでつきとめると、また、すっかり安心してしまって、先に進まなくなった。いつもの悪い癖である。しかも、確定申告の日程がせまってきたり、次女の縁談の行事があったりして、気持ちが集中できない。こういうときは、何も考えずに手を動かす工作をしていると気が紛れる。
これまでメインの工作とは別に、少しづつ準備していた工作を本式に開始した。リチウム電池を使った9Vの乾電池006Pの代替品を作る計画である。
006P乾電池は、楽器のチューニングメーターや、このあいだ手に入れた秋月のDCM、ストロベリーリナックスのLCメーターなど、ちょっと古い電子機器では定番の電池だが、結構消耗が早く交換がばかにならない。これと同じ大きさで、リチウム充電池とDC-DCコンバーターで9Vをだす装置をつくろうというものである。
リチウム電池は扱いが一般には極めて難しい。ゲーム機やデジカメのバッテリーとしては売られているが、部品の形で一般の市場に出回ることは殆どない。特にリード線の出た電子工作に使えるような汎用品が店頭に出ることは滅多にない。事故がこわいのだろう。
もちろん全く売ってないわけではない。売ってはいるがべらぼうに高い。秋葉原あたりの大手の部品店にあるリチウムバッテリーは保護回路がついているらしく小さなものでも¥1000以上する。
しかし、こちらはこれまでLPCMプレーヤーで、充電用のICを何種類か使用してノウハウが溜まっている。充電用のICで充電している限りはまず安心だ。去年、インドアプレーンの通販サイトで端子タブのついた手頃なリチウムバッテリーを見つけ3個ほど買ってあった。
届いたリチウム電池の写真である。郵便で届いた。350mAhふたつと240mAhひとつ。この店では、それぞれ¥450と¥350。但し端子タブがでているだけで、リード線などは自分で付けなければならない。
開封して中味を確かめる。おや、この端子、アルミではないかい。どういうつもりだろう。素人にいじらせたくないということか。実際に試してみる。フラックスを十分つけて慎重に半田ごてをあててみた。いやアルミではなかった。簡単にハンダが乗った。2つの電池にリード線をつける。カプトンテープで絶縁し、2Pのコネクターでリード線を出す。
DC-DCコンバーターのICはLM2735である。CHANEYのガイガーカウンターキットの電源にこの前使った。元々は、ストロベリーリナックスで買った9~20VのDC-DCコンバーターで使われていたICである。フォトフレームの時にこれを使って調子が良いのでDigiKeyでICだけ入手した。
今度もDigiKeyで、このあいだのDragonを買うときの送料のゲタに3つ買ってあった。これを006Pの電池サイズにリチウム電池と一緒に実装できる大きさの基板につめこまなければいけない。
久しぶりにアートワークを真面目に作ってあれこれ検討する。楽しい。ガイガーカウンターのときのコンバーターと違って、リセットICを使った過放電防止回路まで内蔵させる。苦労の結果、前より大分小さくすることが出来た。006Pのスペースにコネクターごと入りそうだ。嬉々として実装に入る。こういう何も考えずに小さな部品を基板に詰め込む作業は理屈ぬきに面白い。
出来上がった。気楽に通電する。この前は一発で動いたので軽く見ていたが、今度はピクリとも動かない。そのうち配線間違いを発見して(補償コンデンサーの位置まちがい)、修正したがなおも動かない。ストレス解消の工作が、かえってストレスを増加させる工作になってしまった。
あちこち触った挙句、わかった原因はLM2735の不良だった。どこかで壊したのだろうか。補償コンデンサーの配線違いだけで壊れるのだろうか。いずれにしてもチップを取り替えたら、何の問題なく9Vが出た。逆電圧をかけたのかもしれないが、気分が悪い。
ねむいさんに助けられてフォント大型化に成功(3/11/2012)
団体の全国集会(といっても大阪と名古屋だけだが)で出張先の京都から帰ってきた。そろそろ、TFT液晶のプロジェクトも再開しないといけない。過放電防止回路のついたLM2735の長期テスト(電圧低下のときのリセットICの振る舞いの確認)をやりながら、久しぶりに工作室にこもってEclipseを開き、TFT液晶の10ドットフォントの表示に挑戦する。
グラフィック気圧計は画面仕様も確定していない。そうなると、やるべき方向が具体的に決まらず、散乱した調べ方になるので非常に効率が悪い。こういう開発をしてはいけないという典型的なパターンだが、もう今さら元へ戻るわけにもいかない。既定路線で行くしかない。
そうこうするうち、問い合わせていた、ねむいさんから朗報が届いた。メモリリダクションの手順である。コンパイラー最適オプションは、オリジナルは速度重視で、フラッシュ節約重視ではなかったこと、FatFSの日本語ファイル名表示で必須と思われていたLFN(LongFileName)は、必ずしもそうではなく64KBのコードブックは省略できることなどを教えられた。
喜び勇んでMakefileを修正する。コンパイラーオプションは残しておいて、LFNだけ無効にする。祈る気持ちでビルド。おおー、通った。サイズは220KBばかり。そりゃそうだ、64KB丸々減ったのだから。
テストする。よーし、10ドットのM+フォントが出た。うーむ、思ったほど大きくならないな。しかし、肉眼でファイル名は読める(8ドットでは虫眼鏡が必要なくらい小さい)。やれやれ、やっと懸案のひとつが片付いた。中途半端だけれど、このあたりでブログに報告することにする。
| 固定リンク
「電子工作」カテゴリの記事
- 生存証明2(2022.10.19)
- 生存証明(2022.01.23)
- パソコン連動テーブルタップの修理を諦めて自作(2021.02.16)
- 半年ぶりのブログ更新に漕ぎつけた(2019.09.19)
- 研究所活動は停滞したままでCCDカメラ顕微鏡導入など(2019.02.08)
「ARM」カテゴリの記事
- 心電計プロジェクト:スケールが出ると心電計らしくなる(2015.01.08)
- 心電計プロジェクト:TFT液晶に念願の心電波形が出た(2014.12.18)
- 心電計プロジェクト:STM32F103の心電波形表示で悪戦苦闘(2014.12.03)
- 心電計プロジェクト:CooCoxでARMの表示系ソフトを開発する(2014.10.16)
- 心電計プロジェクト:表示部のARM基板の開発環境を一新する(2014.09.19)
コメント