まずこれらの型番は何かというと、小出力の BTL アンプでピン互換のもの。
多分オリジナルは、MC34119 でいろんな派生チップが出た。有名メーカーだと LM4890 があり、XPT4890, LB4890, NS4890 など型番を同じにした中華チップが多種あるようである。割と最近見つけたのが CKE8002 で、これはやたらに格安である。
正確に言うと LM4890 は、互換ではない -- SHUTDOWN の極性が逆。互換なのは LM4991。さらに言うと互換風?の D級アンプ TPA2005 というのもある。もうひとつ NS4150 。

なんでこれに注目したかというと、オペアンプとして機能するようなのである。そうであれば、アクティブフィルタを組み込んだパワーアンプに仕立てることも可能。実際 MC34119 のデーターシートには、そういう例も載っている。
LPF 付きアンプにできるなら、PWM や DAC 用のアンプに都合が良いかなと思った次第。
では、どんな回路が良いのだろうか?
Microchip の FilterLab というソフトを使ってみたところ、2次のバターワース LPF で MFBという回路が良さそうな感じに見えた。RC LPF と (コンデンサを入れた)負帰還アンプを直列につないだものに見える。

・http://sim.okawa-denshi.jp/OPttool.php
ここの計算サイトでは、「オペアンプ多重帰還型フィルタ」となっている。

それは良いのだが、仮想GND の扱いをどうするのか? FilterLab で 1/2 VCC になってるが、計算サイトの方は±電源の例である。アンプのデーターシートに書いてあるのは、固定の電圧ではなく、+入力にコンデンサだけ入れて、−入力はカップリングコンデンサ(1uF)を入れている。
自信がないのだが、多分 RC LPF と(コンデンサを入れた)負帰還アンプ の間にカップリングコンデンサを入れれば良いのだと思う。
最終的には、前段にオペアンプを入れ、仮想GND を共通にしたので、ここのカップリングコンデンサは不要になった。
後はゲインと入力レベル。
なにをつなげるかで変わるわけだが、とりあえず 0 - 3.3V ということにしておこう。電源は 5V 。すこしゲインを取れそうだが、ゲインは 1 (BTL で x2) でいいや。
あと、ヘッドホンアンプにするのであれば、片側だけ使って大容量のカップリングコンデンサを入れる。
調べてみると、4V 耐圧 220uF のタンタルコンデンサがあった。サイズは 3528 。これを使うならゲインを1 にしたほうが都合が良さそうである。6.3 φの電解コンデンサ(表面実装/リード)も使えるようにしておいた。こだわらなければ 100uF でも良いと思う。
入力側だが、(3.3V I/O の) PWM とか 1bit ΔΣ なら ゲイン的にはそのままで良いはず。(出来たらバッファIC + 専用のレギュレータで 安定した電圧レベルにした方が良いとは思う。)
で DAC 。ESP32 は フルスケール 3.3V で問題はない。CS4334 は、5V電源 だが出力は 3.5 VPP のようである。ちょっと気になった TDA1387 という 昔のDAC もフルスケール 3.5V とは書いてある。ただ電流出力なのでうまくないかも。

データシートを見ると Ri が 0 の負帰還オペアンプで インターフェイスしている。-入力の電圧が変化しないように制御するのだから、Rf (2.7K) x 電流値が反転して出力されるわけだ。コンデンサが入っているので、1次のLPF にもなっている。この IV 変換を入れれば良いのだろう。でもそれでは面白くない。折角簡単な回路に出来たのにだいなしである。
オペアンプを追加するのであれば、意味を持たせたい。ならば、定数を調整して全体で3次のバターワースにするのが良いのではないか? FilterLab でうまい回路は出てくるのだ。しかしである、定数は上記の計算サイトを使いたいと思っている・・・のだが2次しかないのである。ちょっと荷が重い、課題ということにしておこう。

どうも 第一段と残りは両方 cutoff 20K のようだ。そうであれば、 第一段だけ変換してやれば良い。まず R11=0,R12=2.7K とする。R x C を同じ値にするのだから、C11 = 2941pF となる。実際は 2.2nF を使って、R12 を大きな値 3.6K にする。と言っても 今度は出力が小さくなるので、3.3K で良いのかも。

(cutoff 20kHz)
R1 = 12kΩ
R2 = 10kΩ
R3 = 12kΩ
C1 = 0.001uF
C2 = 470pF
C3 = 1uF
(cutoff 8kHz)
R1 = 15kΩ
R2 = 12kΩ
R3 = 15kΩ
C1 = 0.0022uF
C2 = 0.001uF
C3 = 1uF

興がのったので、ボードを設計してみた。Raspi Zero 用の(ような・・)外形にしてみた。機能としては、TDA1387 を使ったノンオーバサンプリング DAC スピーカー/ヘッドホンアンプ。LPF は三次アクティブフィルタ。おまけの機能として、PWM 直接入力 (ジャンパ切り替え)。
実は Raspi 持ってないのである。持ってないのに Raspi 用にしたのは、ちょっと興味があったから。zero のサイズに収まるのだろうか?と思ったが、むしろ丁度良い感じになった。PWM 直接入力 は、ΔΣに興味があったから、Raspi ぐらいになると 余裕で計算できるんじゃないかと。
#12 IO18 I2S_BCK
#35 IO19 I2S_LR
#40 IO21 I2S_DO
#36 IO16 PWM1(R)
#33 IO13 PWM2(L)
#24 IO8 AMP_DISABLE
接続は上記6本のみ。電源も5Vしか使わない。
さて、zero の基板は小さいので 3 つ面付け出来るのである。何をつくろうかと考えたんだが、raspi zero の代わりになる ESP32 ボードが良いのではないか? PWM 直接入力 には、DAC のピンを割り当てる。内蔵 DAC 出力も出来るし、LED PWM を割り当てれば、既成のライブラリで ΔΣも試せる。RMT を使った ΔΣ はないようだが、それも可能性がある。ピンの割り当てが自由だから もちろん I2S も使えるのである。
3つ目は、その ESP32 ボード用のなにかを考えたい。zero サイズだが、もはや Raspi とは関係ない変なものになりそうだ。

さて、ESP32 ボードである。載せられるのは、ESP32 と電源のみとなった。一応 それ自体を Raspi と接続できるようにはする。TXD/RXD は Raspi とクロスさせ、EN と GPIO0 を Raspi から操作できるようにする。それ以外に SDIO スレーブとして Raspi と接続できるようにする。上記アンプボードへは、DAC を PWM 入力に割り当て、I2C, SPI とあといくつかを (配線の都合が良いように) 割り振る。
これらのデバイスは、スレーブにもホストにもなれるので、Raspi のデバイスにもなれるし、Raspi の代わりのコントローラにもなる。
書き込み+通信
#08 TXDO RXD (抵抗いり)
#10 RXD0 TXD (抵抗いり)
#38 GPIO20 EN (プルアップ)
#35 IO19 I2S_LR GPIO0 (共用)
DACボード
#12 IO18 I2S_BCK GPIO19
#35 IO19 I2S_LR GPIO0
#40 IO21 I2S_DO GPIO27
#36 IO16 PWM1(R) GPIO25 (DAC1)
#33 IO13 PWM2(L) GPIO26 (DAC2)
#24 IO8 AMP_DISABLE IO16
I2C
#03 IO2 SDA GPIO23
#05 IO3 SCL GPIO22
SPI
#19 IO10 MOSI GPIO18
#21 IO9 MISO GPIO5
#23 IO11 SCK GPIO17
SDIO
#15 IO22 SD_CLK GPIO14
#16 IO23 SD_CMD GPIO15
#18 IO24 SD_D0 GPIO2
#22 IO25 SD_D1 GPIO4
#37 IO26 SD_D2 GPIO13
#13 IO27 SD_D3 GPIO19
その他
#26 IO7 GPIO33
#29 IO15 GPIO32
#31 IO16 GPIO35 (入力専用)
#32 IO12 GPIO34 (入力専用)
無接続
#11 IO17
GPIO36
GPIO37
電源ICは、
SY8089A 2A 1MHz KVxxx 10個$1.5
SY8009A 1.5A 1.5MHz ADxxx
SY8008C 1.2A 1.5MHz ACxxx 10個$1.2
SY8008B 1A 1.5MHz ABxxx
NCP1529 1A 1.7MHz DXJAYW 10個$1.1
MT3410L 1.3A 1.5MHz 10個 AS11 10個$0.9 (〜 6V)
型番はいろいろある。MT3410L を使用予定。コネクタは Micro USB 。表裏に2つけているが、1 ピンに注意。裏がリバースタイプ用。

最後の、3 枚目。ロジアナボードにしようかなと思う。レベル変換は 74LVC シリーズにすると、5V までいける。受けるデバイスにはいろいろ考えられる。ひとつは、I2S 。カメラと同じように すればよいわけで 多ビット(24 ?) をキャプチャーできる(はず)。DMA も使え取り込むことは出来るが情報量が多く転送に難がある。もうひとつは RMT 。ON/OFF の時間を測定するもので、バッファリングも出来る。8ch まで。それぞれの波形は分かるが、チャネル間の時刻合わせに工夫がいりそう。入力バッファは LVC245 で良いのだろう。ただし、TSSOP 品でないと入らないような。
勢いにまかせて 16 入力にしたものの、無駄という気も。任意の 8入力を enable するとか使いようはあるかも知れないが、やっぱり無駄のような。でも、無駄でも単に使わなければ良いしこれで行こう。
あと ADC 。精度はともかく高速には動作するようだ。というより、実際の能力とは別に設定できる。例えば 80MHz クロックで動作させ 10 クロックで出力とか。そうすると 8Msps になってしまう。また、ADC は2つある。それぞれ接続できるピンが違う。ESP32 ボードで使えるものは・・・
ADC1 GPIO 32-35
ADC2 GPIO 0,2,4,12-15,25-27
#32 IO12 GPIO34 (入力専用)
#33 IO13 PWM2(L) GPIO26 (DAC2)
この組み合わせで良いか。
ADC は、同じグループのものを自動で切り替えて計測・・というのが可能で DMA もできる。同じグループから2つのほうが使うのは楽。だが、出来るだけ高速に 2ch という場合、別々のほうが良い(のだろう)。
すこし広い入力レンジを実現するために、前段にオペアンプ入れようと思う。とりあえず DAC でも使う予定のMCP6002 にしようかと思う。一応は RAil-to-Rail 。周波数は 1MHz とか。もっと性能の良いものを使いたいところだが、ちゃんと動かせた後で良いかなと。
10MHz ぐらいのものが良いのかも。ちょっと探してみたが MCP6022 とか LMV722 とか?
このオペアンプを 3.3V で動作させて、仮想 GND を 1.8V にする。両方とも専用の三端子レギュレーターにする。Ri = 47K, Rf=10K で計算してみると、10V 〜 -5V まで測定できる。
アナログスイッチ使って、レンジ切り替え出来ると思うが、これぐらいの範囲が測定できれば困らなさそうなのでパス。ちなみに、最近のアナログスイッチはすごい。SATA の信号線を切り替えられるものがある。数GHz を通せるわけだ。ON 抵抗も 1Ωとか。
あと、三端子レギュレーターは、3.3V が TAR5SB33 または、MIC5205 。
1.8V の三端子レギュレーターは基準電圧の代替。 MCP1700 または XC6206P (sot23 1:GND , 2:Vout ,3:Vin )。
MCP1700 ±0.4% , 50 ppm/℃
XC6206P ±2% ,100 ppm/℃
すぐにでも発注できるところまで来てしまった。しかし、興がのって作っただけなので、もうちょっと検討しようかと思う。
ところで、Raspi が気になった理由のひとつは、Raspi の 40 pin コネクタに 2 つめの SD/SDIO 信号が出ていることを知ったため。そして、ESP-WROOM-32 の方、 SD/SDIO のピンアサインが slave にもなることが分かったのである。SDIO 通信は、Raspi + ESP32 が最もお手軽な環境であるようだ。
Raspi に (少なくとも)2つのコントローラがあって 追加の SD カード を付けられるのである。ただし、zero w など wifi モデルでは問題があるという情報も見つかった。(3つ目があるのだろうか?) SD/SDIO を使ってみるのであれば、wifi モデルでない方が無難そうである。
で、調べているうちに Raspi 用の DAC ボードが割と人気があることも知った。どうも Raspi は、MCLK を出力できないようで、それが必要ない NOC の DAC が良く使われるようである。で、10cm に 3枚面付できることを知り、じゃぁ自分が設計したらどうなる?と思ったのであった。
というわけで、先の2枚は確定。3枚目だが思い入れはあんまりない。16 入力もいらないし、8 入力にして、ボタンとか付けてみることに。

ボタンは、サイドタイプにして、上に OLED モジュールをかぶせられるようにした。あと LED 付けてみたり。LVC245 の DIR/OE を制御できるようにしてみたり。あまり意味ないと思うけど。
ちなみに、サイドタイプのボタンは aliexpress で tact switch smd side ぐらいで検索すると出てくる。型番は TD-15EA で、データーシートはググると見つかる。
・suzbrd_espzero-v1.1.zip EAGLE ソース
・suzbrd_espzero-v1.1-out.zip ガーバー (92mm x 65mm)
・ https://gerber-viewer.easyeda.com/
ガーバーの zip ファイルをここに upload すると中身を確認することが出来る。
なお、異種面付けしているので、elecrow 以外では追加料金が必要になる可能性がある。elecrow での価格は、10 枚 $4.9 + 送料 $8.9 (registerd air mail) 5枚だと 送料のみ安くなる。
また、R,C の値は精査していない。というか、適当。
基板修正予定
・イヤホンジャックに、PJ393 という4極タイプを無理やり使うようにしていたのだが・・・PJ327A という3極タイプのほうが良いと思う。両方とも金メッキ。他に3極タイプでニッケルメッキの PJ320B というのがあって、 PJ327A のフットプリントに付くようだ。
・http://rtlecs.com/product/Phonejack/list_1.html
代替品もある PJ327A に変更しようかと。
・フィルタ用コンデンサは、リードタイプも使えるようにしようと思う。
とりあえず FIX して発注してしまったが、ファイルを更新。
・suzbrd_espzero-v1.1a.zip EAGLE ソース
・suzbrd_espzero-v1.1a-out.zip ガーバー (92mm x 65mm)
回路的には変更していない。上記の予定した変更+一応 RC 値のチェック(更新)。それでも適当だが。
ヘッドホン JACK は表 PJ327A 裏 PJ393 にした。こうしとくと、背の高い部品を裏面に付けるということも可能。
まだ、変更する点が見つかった --- 一番背の高い部品はターミナルブロックだった。せいぜい 1-2W のアンプなら、L型 ピンヘッダで良いじゃないか。2番目はたぶん電解コンデンサで 5mm ぐらい。3 番目が ヘッドホン JACK かな -- 4.5mm ぐらい。
追記:これではまずい点があった。TDA1387 の出力にプルダウンが必要。
パーツメモ
BTL アンプ
CKE8002B 2W@4Ω 1.5W@8Ω PSRR 60db 20個 $0.82
LM4890 1W@8Ω PSRR 62db
LM4991 3W@3Ω 2W@4Ω 1.5W@8Ω PSRR 64db 10個 $4.69
XPT4890 1.1W@8Ω PSRR 70db
NS4890 1.6W@4Ω, 1.1W@8Ω PSRR 70db
NCS2211 1.5W@4Ω, 1.0W@8Ω PSRR 75db 10個 583円 @mouser
出力は、どれだけ低抵抗のスピーカを駆動できるかも関係ある。
5V p-p = 1.77Vrms(1/2.828) , 3.54Vrms(BTL)
3.54 x 3.54/8 = 1.56W
8Ωなら 1.5W を超えることはない。
4890 系は、/shutdown 端子で H にすると通常動作 , LM4991 は shutdown 端子で L にすると通常動作。CKE8002B は LM4991 と多分同じ。
CKE8002B は安いのだから、使ってみて気に入らなければ再検討すれば良いと思う。ヘッドホン専用にするのであれば、XPT4890、NS4890 を使ってみたい気がするが、SOP 品があまりない上に、型番を指定できないのであった。
追記:mouser で NCS2211 というのを見つけた。不満があればこれが良さそう。なお、 shutdown 端子で L にすると通常動作。
SHUTDOWN 論理が2通りある。プルダウンのパターンは付けたが、プルアップも付けた方が良さそうだ。ただし、GPIO も接続しているので プルアップする場合、両方を付けて 3.3V を超えないようにしないといけない。
オペアンプ
MCP6002 1MHz PSRR 86db 20個 $2.67
MCP6022 10MHz PSRR 90db 10個 $2.98
LMV722 10MHz PSRR 90db (?)
BTL アンプよりノイズが小さいのだから、MCP6002 で十分と思える。
gain bandwidth product 1MHz というのはどうなのだろう。SSM2211 のデーターシートには、20kHZ x4.14 より十分大きければ良いと書いてあるが、SSM2211 自身は 4MHz だったりする。NCS2211 は 12 MHz 。LM4890 は 2.5 MHz 。1MHz で十分だと思うのだが、パワーアンプより 小さな値はどうなのか?
CKE8002 以外を使うなら 10MHz 品を選んだほうが良さそうな、パランス的に。
DAC
TDA1387 20個 $2.19
こんなに安いのであれば、パラレルにしてみたくなるが、それでどうなるという気もするのでパス。
出力 1mA p-p バイアス 1.08mA 電圧範囲 0 - 3.5v
実はちょっと理解できてない。1.08mA を中心として ± 0.5mA ということなのだろうか?それとも単純な足し算?それはともかく、バイアスがあると、仮想GND がどうのというのが相当面倒になる。
もう回路を変えてしまおうかと。出力をプルダウンしてやればとにかく、0 - 3.5v の範囲の電圧が出てくるわけである。インピーダンスは高くなってしまうので、ボルテージフォロワを通し、低インピーダンスにして カップリングコンデンサを通して、BTL アンプに入力。BTL アンプではゲインをかける。
こうしてやれば、音量が大きい小さいという問題は起きても、フルスケールのとき電圧範囲を超えてしまうという問題が起きにくくなる。そして起きたとしても、RC の定数を変えれば対策できる。

要するにこんな回路。
ところでライン出力というのは、0.7Vrms ぐらいだそうだ。0.7 x 2.828 = 1.98v p-p 。1.0Vrms を最大入力とすると、2.8v p-p 。そのあたりに合わせておくのも良いかも。
もんだいは作ってしまった基板をどう改修するか? まず 仮想GND が 2.5V である。3.5V までしか出力できないわけだから 2.0V p-p 以下になるようにする。そうしておいて プルダウン抵抗を入れて、バイアスの分も込みで電圧を下げ、中心が 2.5V になるようにする。
2.0V p-p ということは Rf を 2KΩにする。仮にバイアス 込みで 1.0mA - 2.0mA の範囲の出力だとすれば、1.5mA プルダウン抵抗に吸い込ませれば良い。2.5V で 1.5mA だから プルダウン抵抗は 1.66K Ω。
0.5mA - 1.5mA の範囲だとすれば、1.0mA で 2.5KΩ。
で、BTL アンプにはゲインをかけてやる。-1.77 であれば、上記の回路図の定数である。
一応プルダウン1つでなんとかはなりそう。あと 仮想GND 中心に振れるようにするのは困難なので、ヘッドアンプ専用でなければ、カップリングコンデンサを一段目のオペアンプの後ぐらいに入れないといけない。
ヘッドホン用カップリングコンデンサ
3528 1210 Tantalum Capacitor 4V 220uF 10個 $1.50
一応 耐圧 4V 220uF を考えたがどうなのだろう?
タンタルコンを選択したいが、別に性能的に優れているというわけではないかも。電解コンは寿命があるが、タンタルは寿命を気にしなくて良いというのが利点らしい。小さいというのもあるかもだが、基板スペース取ったから利点になってない。
SSM2211 のデーターシートを見ると 8Ωスピーカを駆動するケースで 470uF を使う例が載っている。cutoff 42Hz 。16 Ωのヘッドホンなら 220uF ということになるが、目いっぱい音量を上げたときの話。
0-5V でスイングさせるなら、むしろ直列に抵抗を入れて音量を抑えないといけない。10Ωあるいはもっと大きな抵抗を入れるとすれば、耐圧 4V で十分。容量も 抵抗値+16Ωに反比例して減らすことができる。
24 Ωでも良ければ 100uF でも良いのではないかと思う。ある PMP の回路では、0-3.3V の出力に対して 100Ω + 47uF という例があった。大昔と比べればヘッドホンの効率が上がっているから、それでも構わないという気もする。
というわけで抵抗を入れれるように修正しておこう。

いろいろ検討したが、フィルター周りはこうしようかと。
信号レベルが 1.5V p-p になるように 1.5KΩでプルダウンする。バイアス + 信号が 2mA だったとしても、3V まで。これをボルテージフォロワで受けて、ゲイン 3倍のアンプの入力とする。
PWM 入力 は、信号を 1/2 に分圧。切り替え用のジャンパを入れているが、無接続のときまずいので、オペアンプの入力に高抵抗のプルダウンをいれる。
ゲインを 3倍にしたので、ヘッドホン出力の方には、抵抗必須。3.3V 出力で 100 Ω の例もあるので 150Ωでも良いのかも。その場合 カップリングコンデンサは 47uF でも良く 100uF で十分。
電子ボリューム
さて、電子ボリュームを入れるとしたら、どうするのが良いだろう。
R36 の抵抗値を小さくしていけば 出力は小さくなる。
抵抗値が低いので、電子ボリュームは選択枝が狭い。アナログスイッチを使って 抵抗を組み合わせて接続していくものにしようかと。TSSOP14 の HC4066 なら裏面に2つ載ると思う。16 段階切り替えにしかならないが、オプションとしてパターンだけ載せておきたい。
4つ抵抗を付けられるわけだが、1.5K , 3K, 6K (12K+12K), 12K とする。12K をいくつパラにするかという考え方をすると 8,4,2,1 で 0〜15 である。もともとの 1.5K はそのままなので 8/(8 ・・ 23) 倍の範囲で調整できる。・・・1/3 〜 1 倍までしか調整できず、ボリュームを下げきれない。ダメかな?
リニアに出来ないので、無駄に段数が多いような気がする。幸い配線の都合で 上位 2bit を 1つの HC4066 にしている。潔く大中小と3段階にして、大胆にボリュームを絞れるようにしても良いかも知れない。

電子ボリューム対応版。
なにかく、基板は設計できた。かなり厳しかったがうまく入った。まぁ電子ボリュームはオプションである。
裏面は基本オプションで、他に
・PWM 用 抵抗
・SHUTDOWN 逆論理用 プルアップ
がある。
この基板のバージョンは 1.2 。他のところのチェックもしたいし、すこし寝かせる。
もうちょっとオプションを入れられるような・・・

オートシャットダウンの回路を見つけた。無音状態では OFF にしてしまう。でも GPIO で制御できるからいらないか。
あと電源。AB級 2W+2W なら結構電気食いそう。だからと言って、コンデンサを沢山入れると 突入電流がひどいことになりそうだし、どうすべきか。
ダイオードを入れてコンデンサという回路は見たことがある。オプションに入れとこう。
ESP32 ボード
これも、いろいろ検討してみよう。
このボードは、SD/SDIO を意識して作ってある。それならば、MicroSD スロットを搭載してみるのはどうか。aliexpress で "microsd socket" を検索すると良さそうなのが見つかった。

まずこれ、push-push で ポッチがある。端子は外側に出ていて Detect ピンが 1.1 ミリピッチで等間隔に並んでいるのが特徴。あと基板につけるタブが4つで 1つは内側。これが、とにかく安い。端子が金メッキでなさそうだし、明らかに安物ではある。オリジナルがあると思うのだが分からない。それらしい eagle ライブラリを見つけたので採用。


次はこれ、molex 50090 にしか見えない。がっちりロックするタイプで 簡単には外れたりしない。eMMC のように使うようなイメージ。
どちらかを載せられるフットプリントを作って、なんとか配線まで終わった。
あとファームウェア書き換え。Raspi があれば、なんとかなるはずで、特に回路を入れない。本命は OTA だと思うので、OTA を指示するボタンだけ付けようと思う。幸い SERVER_VP,SERVER_VN が未接続だったので、これを割り当てる。ボタンのパターンを使って信号を引き出す使い方も想定。ついでに MicroSD の detect も どちらかに接続しておく。
ついでに I2C 用の GPIO に プルアップ抵抗も付けた。ESP32 の GPIO は、プルアップ・プルダウン可能だが、値までは設定できない。確か 2.2KΩとかだから 外付けが必要かなと言うことで。ちなみに追加したスイッチには、外付けなし。この場合は必要ないという判断。
そういえば・・・Raspi zero の代わりにコントローラとして使う場合は、ピンヘッダを付ける。Microsd スロットだけ使いたい場合は、ピンソケット。Raspi zero 用デバイスとして使うことは、まずないんじゃないかと。SDIO 通信のテストぐらい。それで実用的な使い方があれば別だが、先のはなし。・・・となれば、ソケットーソケットケーブルを使って接続し、ファームウェアを書き換えることになる。
そうであれば、 USB シリアル基板を別に作っても良いかも。

・・・なんて考えていたのだが、ソケットーソケットケーブルでは面倒かと思い、基板でブリッジ?エクスパンダ?を作ることにした。2か所刺せば Raspi と接続できる・・・が、ESP32 ボード同士だと EN が共通だからうまくない。もうちょっとヒネリがいるなぁ。
このブリッジは、40 pin ヘッダ 頭の 1-10 とおしりの 31-40 に接続すると丁度良いように設計した。で 、ブリッジの 8 と 10 をクロス接続できるようにすると・・・ EN と GPIO ピンがクロスになる。そして、TXD,RXD もクロスになる。・・・これでいこう。
右のやつは、DC ジャックを使えるようにする基板。MINI-360 DC/DC コンバーターを使うことで 9V - 20V の電源も使えるようになる。(5V の場合は VIN と 5VOUT をジャンパ)。
だいぶ練れて来た。基板サイズも 80mm x92mm とぎりぎりになった。これで FIX かな。
・suzbrd_espzero-v1.2a.zip
・suzbrd_espzero-v1.2a-out.zip
CKE8002 以外にも、同じピンアサインの BTL アンプがいくつか見つかった。ちょっとスペック値だけ整理しておこう。
高クレード
PSRR THD(+N) 出力(5V 8Ω) GBW
NCS2211 75db 0.15%(0.5W) 1.0W 12MHz
SSM2211 66db 0.15%(0.5W) 1.0W 4MHz
低クレード(というより低価格)
FT690M 64db 0.05%(0.5W) 1.0W
CKE8002 60db 0.08%(0.25W) 1.0W
HXJ8002 60db 0.09%(0.5W) 1.8W

出力は、8Ω 1.0W 以上であれば、あまり関係なさそうだ。なぜなら 1.0W を超えると 波形が歪むのが普通。ぎりぎりまでは頑張るのだが、無理なものは無理なのだ。
THD(+N)が波形のゆがみを示していると思うのだが、高クレードが良いとは限らないというのが微妙。どれも 0.5W 出力であれば、0.1% かそれ以下。8002 の方が良いスペック値を出してたり。

周波数特性にちょっと特徴があった。これは 8002 のグラフ。10KHz あたりが一番値が悪い。・・・と言っても 0.1 % まで行っていない。

SSM2211 では、基本フラットで、高い周波数で良くなる。しかし 0.2% である。
測定方法の違いとかありそうだし、負帰還かけてるし、THD+N というのはあまり関係ないのかも。
PSRR は、Power Supply Rejection Ratio で、電源変動の影響をどれだけ受けないかという話。気にするし、重要だとは思うのだが・・・無音時のノイズが一番関係ありそう。鳴らしているときはあんまり分からないような。電源自体がしっかりしてれば、良いという気もすこし。
ところで、ピン配置が近い D級アンプ とか AB級-D級 切り替え可能アンプを見つけた。実際の所そんなには興味がなかったりするが、記録しておこう。
D級アンプは、NS4150 。ピン配置は同じである。ただし、負帰還抵抗は付けない。また SD は、0 で SHUTDOWN (逆論理)。
両用アンプは、MIX2008 , MIX2018 。こちらは +IN が MODE に変更になっていて MODE=1 で D級動作。SD は、0 で OFF と書いてあるが、動作が OFF かどうかは定かではない。これも負帰還抵抗は付けない。

切り替えがある理由は、小出力時の消費電力だと思われる。あるいは、小出力時のノイズ? 裏に放熱パッドもあるし、良さげな感じはする。
ただ、D級アンプ機能を持っているアンプには、負帰還抵抗は付けないのである。そうすると、アクティブ LPF とかを組み込めないので、あんまり興味がなかったりするのである。なお、全部フィルタレスである。スピーカーケーブルを 20cm 以上に伸ばすようなときだけは、LPF なり フェライトビーズなりを入れて、ノイズ対策が必要。
また、MIX シリーズには、あの PAM8403 とピン配置が近いものがある。MIX3008,MIX3018 。
MIX3008 は、#9 NC が、AB/D 切り替えで 1=D 。近いというより、 PAM8406 と同じだった。MIX3018 は、それに加えて #5 MUTE が、ゲイン切り替え? SD と機能が被ってたわけだから良い 変更に思われる。

比較のために PAM8403 のピン配置も加えて載せてみた。ヘッドホン出力では、330 Ω で出力を落とした上に ゲインも下げるようである。