【Raspberry Pi Pico】PCM5102Aでsineを出力
サンプルプログラムのsine_waveを試してみました。
サンプルプログラムをビルドすると、sine_wave_i2s.uf2、sine_wave_pwm.uf2、sine_wave_spdif.uf2の3つが生成されるので、sine_wave_i2s.uf2を本体にコピー
I2Sに設定したPCM5102Aとpico本体は下記のように接続。
GP26 ---> BCK GP27 ---> LCK GP28 ---> DIN
でてます!
【Raspberry Pi Pico】uf2ファイルコピーの自動化
リセットボタンを追加したので pico本体にプログラムをコピーする際のUSBケーブルの抜き差しは不要になりました。
ですが、ビルドの度にuf2ファイルドラッグ&ドロップしてコピーするという流れがヤッパリ面倒なので CMakeのadd_custom_command()でビルド後に自動的にコピーするようにCMakeLists.txtを変更しました。
cmake_minimum_required(VERSION 3.13) include(pico_sdk_import.cmake) project(test_project C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) pico_sdk_init() add_executable(test test.c ) pico_add_extra_outputs(test) # Pull in our pico_stdlib which pulls in commonly used features target_link_libraries(test pico_stdlib) # ビルド後にuf2ファイルをF:ドライブにコピー add_custom_command( TARGET test POST_BUILD COMMAND copy ${CMAKE_CURRENT_BINARY_DIR}\\test.uf2 f:\\ )
CMakeがよくわかってないんですが、とりあえずよさそうです。
リセットボタンとBOOTSELボタンでpicoをマウントしてからビルドすると、 そのままプログラムがコピーされて動作がはじまるので、 よくある開発環境のような雰囲気が楽しめます!
つか、楽!
【Raspberry Pi Pico】リセットボタンの追加
プログラムの書き換え時のUSBケーブルの抜き差しが面倒で、 SWDについて調べていたんですが、 なにやらリセットボタン(的な動作?)が実現できるということなので試してみました。
参考ページ
- How to add a reset button to your Raspberry Pi Pico - Raspberry Pi
- Raspberry Pi Picoのリセットボタンの実装: 猫にコ・ン・バ・ン・ワ
方法
RUNピンをグランドに落とせばよいようなので、参考ページの通りにRUNピンとその隣の隣にあるGNDピンをタクトスイッチでつなぎました。
便利!
※ ビルド後のファイルのコピーも自動化してみました
【Raspberry Pi Pico】新規プロジェクトの作成/VS Codeでビルド
とりあえずサンプルプログラムのビルドと動作確認ができたので、新規プロジェクトを作成してVS Code(今回インストールしたVisual Studio Community 2019ではなく、既ににインストールしたあったもの)でビルドする方法を探りました。 途中何度かエラーがでて同じことをやり直している(つもりの)内にいつの間にかうまくいくようになったので、手順に抜けがある可能性が高いですが、きょう一日の作業の記念にメモしておきます。
基本的な手順は Getting started with Raspberry Pi Pico の Chapter 7. Using Visual Studio Code と Chapter 8. Creating your own Project の通りです。
1. プロジェクトフォルダの作成
適当なところにプロジェクトフォルダを作ります。今回は、pico-sdkとpico-examplesと同じところにProjectフォルダを作成して、その中に新規プロジェクト用にtestフォルダを作成しました。
2. 必要なファイル
今回はサンプルプログラムのblinkを新規フォルダに移してビルドします。
- サンプルのblink.cを作成したtestフォルダにコピーしてtest.cにリネーム
- pico-sdk/external にある pico_sdk_import.cmakeをtestフォルダにコピー
- 以下の内容でCMakeLists.txtをtestフォルダに作成
cmake_minimum_required(VERSION 3.13) include(pico_sdk_import.cmake) project(test_project C CXX ASM) set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) pico_sdk_init() add_executable(test test.c ) pico_add_extra_outputs(test) # Pull in our pico_stdlib which pulls in commonly used features target_link_libraries(test pico_stdlib)
ファイルの構成は以下のようになります。
raspi_pico ├─ Project │ └─ test │ ├─ CMakeLists.txt │ ├─ pico_sdk_import.cmake │ └─ test.c ├─ pico-examples └─ pico-sdk
3. VS Codeの拡張機能のインストール
VS Codeを起動して2つの拡張機能をインストールします。
インストール後にVS Codeを一旦終了。
4. ビルド
- Windowsメニューから「Visual Studio 2019 > Developer Command Prompt for VS2019」を選択。コマンドプロンプトで
code
を実行してVS Codeを起動します。(←これ重要。普通にVS Codeを起動すると失敗します)
※ 私の環境では export PICO_SDK_PATH=/home/pi/pico/pico-sdk は必要ありませんでした - VS Codeの「ファイル > フォルダーを開く...」でtestフォルダを開きます。
- 開いたときかビルドするとき辺りでキットを選択するメニューが現れるので「GCC for arm-none-eabi 10.2.1」を選択。
※ウィンドウの一番下に「アクティブなキットがありません」と表示されていれば、これをクリックしても選択メニューが現れます - 「表示メニュー > コマンドパレット... > CMake:ビルド」を選択。
※ウィンドウの一番下の「ビルド」をクリックでも同じ - testフォルダ内にbuildフォルダが生成されているので、その中のtest.uf2を例の手順でpico本体にコピー
ソースを編集したら、あとは4、5の繰り返し
所感的な
以上が現状うまくいっている方法ですが、 最初はエラーとか警告が出てビルドできなくて、コマンドラインでビルドしてみたり、 何かの設定をいじったり(何かやったようなぼんやりとした記憶)、 ファイルの内容を書き換えたりしているうちに いつの間にかうまくいくようになっており…
もやもやしたものは残るもののビルドまでVS Code でできるようになったので、あとはUSBケーブルを抜き差しする例の面倒なプログラム更新の手順を簡単にしたいですね。 Chapter 5. の Flash Programming with SWD あたりを試してみようかなと思いつつ力尽きたのです。
コマンドプロンプトからVS Codeを起動するあたりも環境変数あたりをどーにかすればどーにかなるのかなと。
※ リセットボタンの追加とビルド後のファイルコピーの自動化でだいぶ楽になりました
【Raspberry Pi Pico】ブックマーク的なもの
参考にさせていただいている先人のページをまとめておきます。
開発環境の構築
- 【Raspberry Pi Pico/Windows】Raspberry Pi Picoの環境構築する(C/C++) - ソースに絡まるエスカルゴ
- Raspberry Pi Pico C/C++ SDK 環境構築 on Windows 10 - Qiita
- WindowsでのC/C++環境構築 ーRaspberry Pi Picoへの道2ー - Raspberry Pi - HomeMadeGarbage
- Raspberry Pi Pico環境構築 on Windows 10
- C/C++でもPicoってみる!(RapberryPi Pico・C/C++ でLチカ)|神楽坂らせん|note
I2S DAC
もろもろ
総本山
【Raspberry Pi Pico】サンプルプログラムのビルド
Raspberry Pi Picoの開発環境がインストールできたので、サンプルプログラムをビルドして動作確認します。
参考ページ
インストールに引き続き、ほぼ(←これがまちがいのもと)以下のページの通りに進めていきます。 USBのあたりのwarningは下記が助けになりました。
1. サンプルプログラムとSDKのクローン
インストールしたTortoiseGitを使用して、以下の2つのリポジトリ(サンプルプログラムとSDK)をクローンします。
手順は以下の通り。
- 適当なフォルダを作成(参考ページにならってDocuments\raspi_pico)
- raspi_picoで右クリックして、TortoiseGitのメニューから「Git clone...」を選択
- ダイアログのURLに前述のものを入力
- 2つをクローンするとraspi_picoにpico-examples、pico-sdkが作成されます
操作が簡単かなと思って右クリックでクローンしましたが、このままだとビルドの際にUSBあたりでwarningが出るのでコマンドラインで以下を実行しておくとよいです。(実行しなくても、とりあえずUSB以外のはビルドできますけど…)
cd pico-sdk
git submodule update --init
※ 何もわかってないくせに自己流で参考ページと違うことをするから面倒なことになるのです…
2. サンプルのビルド
Windowsメニューから「Visual Studio 2019 > Developer Command Prompt for VS2019」を選択してコマンドプロンプトを開きます。 以下のコマンドでSDKへのパスを設定します。
setx PICO_SDK_PATH "****\Documents\raspi_pico\pico-sdk"
設定を有効にするために、一度コマンドプロンプトを閉じて再度開きます。
あとは以下を実行。
cd ****\Documents\raspi_pico\pico-examples
mkdir build
cd build
cmake -G "NMake Makefiles" ..
nmake
ズラズラと進行状況が表示され、相当な時間をかけてすべてのサンプルプログラムのビルドが完了します。
3. サンプルプログラムの書き込み
Raspberry Pi Pico本体のBOOTSELボタンを押しながらPCとUSBで接続すると、USBのストレージとして認識されます。 ここにbuild内の各フォルダにある****.uf2ファイルをドラッグ&ドロップでコピーすると実行されます。
1つ目はLチカでしょってことで、build\blink\blink.uf2 を実行
全く理解しないまま、先人の情報にしたがってpicoの開発環境を構築。
— 鷲山技研 (@washiyamagiken) April 17, 2021
光ってるから成功してるんだと思う… pic.twitter.com/I2KrAjHkvt
以上で、サンプルプログラムのビルドと動作確認がドーニカコーニカ完了。なんと分かっていないことが多いことか…
次は新規プロジェクトの作成とVS Codeでのビルドの2本立てです
【Raspberry Pi Pico】開発環境の構築(C++/Windows10)
Raspberry Pi Picoを手に入れたのでWindows10に開発環境を構築します。 Pythonは(も)全く分からないので、C++用ということで下記ページを参考(ほぼトレースです)に作業を進めていきます。 rikoubou.hatenablog.com ※ 5番目の「Python3.7系のインストール」はしなくてもよさそう(今のところ)
1. GNU Arm Embedded Toolchain のインストール
下記からダウンロード&インストール 。 developer.arm.com (gcc-arm-none-eabi-10-2020-q4-major-win32.exe)
完了画面でPATHを追加するためのチェックボックスがあるので、これをチェック。
2. CMake のインストール
途中、PATHを追加するためのチェックボックスがあるので、これをチェックしてインストール。 cmake.org (cmake-3.21-windows-x86_64.msi)
3. Visual Studio community 2019 のインストール
下記からダウンロードしてインストーラを起動。 項目の選択画面になるので「C++によるデスクトップ開発」にのみチェックをいれてインストール。 visualstudio.microsoft.com (Visual Studio community 2019 バージョン 16.8)
4. TortoiseGit のインストール
下記からダウンロード&インストール。 tortoisegit.org (TortoiseGit 2.12.0 - 64-bit) ※別途、GIT本体もインストールしたような気がする…
以上で(概ね)インストール完了。 サンプルプログラムのビルドと動作確認に続きます。