なぜか持ってたWROOM-02を動かしています.
I2Sを使うからには、サンプリング周波数に同期してdataを出してやらなくちゃいけません.いちいちI2S statusをpollingしていたら他の仕事が出来なくなってしまって困ります.なのでこんな願望があります.
1)DMAとI2Sを組み合わせてhardwareの自動でdata出力してもらいたい
2)DMAがbufferの半分ぐらいまで消化したら割り込みしてもらいたい
開発toolはArduinoIDEを使っています.
ArduinoIDEでESP8266を使うために「Generic ESP8266 module library」をimportします.
同libraryのI2S exampleを見るとI2S.hというのをincludeしていて、main loop()の中で、
I2S.write(data);
を永久にやってます.CPUを喰うやり方でなんだかなぁです.ちょっと使えん.
I2S.hに宣言されている関数を調べましたら、使えそうなのが2つありました.
I2S.write(&buffer, size);
これはbuffer一括で引き渡します.中でDMAを起動しています.→上記1を実現か?
onTransmit(void(*)(void))
これはwrite用のcallback関数を登録します.→上記2を実現か?
期待できそうなので試してみます.
↓それじゃぁI2S portにDACをつけるかと、I2Sのpin assignを調べたらなんと、丸印のpinが別件で使用中です.IO15,IO2はreprogramming用、RX0はUART用、やる気失せたぜ.
ESP32が中華通販から届くのを待ちましょうかね?
ESP32には8bit DACが載っているらしい.
かしこ
船便で一月待ちましょう
返信削除締め切りと思えばあっという間です
マテバ回路の日和あり(誤字)
削除攻殻機動隊でトグサが、
削除「俺はマテバが好きなの」
とこだわってました。
マテバって実在するんですね。
私は、ESP8266 の I2Sの応用として、この辺の記事
返信削除https://qiita.com/Nabeshin/items/2a49b59e2a0c3a37e8c5
ESP-WROOM-02(ESP8266)でWebラジオ
を、参考にしてました。
※本家のURLは、
https://github.com/espressif/ESP8266_MP3_DECODER
(↑の記事にも載ってる)です。一応、espressif提供なのですが、記事中にもある通り、「所々」間違ってます(笑)
なお、マトモに動かすには、外付け「23LC1024」が必要なのですが、入手できなかったので、秋月に売ってた、「23LC512」
https://akizukidenshi.com/catalog/g/g114062/
で、試したところ(プログラムは、一部修正)何とか、音は出ました。
※音源ソースによると思われますが、ちょっと動きが不安定。「RAM容量の差」では無いと思います。バッファが足りない訳ではないみたいなので。
「RX0はUART用」で、DATAと兼用なのですが、音楽再生中には通信してるわけでは無いので、実際は問題なく動きます。(debug message は、TX0なので関係ない。同時に「書き込み」とかしなければ、問題ない。)
削除一応、内部では「DMA使って」バッファに転送してたハズ。
削除内部的には、「FreeRTOS」を使っていて、「バックグラウンド処理で、IS2転送やってたハズ。結構参考になる(まぁ、メーカーリファレンスだしね。)
そのページわたしも見ました。
削除sramを要するとはbuffer深いですね。
USBよりもIPはレートが不安定だから深いbufferを使うとかいう事情かしら??
わたしもそろそろRTOSのセカイに羽ばたく時でしょうか
削除と言うか、ESP系のArduino は、内部で、
削除・FreeRTOS
使ってるんで、既に「使ってる」と言えば使ってます。
※実は、init(), setup(), loop() 以外にも、裏で「モニタプロセス」が、勝手に走ってます。
なので、「長時間帰ってこない処理」があると、終了(再起動だったかな?)してしまいます。
(それを防ぐには、定期的に yield() を呼べばいい。)
あと、ご存じかもですが、このサイト
削除http://nopnop2002.starfree.jp/
も、結構いいです。
※ここは、ESP系以外もイロイロ載ってる。というか、個人で良くここまで調べたなーと思った。
>IPはレートが不安定だから
削除ホントのインターネットのストリームだと、「23LC1024」くらい無いと、ダメな時がるカモですが、自分は「ローカルネット」にサーバーを建てて試してたので、そういう意味では「バッファ不足」にはなってません。接続が切れても「数秒くらい」は、再生してます(笑)(容量の差と言っても、「5秒」が「10秒」に、なる位だし。)
※「ESP32」は、内蔵RAMが多い(あと、処理能力も高い)ので、同様のことは、
削除・外付けRAMは不要
で、出来ます。(コレも試した。断然、ESP32のほうが安定して動く)
>ESP系のArduino は、内部で、FreeRTOS使ってる
削除それはいい.vendorの資料を読んでみます.
そのわりに割り込みサービスが出たとこ勝負っぽいのが残念かなぁ.天下り的に提供しといてくれたらうれしいです.
STM32CubeMXはそこはしっかりしてます.
>Arduino は、内部で、FreeRTOS使ってる
削除但し、ライセンスの関係なのか、結構「古いバージョン」らしいです。
※なので、あまり機能に期待しないほうがいいカモです。
それとは別に、もっと新しいバージョンの「FreeRTOS」を移植してるところはあるみたいですが。
※個人的には、「FreeRTOS」みたいなのを使うなら、「ESP32」位じゃないとダメだと思う。↑にも書きましたが、ESP8266は、なーんか動きが不安定です。ちょっとマシンパワー不足感がある。
削除espressifも、「新規設計には使うな」って言ってるし。
わたしのESP32がどこかで滞留している気配でなんでか届きません.来なかったりして.
削除※秋葉原行ってたんだったら、秋月で売ってたのに・・・
削除実にそのとおりです.
削除今日はアキバ全域が混んでいて、秋月も人が多くてメゲてしまいました.moduleどこにあるのかと探したんだけど、挫折.
アメ横はもっとすごくて、インバウンド>日本人 だったと思います.
ぐだぐだのぱー
配置が変わってからどこにあるかわからないから
削除どこですか?とコミュ症なので聞いてます
アメ横は早朝と閉店後以外は混んでいるから避けて通る
削除秋月の棚はいつも探すの大変です.
削除