LPC4330-Xplorer
http://akizukidenshi.com/catalog/g/gM-06457/
LPC4330-Xplorerには、オーディオ・コーデック(UDA1380)が搭載されています。
これを使用し、i2sのサンプルでギターの入力をヘッドホンで聞いてみようと思います。
サンプルは、NXGの物とLPCOpenの物を使用します。
まずは、NXGのサンプルで試してみます。
NXGのサンプルは以下のページからダウンロードできます。
http://shop.ngxtechnologies.com/product_info.php?cPath=21_37&products_id=104
LPCXpresso v7.9.2_493 IDEにサンプルをインポートします。この中の LPC4330_Xplorer_Audioプロジェクトを使用します。
ビルドも難なく通ります。MCU Settingsだけ変更が必要です。Default flash driverを
LPC18_43_SPIFI_4MB_64KB.cfx
に変更してください。
デバッガには、LPC-LINK2を使用しました。現在LPC-LINK2はCMSIS-DAPとして使用しています。
書き込みも難なく終わりデバッグできます。
ギターとヘッドホンをつないで聞いてみました。スルーしているだけなのヘッドホンからギターの音が聞こえました。ちょっと音がでかいです。
デフォルトでマスターボリュームが最大(0x00)なので左右とも0x80を設定しました。
UDA_Reg_write((UDA1380_REG)UDA1380_REG_MSTRVOL, volume);
レジスタに設定するだけでボリュームがコントロールできます。
その他の設定は、44.1kHzで32bitデータ長になっています。32bitなので送受信時にFIFOからLRの両方の取り出しと書き込みを2回行っています。
今回変更したのは、これだけです。i2sは、割り込みを使用した取り込みです。今後、入力信号を処理して出力してみたいと思います。
PSoC4 Prototyping KitのUARTを使ってシャープ液晶テレビAQUOSを操作してみました。
http://akizukidenshi.com/catalog/g/gM-08446/
PSoC 4200には、Serial Communication Blocks (SCB)が2個あるのでこれをUARTとして使います。
1個目のSCBは、ブートローダ用にUSBモジュールとつながっているので2個目のSBCをAQUOS通信用に使用しました。 SCBのピンは、固定ピンなので以下ピン配置になります。
ブートローダ用
P4_1 UART1_TX
P4_0 UART1_RX
AQUOS通信用
P0_5 UART2_TX
P0_4 UART2_RX
PSocなのでコンポーネントをぺたぺた貼り付け、通信速度などのプロパティを設定すれば初期環境です。後は関数を呼び出すだけなので非常に簡単です。
マイコンはARMのCortex-M0ですが、他のメーカよりペリフェラルの使い方が簡単です。
UARTの出力は、RS2332Cレベルが必要なのでトランシーバを接続し、DSUB9コネクタを接続しました。トランシーバは、アナログデバイセズのADM3202を使用しました。
http://akizukidenshi.com/catalog/g/gI-09001/
とりあえず、今回は、電源を落とす目的で
“POWR0 ¥r”
を送ってみました。テレビの電源が切れることが確認できました。
ガンプラにLEDをつけてみました。小さい8PIN DIPのLPC810を使用しました。駆動は、CR2032のボタン電池で3Vで駆動します。
モノアイだけでなく頭部バルカンにもLEDを内蔵しましたが穴が小さく点滅がほとんどわかりません。
モノアイは、単純なON/OFFではなくPWMでゆっくり明るさを変化させて点滅させました。LPC810のタイマは、SCT(State Configurable Timer)というちょっと複雑な動作が組めるタイマが入っています。Red Stateという特別なエディタで機能を設定します。
基板を内蔵するほど小さくできなかったので抱えた状態です。
600円で販売されているので思わず衝動買いしてしまいました。
プログラム書込み用のBootLoaderがあらかじめ書き込まれています。USBで書き込むための基板も付属しています。これだけでプログラミングが始められます。
プログラムは、Bootableコンポーネントを使う、特別な作りにする必要があります。Buildした後は、書き込みツールをIDEから起動することができます。とりあえずPWMでのLED点滅サンプルを動かしてみました。PSOCは、ハード設定だけでペリフェラルが使えるのでソフトは、ほぼ書かずに機能が実現できます。いろいろな部品が用意されているので応用がいろいろ考えられます。
しかし実はPSoC4 PIONEER KITを持っているのでこれはいらなかったのですが・・・安かったので。
のちのち使い道を考えたいと思います。
http://akizukidenshi.com/catalog/g/gM-08446/
LPC810は8PINで小さいので実機にISP回路を組み込むと場所をとって無駄です。そこで専用の書込み器を作りました。
USBシリアル変換は、千石電商で購入しました。電源が5Vなので三端子レギュレータで3.3Vにしています。
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4HJ7
これでFlashMagicで書込みが容易になりました。
http://www.flashmagictool.com/
トランジスタ技術2014年10月号の脈拍計の回路を利用させてもらいました。フォトリフレクタは、記事とは違うものを使用しています。フォトリフレクタ(反射タイプ) TPR-105Fを使用しています。秋月電子通商で購入しました。http://akizukidenshi.com/catalog/g/gI-00276/
オペアンプは、記事と同じNJU7032Dを使いましたがTPR-105Fに合わせて増幅の抵抗値を調整しています。
ソフトウェアは、mbedを使用しなかったので独自に作成しました。上下の回数を一定時間数えて平均をとる方法で脈拍を測定で来ました。
オペアンプを使用したアナログ回路の楽しさに出会いました。
LPC81Xには、ADCがありません。アナログ入力は、コンパレータだけです。そこで、NXPのアプリケーションノートにあるコンパレータでADCを実現する方法を試してみました。
手持ちの抵抗やコンデンサで実現したのでアプリケーションノートの定数とは若干異なりますが、可変抵抗の変化に応じたAD値が取得できました。
ただし、ピン数が少ない中で使用ピンも多く、追加部品も多いのでおそらくこの使い方は、しないと思います。
Embedded Artists ABの2.7 inch E-paper Displayを先日購入したFRDM-KL25Zと接続しました。
http://www.embeddedartists.com/products/displays/lcd_27_epaper.php
http://developer.mbed.org/handbook/mbed-FRDM-KL25Z
プログラムは、以下のmbedプログラム epaper_mbed_130411_KL25Zを使わせていただきました。
http://developer.mbed.org/users/dreschpe/code/EaEpaper/wiki/Homepage
問題なく動作しました。E-Paperなので電源を切っても表示は残ります。
FreescaleのCortex™-M0+プロセッサベースのKinetis Lシリーズ KL1x/KL2xマイクロコントローラ・ファミリを搭載した超低コストの開発プラットフォームを購入してみました。
http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-47CA
今回はmbedとして使います。mbedとして使うには、インターフェースファームウェアファイルを書き込む必要があります。以下のサイトに手順が詳しく書いてあります。
http://mbed.org/users/Norisuke/notebook/mbed-frdm-kl25z-Getting-started-jp/
今回は、sdカードを使いたいので、まずは、sdカードのサンプルを試してみました。
http://mbed.org/handbook/SDFileSystem
ここのサンプルをインポートして改変します。このサンプルは、LPC1768用なのでその部分のみ変更します。
SDFileSystem sd(p5, p6, p7, p8, “sd”); // the pinout on the mbed Cool Components workshop board
この行がSDカードとつながるSPIポートの設定になります。
SDFileSystem sd(PTE1, PTE3, PTE2, PTE4, “sd” );
ピン名をFRDM-KL25Z 用に変更しました。SPI1を使用する設定です。
Hello fun SD Card World!
ファイル作成、書き込みができました。
LPC11U35には、EEPROMが内蔵されています。不揮発メモリとして利用できるので使用してみました。
IDEには、LPCXpresso v6.1.0_164を使用しました。LPC11Uxx LPCXpresso Examplesには、eepROMapiというサンプルプログラムが含まれています。これを流用します。このサンプルは、UARTを使用したIFなので、ここをUSBのCDCに置き換えました。実際には、前に作ったCDCのプログラムにEEPROMの部分を加えていきました。EEPROMの部分を加えるとBuildでエラーが出るようになります。
fseek.c:(.text.fseek+0x2a): undefined reference to `_Csyscall1′
解決方法は以下URLにありました。
http://www.support.code-red-tech.com/CodeRedWiki/UndefinedReference
Propaties→Settings→MCU Linker→Targetの中のUse C libraryをRedlib(none)からRedlib(semihost)に変更しました。
これでBuildがとおりEEPROMの読み書きができるようになりました。
後、注意は、
SystemCoreClockUpdate();の前に
LPC_SYSCON->SYSAHBCLKCTRL |= (1UL<<9); /* enable clock */
を設定しないとLPC_CT32B0のタイマが動きません。
Flush書き込みと違いそのまま割り込みも使えるし、EEPROMは、電源切ってもデータが保持できるのでいろいろ使えそうです。
http://akizukidenshi.com/catalog/g/gM-06948/
http://www.embeddedartists.com/products/boards/lpc11u35_qsb.php
© 2014 Spineedge Corporation.
組込み技術向上のため、エンベデッドに関する話題中心のブログです。