jendo1969コメントをどうぞHSADCを体験したくLPC4370の評価ボードとしてLPC-LINK2を購入しました。デバッガ用のLPC-LINK2が既にあるので今回3枚目のLPC-LINK2となります。同じボードとしては一番多く保有するボードとなりました。開発環境で若干問題がありました。LPC-LINK2をCMSISM-DAPとして使用するとSPIFIのフラッシュに書き込みができませんでした。CMSISM-DAPはあきらめRedLinkを試すことにしました。新しいLPCXpressoは、デフォルトのデバッガがCMSISM-DAPなので、ちょっと古いものを使用しました。v7.1.1_125がPCに入っているのでこれで試したところ問題なくデバッグができるようになりました。v7.1.1_125でサクッとLED点滅の「periph_blinky」サンプルが動いたので、動作確認でUSBでシリアル通信が使用できるように「usbd_rom_cdc_vcom」サンプルを試しました。CDCのドライバは、」以下のURLからダウンロードしました。https://www.lpcware.com/content/nxpfile/lpcxpresso-link2-usb-driver-packagelpc_driver_setup.exeこの実行ファイルをダウンロードして実行します。Portとして認識されました。termでループバック通信ができました。それにしてもLPC4370は、コアが3つもあるのですね。現状Cortex-M4だけを使用しています。トリプルコアも使ってみたいですがまずはデュアルですね。periph_i2sプロジェクトを改造して簡単なDELAYを作成します。サンプリングレートからi2sの通信速度を設定できるのでこちらを利用することにしました。サンプリングレートは、48kHzも必要なく、処理時間を確保したいので32kHzとします。16bitデータ長のステレオ設定としました。データは、割り込みで取得します。0.5秒間のDELAYを実現するために32bit符号なし整数のバッファを作成します。バッファ長は、32000の半分なので16000個、64kBとなります。リングバッファで使い、今回のデータと16000回前のデータを足し合わせて出力しました。足し合わせはできることが確認できました。複雑な処理に挑戦したいと思います。jendo1969コメントをどうぞNXGのサンプルに引き続きLPCOpenのi2sを使用してみます。LPCOpenは以下のページからダウンロードできます。IDEにサンプルをインポートします。periph_i2sプロジェクトを使用します。このサンプルには、ポーリングと割り込みとDMAを使ったサンプルが含まれています。これを使用するには、UARTでコマンドを送る必要があります。幸いにもXBeeをつなげておいたのですんなりとコマンド送信ができました。ビルドも難なく通り、書き込みも難なく終わりデバッグできますが、ギターを鳴らしても音が聞こえません。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へ直接転送している設定なので入力を処理して出力に出すことができません。メモリに転送する方法を探ろうと思います。割り込みを改造して遊んでみようと思います。jendo1969コメントをどうぞLPC4330-Xplorerhttp://akizukidenshi.com/catalog/g/gM-06457/LPC4330-Xplorerには、オーディオ・コーデック(UDA1380)が搭載されています。これを使用し、i2sのサンプルでギターの入力をヘッドホンで聞いてみようと思います。サンプルは、NXGの物とLPCOpenの物を使用します。NXGのサンプルで試してみます。NXGのサンプルは以下のページからダウンロードできます。IDEにサンプルをインポートします。LPC4330_Xplorer_Audioプロジェクトを使用します。ビルドも難なく通ります。Settingsだけ変更が必要です。driverをLPC18_43_SPIFI_4MB_64KB.cfxに変更してください。デバッガには、LPC-LINK2を使用しました。現在LPC-LINK2はCMSIS-DAPとして使用しています。書き込みも難なく終わりデバッグできます。ギターとヘッドホンをつないで聞いてみました。スルーしているだけなのヘッドホンからギターの音が聞こえました。デフォルトでマスターボリュームが最大(0x00)なので左右とも0x80を設定しました。volume);レジスタに設定するだけでボリュームがコントロールできます。その他の設定は、44.1kHzで32bitデータ長になっています。32bitなので送受信時にFIFOからLRの両方の取り出しと書き込みを2回行っています。今回変更したのは、これだけです。i2sは、割り込みを使用した取り込みです。今後、入力信号を処理して出力してみたいと思います。LPC1768のファームウェアが更新され、CMSIS-DAPに対応したのでLPCXpressoでローカルでバッグを試してみました。最新ファームウェアを以下サイトからダウンロードします。141212を使用しました。mbedmicrontroller_141212.ifこのファームウェアをmbedドライブに書き込みます。電源リセットすれば、ファームウェアが有効になります。これだけでは、CMSIS-DAPとして認識されません。Windows側にもドライバをインストールする必要があります。以下サイトからドライバがダウンロードできます。https://developer.mbed.org/handbook/Windows-serial-configuration#1-download-the-mbed-windows-serial-portmbedWinSerial_16466.exeこのファイルを実行するとドライバがインストールされます。これで準備できました。これを機にLPCXpressoもアップグレードしました。v7.9.2_493を使用します。プログラムは、オンラインコンパイラで作成したプロジェクトをオンラインコンパイラでエクスポートできます。エクスポートするとき、いくつかのIDEの選択ができますが、ここでは、LPCXpressoを選択します。プロジェクトは、zipファイルでダウンロードされます。圧縮ファイルのままLPCXpressoでインポートします。プロジェクトには、mbed-SDKも含まれているので、そのままローカルコンパイルができました。LPC1768につなげば、他のLPCXpressoボードと同様に書き込み、デバッグが可能です。ソースコードでブレークすることもできます。今回は、LEDチカチカの簡単なプログラムで試しました。オンラインコンパイラもよいのですがデバッグできないのとbinファイルをダウンロードして、毎回コピーするのが面倒でした。LPCXpressoは、純正コンパイラでないのと、フリー版なのでサイズの制限がありますが、mbedでちょっと使ってみようと思います。Corporation.組込み技術向上のため、エンベデッドに関する話題中心のブログです。