電音の歩み

電子楽器を中心とし、ものづくり関係も含めて紹介していきます。

デジタル版Frequency Shifterの検討 その3 A/D,D/Aの選択とマイコンの変更

■外付けA/D,D/Aの選択と、それに最適なマイコンへの変更も検討

結局、良いデジタルエフェクタのプラットフォームを作ることが第一歩となったので、外付けA/D , D/A を使うことを前提に検討します。

A/D,D/Aは、外付けなら16ビット精度程度が欲しい。その際のI/F としては、できるだけ高速なものを選ぶ必要がありI2Cは避けたほうが良いだろう。となると SPI かI2S になる。

SPI の高速ADCでは、16bit 品は高価なものしか無く、選択肢は12bitになります。arduinoでの使用実績がある安価なMCP3201はmax100kspsなので、少し遅すぎます。ROHMのBU79100Gは、500Kspsで動きそうなので候補とします。

 

デジタルオーディオ専用I/FであるI2S のA/D,D/A は、多くが「オーバーサンプリングの1bit 処理 + デルタシグマ処理 + デジタルフィルタ」の構成で、オーディオ信号に特化して高速、高分解能を実現したものです。16bitはおろか24bitのものもあり、アンチエリアシングとして、高性能なデジタルフィルタが内蔵されており、さらには安価と、言うことがありません。

問題は、I2S はマイコンにハード支援がないと使えない点で、STM32F3(BluePill) では使えなさそうです。しかしデジタルオーディオレベルの性能が期待でき、しかもリーズナブルということで、なんとかしてI2Sを使うためには、マイコンを変えようと思い始めました。

 

(1) STM32F4 ( BlackPill )

DMAとI2Sサポートがあり、浮動小数点演算が使える魅力もあり、STM32duinoでも開発可能。しかしF3では使えたSTMicroの低レベルライブラリがサポートされておらず、使えるのはarduinoのライブラリのみ。これでは、STM32F1のほうがマシ。今後サポートされたときには再浮上するかも。

(2) ESP32 

arduino環境で使えることは確認でき、メモリも多くクロックも高い。しかし、内蔵ADCが酷くて使い物にならない(扱える電圧レベルが低く、ものすごく非線形)。入手した資料と実機とふるまいが違うなど、気持ち悪い点が多く検討をやめた。

(3) RP2040 ( Raspberry PICO )

M0コアだと思い候補に入れていなかったが、調べてみると"M0+"で、STM32F1との比較はわかりませんが、arduino環境でも使え、クロックが高くて、2コアが使えそうです。最も魅力を感じたのは、PIOにハード支援プロセッサを持っており、それを利用したI2Sがarduibo環境でも使えそうなことです。

 

このチップは面白そうなので、RP2040 + I2S のA/D,D/A の方向で検討を進めることにします。