マイコン工作実験日記

Microcontroller を用いての工作、実験記録

4DLCD-FT843

2013-11-30 12:36:30 | Weblog
FTDIのニュースで4D SystemsがFT800を使った製品 - 4DLCD-FT843の販売を開始したことを知りました。



ConnectEVEやFTDIのボードと違ってオーディオアンプが搭載されていないけど、フィルタとアンプに関わる問題は利用者責任で対処できた方が便利かもしれないな。今後も同様な製品がいくつもでてくるだろうから、しばらく待って評判の良さそうなものを購入するべきかな。

μRuler

2013-11-29 11:13:31 | Weblog
ようやくのことで、おととい届いた白い封筒。



送り主はEEBlogのDave Jonesです。中身はこちら



Dave Jonesが作ったμRulerです。人気のプロジェクトだったようで、当初目標はあっという間に達成。最終的に全世界から2300名近いサポーターを獲得したのです。ここまでは彼の人気もうかがえる成功物語なんですが、実際は大変な苦労の始まりだったようです。

この定規、プリント基板です。合計で9700枚もの基板の製造にはPCBCartを使ったようですが、製造上の理由からひとつ穴を開けることを求められたり、納期が遅れたりが苦労話の始まり。その後、全世界の2300人にこれを配送するための予期していなかった試練が続いたのです。そのあたりの苦労話は、全てプロジェクトのステータスとしてこまめに報告されており、アップデートの総数は30に達しています。

国外への発送に先立ち、オーストラリア国内への発送でみつかった封筒破れの問題等に対処するために、海外分の発送に際してはわざわざ破けにくい封筒をUSから調達しています。そんな苦労を重ねてようやくと10月25日に配送業者を介して発送を完了したのにもかかわらず、こんどはとんでもない長旅が始まったのです。オーストラリアから発送を依頼したのにもかかわらず、業者の都合(?)でどういうわけかスウェーデンを経由して送られることになってしまったのでした。



うちに届いた封筒にもスウェーデンのスタンプが。。。

さて、中身の定規の方は、もともと実用性というよりは「話のネタ」のために買ったようなものなのですが、実際に手にとって見てみると、シルク印刷の文字が小さくて悲しいことに老眼の自分にはまったく読めませーん。定規使うにもルーペが必要。あと1週間早く到着してくれていれば、先週の飲み会に持って行けたのに、残念。

プロト基板

2013-11-27 14:24:00 | Weblog
Chanさんのサイトの更新情報を読んで、その基板配線テクが動画として公開されたことを知りました。日頃、ニコ動はまったく覗かない人なので、すでにこんなにたくさん再生されているとは知る由もなく。。



スゲー参考になるのですが、自分には到底あんなに綺麗に配線できるとは思えません。イモばかりで、ちょっとした振動で配線はずれてしまいそうで怖いなぁ。でも、確かにQFNの配線なんかは変換基板使うよりもこの方法が合理的ですね。秋月ではパワーグリッド基板が販売になったようだし、今度はこの基板をつかって挑戦してみようかなぁ。自分的には今後はこのB基板とC基板が中心になりそうな予感。10枚単位での値段が出ていないのがちょっと残念だけど。

ひどい音

2013-11-24 11:34:25 | Weblog
LPCCappuccinoにConnectEVEをつなげるA基板を作成したんですが。。。




単純にLPCCappuccinoとConnectEVEをSPIでつなげて、LPCCappuccinoの基板下に配置したスピーカまたはオーディオジャックへの出力をスライドスイッチで切り替えるだけのものです。とりあえずやりたいことは、FT800のPLAYBACK機能を使っての音楽再生なので、わざわざ基板こさえなくても作業できないことはないのですが、作業の度に回路図で確認しながらジャンプワイヤでつなぐのも面倒だし、結線間違えること必至なので基板用意した方が安心できるというものです。

再生試験につかう楽曲としては「EVEのテーマ」ことDARKAGES.ULWでも良いのですが、データ変換作業の確認も兼ねて手持ちのものをつかうことにしました。「あまロス」もすっかり癒えてきて近頃はあまり聞かなくなった「あまちゃん オープニングテーマ」を実験に使うことに決定。

あまちゃん オープニングテーマ/ロングバージョン
大友良英
Victor


わたしの場合、MBAに入っている曲データはAACでエンコードされているので、これをFT800で再生可能なU-Lawに変換せねばなりません。FTDIからはオーディオフォーマットの変換ツールも提供されているのですが、Windows向けのプログラム。おまけにMP3やAACを受け付けてくれるわけでもなく、入力ファイルとしては16bit PCMのファイルを想定しているというもの。事前に、Audacityを使ってフォーマット変換するのがオススメと説明されていました。そこでAudacityを立ち上げて作業開始。まずはAACファイルを開きます。



ステレオですから、2ch分の波形表示が現れます。FT800のオーディオ出力はモノラルですのでメニューの「トラック(T)」から「ステレオからモノラルへ(k)」を選択して、モノラルに変換。


あっさりと変換できました。こいつをu-Lawで書き出せばいいので、「ファイル」メニューから「書き出し」を選んで、Formatとして「その他の非圧縮ファイル」を選択。さらにオプションを開いてサポートしているエンコーディングを確認してみると、U-Lawが選択できるではありませんか。

というわけで、Audacityだけで簡単に変換できます。FTDIのツールはまったく不要。サンプリング周波数は変えずに44.1KHzのまま変換。1サンプルが8bitになるので、1分半ほどの曲データは4.3MB程度の大きさになりました。こうして用意したuLawデータをFT800で再生する手順についてはAN_252で解説されています。基本的には、FT800内部のメモリ空間の一部を再生用のバッファとして割り当てておき、その空間に用意したデータをダウンロードしてからレジスタを操作して再生開始を指示します。曲データ全てをロードするだけのメモリ容量はありませんので、割り当てた空間をリングバッファとして使用します。どこまで再生したかを示すレジスタが用意されているので、それを参照して再生が終了して空いたメモリに順次曲データを追加していきます。今回はためしに64KBをバッファとして割り当て、半分以上の再生が終わったら追加で読み込むことにしてみましたが、SDカードからの読み込み処理時間は充分に短いので4KBや8KB程度のバッファでも充分に余裕がありそうです。

さて、実際に再生してみると、あまりの音の悪さにガッカリ。以前FTDIのボードでも幾分ハムノイズが気になったのですが、それとは比べ物にならないくらいに、ノイズが乗っているようだし、そもそも音が出ていないような印象を受けます。スピーカが振動しているせいかもしれないと思って、オーディオジャック経由で聞いてもダメダメです。明らかにアンプから出ている音が悪すぎです。ちょっと試してみたところでは、REG_PWM_DUTYレジスタを操作してLCDバックライトの明るさを変化させると、大きなハム音が載ったりしますので、バックライトの昇圧回路からのノイズを拾いまくっているのでしょうか。PWM周波数を変化させてみるとかすれば、少しは改善がみられるかなぁ。。。

続いて回路図を確認してFTDI の評価ボードとConnectEVEのオーディオ出力回路を比べてみると、そこには大きな違いがあることもわかりました。FTDIのボードはAN_252の技術解説に沿った回路が実装されており、アンプの手前には3次のCRローパスフィルタがあり、そのカットオフ周波数はおよそ34KHzになっていました。それに対してConnectEVEでは、1次のローパスであり、カットオフ周波数が4.8KHzになっていました。特性が緩やかとはいえ広域がごっそりカットされていたんですね。44KHzサンプリングのデータを再生している意味がまったくありません。こんなわけで、ConnectEVEのオーディオは、ビープ音とかクリック音のような効果音とか音声ガイドの再生のような用途であれば使えそうですが、音楽再生にはてんで不向きのようです。

FT800のオーディオ再生機能は、あくまでもGUI操作を補助する音の再生を目的としているのでしょう。サポートしているオーディオフォーマットは8bit PCM, 4bit ADPCM, u-Law圧縮なんで、品質のよい音楽再生が目的ではなく再生処理負荷が軽く音声帯域をカバーできれば良いというものなのですが、FTDIのボードに比べるとConnectEVEのオーディオ出力はあまりにもプアなので大変ガッカリさせられました。

プライス・リーダー

2013-11-20 12:48:22 | Weblog
ついに秋月でもLPC810が買えるようになったようです。しばらく前まで予約受付中だったマルツも今日から出荷開始のようです。LPC1114の時も両者ともいい値段を提示していた覚えがありますが、今回も秋月の方が安い価格をつけています。

それにしても80円という値段には感心させられます。DigikeyやMouserで買おうと思ったら、500個注文しないといけない単価です。「ATMELのSAM3とかSAM4とかもこういう値段で売ってくれないかなぁ」と思いつつ秋月を確認してみて気がつきました。Cortex-Mマイコン人気があるように思えても、チップ単体で売られているのは、LPC810とLPC1114だけじゃぁないですか。あとは、ボードばかり。単体で売れるのはDIPだけということなんでしょうか?TQFP32~TQFP64程度の大きさのものを、変換基板とのセットで売ってくれればいいのになぁ。

LPCCappuccinoでSDカードを使う

2013-11-17 17:32:30 | Weblog
FTDIのデモソフトに触発されて自分でもはやいとこオーディオ再生用のPLAYBACK機能を使ってみたくなったたので、LPCCappuccinoでもSDカードを動かしてみました。LPCCappuccinoにはあらかじめソケットが備わっているので、ソフトを用意するだけです。SDカードに保存したフォントを使っての日本語表示もおこなうつもりなので、SAM4Lで使っていたSDカードをそのまま流用。SAM4Lのプロジェクトは当面のあいだお休みとなるでしょう。



ソフトはいつものようにFatFsです。Chanさん提供のサンプルにLPC176x用のコードが含まれているので、これをちょっと変更するだけで動かすことができました。FatFsはR0.10を使用。一部のAPIの引数に変更が生じているので、以前のコードを流用する際には注意が必要です。わたしは、ゆきさんのつれずれ日記で予備知識を得ていたので、ここは難なくクリア。

ところが、いったんSSP0を使ってSDカードにアクセスすると、SSP1を使ってつないだFT800へのアクセスができなくなってしまうことが判明。しばらく悩みましたがSSP1のレジスタが壊されているようなので追いかけてみると、SDカード初期化時にSSP0を初期化した際に、どういうわけかSSP1のレジスタがクリヤされているようです。ステップ実行して調べてみたところ、PRESETCTRLレジスタを操作して、SSP0にリセットをかけるとSSP1がリセットされてしまうのです。どうも、PRESETCTRLでのリセットは別々のタイミングでかけない方が良さそう。起動直後に2つを同時にリセットしておくようにコードを変更して対処することにしました。

純正デモを走らせてみる

2013-11-15 13:10:08 | LCD
FTDIはEVE用にデモをいくつか用意しているのですが、これらの多くはというかほとんどは、Visual Cで書かれておりPC上で動作させることを想定しています。Example 1からExample 14のプログラムについては、ソースで提供されているものの、これといった説明すらありません。タイトルからまぁなんとなく察しはつきますし、コードを読めばある程度はとんな動きをするのかも想像できなくはありません。でも、やはり実際に走らせて目で見てみたいこところ。そこでFTDIのMPSSEケーブルを買って<href="http://www.ftdichip.com/Support/Documents/AppNotes/AN_245%20VM800CB%20SampleApp%20PC%20Introduction.pdf">AN_245に従って接続、走らせてみました。




写真のように、純正ボードはPCとUSBケーブルでつなぐだけ。でも、残念ながらMSPSSEケーブル経由で供給できる3.3Vでは電流不足のようでLCDが動いてくれないようです。そこでもう1本のUSBケーブルを電源供給の目的だけで使用。わたしはMBAを使っていますが、コードはVisual CなのでPallalesを使って MacOS上でWindows 7を立ち上げて、その上で走らせます。



FTclockデモの時計はちょっとオシャレです。FT800が持っているCMD_CLOCKコマンドは使わずに、アプリが文字盤から針まで全部自分で描画しています。頑張ればばこんなのもできますということでしょうか。日付表示が dd/mm/yy形式になっているのが、欧州を感じさせてくれます。このデモはタッチすることで、表示される時計の種類も換えることができ、風景JPEG画像の上に時計を重ね書きしたものも見せてくれます。





なんか風景の中に溶け込んじゃっているんで、時計見つけるのに時間かかりそうですが。。



そしてもうひとつ気にいったのが、Playerのデモ。音楽を再生しながら、その波形を表示してくれます。曲はこちらのデモ動画でも使われていた曲なんですが、DARKSIDE.ULWというulaw圧縮したファイルが入っていました。DARKSIDEというは曲名? Brightsideにしなくていいのかな?

さて、この波形表示ですが、どうやっているのかと思ったら、uLawの音楽データをちょっとだけ加工してメモリ上にダウンロードしておき、それをビットマップとみなして表示させているだけでした。FT800のビットマップ表示機能にはバーグラフ表示機能が備わっており、この機能をうまいこと利用しています。uLawでは1バイトで1サンプルを表し、その値は振幅になります。そこで、振幅をそのままバーグラフの高さみなして、表示させているのです。それだけでは山陰のような図形になってしまうので、波形表示とするために、バーグラフの位置をY方向にずらして、色を変えることで境界線を残すという技を使っていました。なあるほど!!

USBD ROM Stackを使う

2013-11-10 11:32:09 | Weblog
LPC11U37でUSB CDCを動かすために、ROM内蔵のUSB APIを使ってみました。ユーザ・マニュアルではLPC11Uxx USB on-chip driversとして ひとつの章が割かれているのですが、こいつがDoxygenで生成した内容をマニュアルの体裁に合わせて文書整形しなおしたようなもので、読みにくくてわかりずらいものになっています。調べてみると、オンラインで読めるページがありました。こちらの方がはるかに読み易いです。

そしてさらにLPC11UXXのサンプルコードをダウンロード。この中にある USBシリアルブリッジとして機能するUSB_ROM_CDCのコードをベースとして使って、文字列を出力するプログラムを作成してみました。単純にCDC接続されるのを待って、接続ができたら文字列を出力するだけ。



これでデバック用メッセージの出力ができる準備が整ったので、便利に使えそうです。

サンプルコードを見るとAPIの使い方の概要もわかるのですが、よく見ると安易にそのままコピペして使ってはいけない危険なコードだということも判明。USBドライバAPIを使うにあたっては、まず最初にUSBスタックがハードウェアを初期化する際に、スタックが使用するメモリ領域に関するパラメータを渡す必要があるのですが、そこにはこんなコードが。。
 /* initilize call back structures */
 memset((void*)&usb_param, 0, sizeof(USBD_API_INIT_PARAM_T));
 usb_param.usb_reg_base = LPC_USB_BASE;
 usb_param.mem_base = 0x10001000;
 usb_param.mem_size = 0x1000;
 usb_param.max_num_ep = 3;

使用するメモリ領域の開始アドレスとサイズが直書きされてます。LPC11U37だとこの領域は8KBあるSRAM領域の後半4KBにあたります。これじゃぁ、アプリは前半4KBしか使えないじゃないですか。続いてCDC層のドライバを初期化する際にもメモリ領域を割り当てていますが。。

cdc_param.mem_base = 0x10001500;
cdc_param.mem_size = 0x300;

こちらも決め打ちです。しかも、さきほどハードウェア初期化時に指定したメモリ領域と重なっちゃっているじゃぁないですか。おそらくはどちらもテキトーに決めた値で、サンプルを動かす分には実害も無いのでしょうが、いくらなんでも乱暴すぎですね。

初期化APIには必要とするメモリ領域の大きさを求めるGetMemSize()という関数が用意されているので、これを呼び出して調べてみると、ハード初期化時に必要とするメモリ領域サイズは2KB, CDC層ドライバが必要とするのは100バイトにも満たないことがわかりました。

このようにサンプルではUSBD ROM StackのためにメインのSRAM内の領域を割り当てています。しかしながら、LPC11U37/501では、別途USB RAMが2KBとSRAM1領域が2KB用意されています。そこでハード初期化時にには、USB RAMの2KBを割り当て、CDC層初期化時にはSRAM1領域からメモリを割り当てることにしました。


EVE姐さんは日経エレに出ていた

2013-11-08 13:07:22 | Weblog
日頃、PCでニュースや記事を読んでいると、ついつい紙媒体が積んどく状態になりがちです。そんなわけで、すでに11月11日号が届いたというのに、2週間遅れでようやくと10月28日号の日経エレクトロニクスを開いてみたありさま。そしたところた、目次ページの前にEVE姐さんの広告が。。。



おやまぁ、こんなに積極的に宣伝していたんですね。知りませんでした。「開発システムは$35から」とありますが、$35で買えるのはLCD無しのボードだけです。LCD付きだと、$60から。わたしはConnectEVEを使っていましたが、4.3インチはちと大きいと感じていたので、ベゼル付きの3.5インチを買ってみました。



パッケージにもEVE姐さん。ベゼルでLCDの隅が覆われるので見かけはすっきり。



ボードもベゼルにネジで固定されています。



FT800や液晶のコネクタ等は裏側に実装されているので、こちら側に見えるのはコネクタとスピーカの音だし穴だけです。ConnectEVEと違ってスピーカや電圧レギュレーターも実装されているので、信号線をつなぐだけで使えます。また、3.3V系だけでなく、5V系のマイコンともつなげられるようにレベルシフターもついています。しかしながら....



額縁の幅が結構あったので、結局4.3インチのConnectEVEとほとんど大きさ変わらない結果に。。そして、さらに大きな見落としが一点ありました。この3.5インチのLCDはQVGA(320x2400)ドットだったのです。4.3インチと5.0インチのモデルは480x272なんですが。。

偽装

2013-11-07 22:28:09 | Weblog
テレビや新聞では連日 「食品偽装」に関するニュースが続いています。肉でも魚でも野菜でもシロウトには区別がつかないのをいいことに、表示を偽装していたのがすっかり習慣になっていたというのが大きな反感をかっている一因でしょう。さて、おなじみのかの地では「偽装」は日常の一部なのかもしれませんが、ちょっと注意すればそれとわかるものあるようです。

Olimexのブログ記事で、やり玉に上げられていたのはアリババで売られている商品たち。


「中国にはOlimexの代理店はひとつもないはずなのに、どうしてこんなに商品が並んでいるんだ?!」というツッコミです。実際に、アリババで検索してみるとおもしろい結果が出てきました。商品タイトルに、"New and original"とか"100% original"という記載がみられるものがいくつもあります。Olimexの商品の多くは回路図が開示されていますから、それをもとに製造したオリジナルという意味なんでしょうか?写真だけは本家のものなので、Olimexのブログ記事にも書かれているように、実際に商品があるかどうかも怪しいのですが。。