LPC4330-Xplorer i2s LPCOpen sample

NXGのサンプルに引き続きLPCOpenのi2sを使用してみます。 
Jpeg
LPCOpenは以下のページからダウンロードできます。 
https://www.lpcware.com/content/nxpfile/lpcopen-software-development-platform-lpc43xx-packages 
 
LPCXpresso v7.9.2_493 IDEにサンプルをインポートします。この中の periph_i2sプロジェクトを使用します。 
このサンプルには、ポーリングと割り込みとDMAを使ったサンプルが含まれています。 
ただし、これを使用するには、UARTでコマンドを送る必要があります。幸いにもXBeeをつなげておいたのですんなりとコマンド送信ができました。 
ビルドも難なく通り、書き込みも難なく終わりデバッグできますが、ギターを鳴らしても音が聞こえません。 
Decimator volumeが大きくADC入力が減衰しすぎのようです。NXGのサンプルと同じ値にしました 
UDA1380_REG_DECVOL_DEFAULT_VALUEの0xE4E4を減衰でなく増幅側の0x0F0Fに変更しました。 

音が聞こえるようになりました。音が大きすぎるのでこれも
NXGのサンプルで変更したようにしました 
UDA1380_REG_MSTRVOL_DEFAULT_VALUEの0x0000を0x8080に変更しました。 

その他の設定は、
48kHzで16bitデータ長になっています。16bitなので送受信時にFIFOから1読み書きで行っています。 

ポーリングは、転送が追い付いていないのか、ノイズだらけで使い物になりません。
 
割り込みは、リングバッファを使うとADとDAがかみ合わないのかノイズがでるのでNXGと同じようにバッファをつかず、直接転送すれば使用できます。 
DMAは、ノイズありませんが、ADCからDACへ直接転送している設定なので入力を処理して出力に出すことができません。メモリに転送する方法を探ろうと思います。
当面、割り込みを改造して遊んでみようと思います。

LPC4330-Xplorer i2s NXG sample

LPC4330-Xplorer
http://akizukidenshi.com/catalog/g/gM-06457/
LPC4330-Xplorerには、オーディオ・コーデック(UDA1380)が搭載されています。
これを使用し、i2sのサンプルでギターの入力をヘッドホンで聞いてみようと思います。
Jpeg
サンプルは、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は、割り込みを使用した取り込みです。今後、入力信号を処理して出力してみたいと思います。

mbed NXP LPC1768 CMSIS-DAP

mbed NXP LPC1768のファームウェアが更新され、CMSIS-DAPに対応したのでLPCXpressoでローカルでバッグを試してみました。
最新ファームウェアを以下サイトからダウンロードします。 https://developer.mbed.org/handbook/Firmware-LPC1768-LPC11U24

rev 141212を使用しました。CMSIS-DAP support です。 mbedmicrontroller_141212.if
このファームウェアをmbedドライブに書き込みます。電源リセットすれば、ファームウェアが有効になります。

これだけでは、CMSIS-DAPとして認識されません。Windows側にもドライバをインストールする必要があります。
以下サイトからドライバがダウンロードできます。 https://developer.mbed.org/handbook/Windows-serial-configuration#1-download-the-mbed-windows-serial-port
mbedWinSerial_16466.exe
このファイルを実行するとドライバがインストールされます。
これで準備できました。
これを機にLPCXpressoもアップグレードしました。LPCXpresso v7.9.2_493を使用します。

プログラムは、オンラインコンパイラで作成したプロジェクトをオンラインコンパイラでエクスポートできます。エクスポートするとき、いくつかのIDEの選択ができますが、ここでは、LPCXpressoを選択します。
プロジェクトは、zipファイルでダウンロードされます。
圧縮ファイルのままLPCXpressoでインポートします。
プロジェクトには、mbed-SDKも含まれているので、そのままローカルコンパイルができました。

USBケーブルをmbed LPC1768につなげば、他のLPCXpressoボードと同様に書き込み、デバッグが可能です。ソースコードでブレークすることもできます。

今回は、LEDチカチカの簡単なプログラムで試しました。 オンラインコンパイラもよいのですがデバッグできないのとbinファイルをダウンロードして、毎回コピーするのが面倒でした。LPCXpressoは、純正コンパイラでないのと、フリー版なのでサイズの制限がありますが、mbedでちょっと使ってみようと思います。

AquesTalk Pi + mini speaker

Jpeg
AquesTalk Piを使ってRaspberryPi A+をしゃべらせられるようになったので、単一電源で動くように小型のスピーカをつけてみようと思います。

配線は、3.5mmステレオミニプラグ⇔スクリュー端子台を使用しました。
http://akizukidenshi.com/catalog/g/gC-08853/

スピーカは、基板取付用スピーカーユニット UGSM30A-8-01を使用しました。
http://akizukidenshi.com/catalog/g/gP-09270/

アンプは、HT82V739使用ミニモノアンプ基板を使用しました。 http://akizukidenshi.com/catalog/g/gK-03234/

RasPiA+から出ている3.3Vで音が出せるようになりました。

LabTool

オシロスコープが欲しいのですが、高額なので躊躇していました。しかし、信号が見えないといろいろ不便なので、簡易オシロを導入しました。
LabTool Bundle EA-XPR-202
http://akizukidenshi.com/catalog/g/gM-07790/
Jpeg

LabToolは、LPC-LINK2にアドオンするボードです。以下の機能を装備しています。
•ロジック・アナライザー:11ch
•オシロスコープ:2ch
•デジタル・シグナル・ジェネレータ:11ch
•アナログ・シグナル・ジェネレータ:2ch

簡単な紹介が以下にあります。
http://www.nxp-lpc.com/lpc_boards/lpc-link2/
表示は、Windowsで行います。ソフトウェアは、メーカのページからダウンロードできます。
http://www.embeddedartists.com/products/app/labtool.php

アナログ入力のプローブは、付属していないので合わせて2本購入しました。
オシロスコープ・プローブ(100MHz)
http://akizukidenshi.com/catalog/g/gM-00240/
Jpeg

インストールしてUSBをつなげば、すぐに使えます。機能も少ないので戸惑うことはないと思います。
JpegJpeg

RasPiA+の音声出力の確認に使いましたが、適当にトリガ設定しても波形が取れました。
これで今後、信号が出ている出ていないで悩むことはなくなると思います。

AquesTalk Pi

Jpeg
RaspberryPi A+をしゃべらせたいと思います。
個人利用非営利でフリー公開されている音声合成ソフトを使ってみます。以下のURLからダウンロードしました。
http://www.a-quest.com/products/aquestalkpi.html
プログラム AquesTalk Pi を使えば、Raspberry Pi上で簡単に音声合成できます。

実際の使い方は以下のURLに詳しくあります。
http://blog-yama.a-quest.com/?eid=970157 

※ダウンロードファイルが~.gzの時でもファイルは、tar.gzなのでURLにある通りtarで解凍してください。gzipでは解凍できません。

音声出力は、ステレオ 3.5mm 4極ジャックから出力します。ここにスピーカを接続しました。スピーカは手元の以下の物を使用しました。
2.0ch マルチメディアスピーカー USB電源/ステレオミニプラグ音源  BSSP01Uシリーズ
http://buffalo.jp/product/multimedia/speaker/bssp01u/ 

プログにある手順でまず、音声出力は、ステレオ 3.5mm 4極ジャックからに設定します。
$ amixer cset numid=3 1

音を出してみます。
$ aplay /usr/share/sounds/alsa/Front_Center.wav
問題なくスピーカから音が出ました。

ダウンロードして解凍したプログラムを試してみます。
$ ./AquesTalkPi “漢字も読めます。” | aplay

無事、音が出ました。スピーカが大きいので小さいものを検討したいと思います。

Auto Start Node.js

Raspberry Pi A+をボタンで自動的にシャットダウンすることがNod.jsを使って行うことができました。そこでNode.jsのプログラムを自動起動させようと思います。

まずpm2をインストールします。
npm install pm2 -g

アプリを起動してみます。
pm2 start app3.js

pm2で起動することを確認しました。

次に自動ログインの設定を行います。
sudo nano /etc/inittab
テキストエディタnanoが開くので、以下の行を、行頭に#をつけてコメントアウトさせます。
#1:2345:respawn:/sbin/getty 38400 tty1
次に、以下の行を書き込みます。
1:2345:respawn:/bin/login -f ユーザー名 tty1 </dev/tty1>/dev/tty1 2>&1

ctrl+Xで保存し、RaspberryPiを再起動させると、自動ログインするようになります。

次にアプリの自動起動のため次のファイルを編集します。
sudo nano /etc/rc.local

exit 0の行の前に2行追加します。
export PATH=/home/pi/.nvm/v0.10.22/bin:$PATH
pm2 start /home/pi/node/app3/app3.js -i 1 –name sd-task

ctrl+Xで保存し、RaspberryPiを再起動させると app3.jsが自動起動します。ボタンを押すとRaspberry Pi A+がシャットダウンするプログラムが自動起動する様にできました。

これで、画面が無くてもボタンだけでシャットダウンして電源を切ることができるようになりました。

PSoC 4200 Proto Kit + AQUOS

PSoC4 Prototyping KitのUARTを使ってシャープ液晶テレビAQUOSを操作してみました。
http://akizukidenshi.com/catalog/g/gM-08446/
Jpeg
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/

Jpeg
とりあえず、今回は、電源を落とす目的で
“POWR0 ¥r”
を送ってみました。テレビの電源が切れることが確認できました。
Jpeg

AZURE SQL DATABASE

AZUREでSQLデータベースを新規作成します。

AZURE003

AZURE004

データベースを作る時に、同時に新しいサーバを作成すると失敗します。その時は、サーバができるまで待ってからもう一度、データベースを作成してください。
サーバ、データベースの作成共に少し時間がかかります。
サーバ名 ********.database.windows.net

接続テスト
[例]
var mssql = require(‘mssql’);
var config = {
user: ‘ユーザ名’,
password: ‘パスワード’,
server: ‘サーバ名.database.windows.net’,
database: ‘データベース名’,
options:
{
encrypt: true          // Use this if you’re on Windows Azure
}
}

mssql.connect(config, function(err)
{
console.log(err); mssql.close();
}
);

実行するとVisual studio onlineのコンソールに接続が表示されます。
SQLサーバを立ち上げると課金されるので、無料期間が終わった時点で終了しました。

© 2014 Spineedge Corporation.

組込み技術向上のため、エンベデッドに関する話題中心のブログです。