投稿

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": [ ...

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をダウンロードして、インストールします。オプション等は、全部デフォルトにしまし...

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のビットクロックはだいたい3...

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

イメージ
 PSoC5には CE95390 - USB Audio with PSoC 3/5LP というUSBオーディオの公式サンプルがありますが、32kHz 8ビット モノラルなんですよねー。ということで、これを96kHz 16ビット ステレオに拡張しつつ、内蔵の8bit DACだけでなく外部DACも利用できるように、I2S出力にも対応してます(*´▽`*)  前置きはいいからとりあえず鳴らしてみたい!という方は、下記のダウンロード先に最小限の説明があるので、それを見て試してみてね(●´ω`●) PSoC Creator用プロジェクトのダウンロード CY8CKIT-059(PSoC5LP) USB Audio with Internal DAC and I2S Dual Out 必要な部品 必須パーツ PSoC5LP Prototyping Kit(CY8CKIT-059) コンデンサ :C1(100pF), C2(1uF) 抵抗 :R1(100kΩ) オプションパーツ(無くてもOKです) I2S DACボード マスタークロックを自己生成できるのものが使えます。信号電圧が3.3Vならそのまま使えますが、5V駆動の場合はTopDesign.cysch内のI2Sコンポーネントの出力先を変更して、3.3V生成部分を使わずピン直接出力すればOKです。私は、PCM5102A搭載のちっこいボードを買いました(送料込み512円)。 Interface I2S PCM5102 DAC Decoder GY-PCM5102 I2S Player Module For Raspberry Pi 16x2 LCD(LCD1602) I2C接続で信号電圧が5Vのもの。よくあるArduino用のが使えます。繋いでおくと、Audio出力のON/OFF状態と現在の再生周波数が表示されます。 アンプボード アンプ内蔵スピーカーで鳴らす場合は不要ですが、私は持っていなかったので、お安いD級アンプボードを買いました(送料込み71円)。 new 1pcs PAM8403 mini 5V digital amplifier board with switch potentiometer can be USB powered スピーカー D級...