FC2ブログ

「Interface」ARMマイコン基板アプリケーション制作コンテスト

Interfaceのサイトを見ると付録ARM(LPC2388)基板のコンテストの結果が発表されていた。次号以降で紹介があると思うので楽しみにしている。ここのところ電子工作ネタのエントリができていないのだが、参考にして(マネして)作れるものがあるとうれしいな。1から自分で設計となるとハードルが高いので・・・。自力でちゃっちゃと組めるようになりたいもんです。
スポンサーサイト



USB HOST機能を試す

脈絡も無く思いつきでちまちまいじっているLPC2388基板だが、Interface誌2009年6月号のUSB HOST動作サンプルを試してみた。
P1050362_2.jpg


このサンプルは拡張ベースボード CQBB-ELを使い、マイクからの入力をUSBメモリに保存、またそのデータをスピーカから再生するというもの。つまりボイスレコーダ。この拡張ベースボードは高いので買っていない。今回はこのボイスレコーダ機能をごっそり外し、単にUSBメモリにアクセスするというところのみを試してみたのだが、それっぽく動作している。また、USBホストスタックにはusbhostliteというものを使用しているようだ。このusbhostliteのアーカイブ内にもUSB Mass Storage Classのサンプルが付いている。

このLPC2388基板のUSB Host機能を使って試してみたいのはHID(Human Interface Device)クラスの機器。LPC2388ボードへの入力デバイスとしてキーボードやマウスなどのUSB機器をお手軽につないで使いたいと思ったわけだが、マイコンでUSB HID機器を制御するというのはなかなかサンプルが見当たらない。逆にマイコン基板をUSBでPCに接続した際にHID機器として認識させる、というサンプルならちらほら見つかるのだが。とりあえずHIDクラスの資料を探してみようと思う。

ADコンバータ試してみた

ちょこっとだけLPC2388基板いじった。NXP サンプルのSample Code Bundle for LPC23xx/LPC24xx Peripherals using Keil's μVision, V1.60 (Mar 10, 2009)から、ADCをマージ。+3.3Vに可変抵抗通したものをADCにかけてバーグラフ表示してみた。
P1050339_2.jpg

スライド型の可変抵抗を使って、アナログ入力デバイスにしても面白いかも。二つ使って縦横方向のポインティング用とか。

LPC2388にはADCは 8ch(各10bit)搭載されており、それぞれP0.23~26,P1,30~31,P0.12~13にマッピングされている。

LPC2388のマニュアルによると

PINSEL1/Pin name/Function when 00/Function when 01/Function when 10/Function when 11/Reset value
15:14 / P0.23 / GPIO Port 0.23 / AD0.0 / I2SRX_CLK /CAP3.0 / 00
17:16 / P0.24 / GPIO Port 0.24 / AD0.1 / I2SRX_WS / CAP3.1 / 00
19:18 / P0.25 / GPIO Port 0.25 / AD0.2 / I2SRX_SDA / TXD3 / 00
21:20 / P0.26 / GPIO Port 0.26 / AD0.3 / AOUT / RXD3 / 00

PINSEL0/Pin name/Function when 00/Function when 01/Function when 10/Function when 11/Reset value
25:24 / P0.12 / GPIO Port 0.12 / Reserved / MISO1 / AD0.6 / 00
27:26 / P0.13 / GPIO Port 0.13 / USB_UP_LED2 / MOSI1 / AD0.7 / 00

PINSEL3/Pin name/Function when 00/Function when 01/Function when 10/Function when 11/Reset value
29:28 / P1.30 / GPIO Port 1.30 / USB_PWRD2 / VBUS / AD0.4 / 00
31:30 / P1.31 / GPIO Port 1.31 / USB_OVRCR2 / SCK1 / AD0.5 / 00

とあるのでピン設定は下記になるのか。なるほど。

PINSEL0 |= 0x0F000000; /* P0.12~13, A0.6~7, function 11 */
PINSEL1 |= 0x00154000; /* P0.23~26, A0.0~3, function 01 */
PINSEL3 |= 0xF0000000; /* P1.30~31, A0.4~5, function 11 */

LPC2388にはDAC(10bit)も一つ付いているのだが、これの出力AOUTはAD0.3と同じP0.26にマッピングされているのでADCを 8ch フルに使ったらDACが使えないことになるな。

ソースはこちら。
ARM7_LPC2388_091009_zip.txt

いつものように自己責任で。個人的なメモ目的なので他の方に有益な内容では無いとは思うが。。。

LPC2388でFreeRTOS_ベース環境作成まとめ その2

先日のまとめの”補足”部分、portlcd.cが動かなかった点の回収を。

なんで動かなかったのかなー、と思いながらソースを見てみたがやはり特に問題はなさそうだ。再度配線して見るとあっさり動作。ブレッドボード上で配線したのだが、前のときはジャンパワイヤが断線でもしてたのか??お粗末・・・orz

しかしこのキャラクタLCDはグチャグチャと動かしてしまったな。元々は3.3V化試してみたいというところから始まり、コントローラのST7066、HD44780Uの互換性に気づかずググって見つけたソースをマージしてみたが実はFreeRTOSのDemoに収録されているportlcd.cがほぼそのまま動いたり・・・。趣味のお遊び開発とはいえ、もうちょっと調べてから実装するべきだな、と反省。

ともあれベース環境の更新を。LCD表示をportlcd.cに変更したのみ。毎度のことながら自己責任でお願いします。今回も拡張子をtxtにしているが中身はzip。拡張子を変更してください。
ARM7_LPC2388_091005_zip.txt

キャラクタLCDでユーザーフォントを使用する

FreeRTOSのDemoにも収録されている、キャラクタLCD表示サンプル、portlcd.cにはバーグラフ表示の例がある。これをまねして動作させた写真はこちら。このバーグラフ表示はオーディオのレベルメーターに使えそうだ。
#関係ないがバックライト点けると写真撮りやすいな。
P1050334_2.jpg

このサンプルでは一行16文字表示のSC1602Bで80段階のバーグラフ表示を行っている。SC1602Bは5x8ドットフォントを表示できるのだが、プリセットされているキャラクタの他に8文字のユーザーフォントを登録して表示できる(電源切ると忘れるので毎回初期化時に登録する必要はあるが)のでこれを利用しているのだ。

写真では分かりにくいので簡単に説明すると、

■□□□□
■□□□□
■□□□□
■□□□□
■□□□□
■□□□□
■□□□□
■□□□□

から

■■■■■
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■

まで、右方向に一列ずつ順に点灯するドットを増やした5パターンのフォントを登録しておき、順に表示することで5パターンx16文字で80段階となっている。

また、

□□□□□
□□□□□
□□□□□
□□□□□
□□□□□
□□□□□
□□□□□
■■■■■

から、

■■■■■
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■

まで、上方向に一行ずつ点灯するドットを増やした8パターンを登録しておき、それらを順に表示してみたらこんな感じになった。
P1050338_2.jpg

この縦方向のパターンはオーディオ信号にFFTかけてイコライザっぽい表示をすると面白いかも。シンプルなキャラクタLCDでもユーザーフォント使うと結構遊べそうだな。


どうでもいい話だが、オーディオのレベルメータやイコライザにする場合、バックライトはオレンジ色の方がそれっぽい気がする。根拠は無く、ただのイメージだが。
検索フォーム
カレンダー(月別)
08 ≪│2019/09│≫ 10
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -
RSSリンクの表示
リンク
QRコード
QRコード