投稿

7月, 2017の投稿を表示しています

ESP32: Visual Studio CodeでESP-IDFを使う(Linux編)

イメージ
Windows編に引き続き、Linux編ですっ( `・ω・´) ほとんど手順は同じなので、ざっくり行きます!
元記事:https://github.com/espressif/esp-idf/issues/303
1. ESP-IDFのインストール公式セットアップガイドを参考にインストールします。インストールしたら、.zshrcとか.cshrcとか.profileに、環境変数 IDF_PATH の設定を追加しておきます。
2. Visual Studio Codeのインストールhttps://code.visualstudio.com/からインストールします!
3. C/C++ extensionのインストールWindows編と同じです!(←それでいいのかー!
4. プロジェクトの設定[ファイル]メニューの[フォルダーを開く]から、既存のESP-IDFのプロジェクトを開きます。開いたらCtrl+Shift+Pを押し、「edit」と入力すると出てくる「C/Cpp: Edit Configurations」を選択します。すると、「c_cpp_properties.json」が開かれるので、以下の内容に上書きします。[ユーザー名]のところだけ、適宜書き換えて下さい。

{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceRoot}", "/home/[ユーザー名]/esp/esp-idf/components" ], "defines": [], "intelliSenseMode": "clang-x64", "browse": { "path": [ "${workspaceR…

ESP32: Visual Studio CodeでESP-IDFを使う(Windows編)

イメージ
ESP-IDFはコマンドラインでmakeするので、今までなんとなくLinux+emacsで使ってました。でも、#defineされてる定数の定義を探すときとか、zshなら「grep キーワード **/*」で再帰検索できるとはいえ、やっぱりちょっとめんどくさいですよねー(´・ω・`)

それで、EclipseやNetBeans等のIDEを使っている方がいるようだったので、もしかして!と思って検索したら、MicrosoftのVisual Studio Code(VSCode)を使う方法が載っていたので、試してみました!インテリセンスとか使えるみたいです(≧∇≦)b

ちなみに、元記事ではLinuxで使っているようですが、コマンドラインを使わないならWindowsでもいいんじゃない?と思い、Windowsにインストールしてみました(*ノノ)
元記事:https://github.com/espressif/esp-idf/issues/303
1. ESP32のツールチェーンを解凍する公式セットアップガイドからWindows用のToolchainとMSYS2が入ったオールインワンのzipをダウンロードして、C:ドライブ直下、もしくは好きなフォルダに解凍します。この記事では「C:\msys32」にあると想定して説明します! 2. ESP-IDFをcloneする「C:\msys32\mingw32.exe」を実行して、以下のコマンドを実行します。
mkdir ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
echo export IDF_PATH=\"${HOME}/esp/esp-idf\" >/etc/profile.d/export_idf_path.sh「exit」してmingw32.exeを終了します。 3. Visual Studio Code(VSCode)をインストールするhttps://code.visualstudio.com/からVisual Studio Codeをダウンロードして、インストールします。オプション等は、全部デフォルトにしました(●´ω`●)4. VSCodeにC/C++ extensionをインストールするV…

PSoC5LP Prototyping Kitで作るUSBオーディオI/F(I2S出力対応) その2

イメージ
前回、I2S用のビットクロックを作ろうとして、コンデンサと抵抗を外付けしてVCO(Voltage Controlled Oscillator)を作りましたが、今回はそれを分数分周器に置き換えました。そのため、アンプやI2S DAC以外の外付け部品は要らなくなりました(*´▽`*)
ソースはこちら https://github.com/MinatsuT/USB_Audio_PSoC5LP_I2S

ちょっと温度が変化したり指で触ったりするだけで周波数が変わっちゃう”なんちゃってVCO”と違い、安定した入力クロックを好きに分周できるので、 最初に、入力クロックがきっちり正しいと仮定して分周比を計算その分周比でUSBホストからのSoF(Start of Frame)の到着間隔(1ms)を基準に、実際に出力されたパルスをカウントカウント結果を基に誤差を修正。出力周波数は分周比に完全に比例するので、修正値の計算も簡単! ということで、PC側で再生デバイスのサンプリングレートを変更しても、即座に追従できるようになりました・・・おぉぅ・・・(゜ロ゜) 
(PCでサンプリングレートを変更したときのファンファーレがうるさくてすみません。。。)
生成しているビットクロックの周波数変動も殆ど無く、今まで上下にゆらゆら揺れていた再生バッファの溜まり具体もほぼ横一直線ヽ(´▽`)ノワーイ 分数分周器(Fractional Divider)  分周器と言えば入力されたクロックの整数分の1の周波数を作るものが一般的ですが、例えば入力クロックの3/5とか5/11に分周できれば、非整数倍の周波数を作れます。しかも、分母に与える数を大きくするだけで、簡単に精度が上がります。分母を32bitにすれば43億分の1ですよ奥様!ただし、例えば分周比3/5なら「入力クロックのパルスを5回に3回だけ通過させ、残りの2回は遮断する」という動作になるため、クロックが歯抜けになりジッタが増えます。なので、オーディオ用のクロックとしてはよろしくないんじゃないかと思って避けてたのですが・・・試してみたところ、私の耳ではジッタが生じてるのかどうか全然分かりませんでした(゜◇゜) まぁよく考えてみれば、I2Sのビットクロックはだいたい3MHz(44.1kHz時)~6MHz(96.0kHz時)なので、それがたかだか1クロック分前後し…