----------------------------------------------------------------------
　　　　Interface2023年3月号
　　　　［新］ラズパイPicoDACの製作
　　　　ダウンロード・データ
　　　　IF2303DAC
　　　　Interface編集部
　　　　CQ出版(株)
　　　　公開：2023年1月24日
----------------------------------------------------------------------
====================================
ダウンロード・サービスご利用者各位
====================================
　毎度，小誌ご愛読を賜り，誠にありがとうございます．
　このたびはダウンロード・サービスをご利用いただき，誠にありがとうございます．
　筆者のご厚意により，本記事の関連データをこのアーカイブに収録しました．

================
概要
================
　このアーカイブには，表題の記事の中で作成したプログラム・ファイルやデータ・ファイルが収録されています．
　詳しくは該当記事を参照してください．
　アーカイブは，ZIP形式によって圧縮されています．

================
動作確認
================
　データ・ファイルは筆者の元で動作を確認済みです．

===========
著作権
===========
　収録したプログラム，データおよびドキュメントなどの著作権は，各著作権者（すなわち筆者）にあります．
　Copyright (C) 2023 geachlab
　Copyright (C) 2023 Yasushi Maruishi

============
免責
============
(1)プログラムやデータの使用により，使用者に損失が生じたとしても，著作権者とＣＱ出版(株)は，その責任を負いません．
(2)プログラムやデータにバグや欠陥があったとしても，著作権者とＣＱ出版(株)は，修正や改良の義務を負いません．

=================
試し方
=================
本ソフトウェアをコンパイルされる場合は、必ず本文中の
１．ソフトウェア実装　ステップ２：ライブラリのバグ修正とCMakeListsの変更
を実施してください．


1. uf2ファイルを使ったプログラムの書き込み方法
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本稿の実験は、ラズパイPicoの開発環境をセットアップしなくても、添付のコンパイル
済み実行ファイルを利用して手早く試すことが可能です．

▼手順1：コンパイル済み実行ファイルを入手する
本フォルダ内にある以下のuf2ファイルがコンパイル済みの実行ファイルです．

File Name               掲載号  ラズパイPico DAC解説記事
--------------------------------------------------------------------------------------------
pico_1bit_dac.uf2       2021/ 8 48kHz音源を1チップで再生! USBオーディオDACの製作
pico_1bit_dac_4844.uf2  2021/11 44.1kHz/48kHz両対応! サンプリング・レート切り替え機能の実装
pico_1bit_dac_NR.uf2    2021/12 ノイズ低減編…3次ΔΣ変調＆出力4ビット化
pico_1bit_dac_HR.uf2    2022/4  ハイレゾ対応②…ソフトウェア＆ハードウェアの実装・改造
pico_1bit_dac_HR2.uf2   2022/9  分解能16倍＆処理時間1/4！音量処理の最適化
                        2022/11 オーバサンプリング処理の高精度化

▼手順2：PCとPico をUSB接続する
PicoのBOOTSEL ボタンを押しながらUSB ケーブルでPC と接続します．

▼手順3：実行ファイルを書き込む
手順2の方法でPico を接続すると，PC に「RPI-RP2」という名称のドライブが出現します．
このドライブにエクスプローラーなどで、手順１で入手した pico_1bit_dac_xxx.uf2 をドラッグ＆ドロップします．
ドラッグ＆ドロップしてから数秒でPC上に新しいオーディオ・デバイスが認識され、ラズパイ
Pico DAC が USB Audio DACとして機能します．


2. ソフトウェアの開発環境
~~~~~~~~~~~~~~~~~~~~~~~~~
本記事では、公式ドキュメントGetting started with Raspberry Pi Pico
(https://projects.raspberrypi.org/en/projects/getting-started-with-the-pico)
Chapter 1.で紹介されている Quick Pico Setup (以下の手順)を行ったラズベリー・
パイ4上にてコンパイルを確認しています．

$ wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
$ chmod +x pico_setup.sh
$ ./pico_setup.sh

▼ソースコードの入手
本フォルダ内にある以下のzipファイルがソースコード一式です．解凍後のフォルダ内に
ソースコードが配置されています．

cq_raspi_pico.zip

▼ビルド方法
ビルド前にPico SDKのバグ修正が必要です(本文参照)。下記ファイルの該当箇所
(90行目付近)のメンバ変数 data_len、data_max型定義を uint8_t から uint16_tに
修正してください。
/pico/pico-extras/src/rp2_common/usb_device/include/pico/usb_device.h

struct usb_buffer {
    uint8_t *data;
    uint16_t data_len; // uint8_t -> uint16_t
    uint16_t data_max; // uint8_t -> uint16_t
   // then...
    bool valid; // aka user owned
};

次の手順でビルドすると、コンパイラの最適化が有効なReleaseビルドになります．
Debugビルドでは処理が間に合わないため、Debugを指定しないでください．

$ cd ~/pico
$ unzip cq_raspi_pico.zip       ← ダウンロードサービスで入手したファイルを展開
$ cd cq_raspi_pico              ← 展開済みフォルダへ移動
$ mkdir -p build && cd build    ← buildディレクトリを作成し移動
$ cmake -DPICO_COPY_TO_RAM=1 .. ← ビルド用環境設定 RAM上で実行されるようにする
$ cd pico_1bit_dac              ← ビルドディレクトリに移動
$ make -j4                      ← 4並列でコンパイルを行う

ビルドが正常に終了すると、/home/pi/pico/cq_raspi_pico/build/pico_1bit_dac_xxx.uf2が
生成されます．これを1．の手順で ラズパイ Pico DACに書き込んでみてください．

