2020年5月9日土曜日

STM32でDCCを作る方向で (12) STM32CubeMXが生成するUSB Audio Class example

告知です.
コミケ99にて当社のDDC/DACを頒布いたします.
  日付   2021年12月31日(金) 東地区 テ-40b  東5ホール
  サークル名    bangflat
コミケにお越しの際はお立ち寄りいただけますとありがたいです.
商品紹介ページを作りました.

ーーーー
NUCLEO-STM32F207 でDCCを開発する.それはつまりUSBのAudio ClassをSTM32F207に実装するということである.

STM32CubeMXは、USB Audio Classのsample codeを吐かせることもできる.参考にしたい.

とは言ってもそれには制約がいろいろあるようだ.

1)USB Audio Class 1.0みたいよ

2)STM32F207には2つのUSB peripheralが内蔵されている.FS専用/HSFSである.このうち、Nucleo基板上のUSBコネクタに結線済みなのはFS専用のものである.HSFSのものは自分でUSBコネクタを付けなくちゃいけない.またHSで使いたければPhyも付けなくちゃいけない.なので、いまはFS専用のものを使う.それゆえUSB転送レートは12Mbpsに制限される.それでも16bit44.1kHzなら通るだろう.

3)STM32CubeMXが吐いたcodeをコンパイルして焼くと、それだけでwin10が認識してくれる.しかしwin10で音楽再生してもaudio streamを出力してない(protocol analyzerで確認した).descriptorに何かしらの不具合があるのだろう.解析が必要だ.

4)audio streamを何処にも出力せず捨てているみたい.なので音は出ない.

というわけでそんなに役には立たないのだが、descriptorのやり取りができているだけでも有難いと思うことにしようそうしよう.

このexampleはSTM提供のHAL/LL libraryを使っている.同libraryのdocumentはここにある.わたしにはちょいとレベルが高くてこれを読めば万全だとまでは言えない.STM32F2xx向けdocumentとSTM32F4xx向けdocumentは別である.

-----
以下では、STM32CubeMXにUSB Audio Classのcodeを吐かせる手順を示す.

↓新しいprojectをつくる.

↓ここではNUCLEO-F207を使う.

↓project nameはご自由におつけください.

↓デフォでUSB_OTG_FSがdevice onlyになっていると思う.Activate SOF、Activate VBUSは現段階ではどっちでもいい.

↓Middlewareを開いてUSB Audio Classを組み込む.これをやらないと先へ進まない.
↓デフォのsampling周波数=22100Hzというイミフな値になっているが、気味が悪いので22050Hzに直しとく(44.1kHzの半分の意味).後に44100Hzにもしてみたが、audio streamが出ないトラブルは治らなかったんだけどね.

↓以上の操作でもってSTM32F207のperipheralはこんな状況になっているはずだ.ETHは消してよいがデフォのまま残してある.DMAは何もアサインされていない.DACやI2Sが無いのであるからaudio streamを外部出力していないと考えられる.

↓コンパイルして焼いてwindows10マシンにUSBに接続すると、ほれこのとおり、win10が「STM32 Audio Class」として認識してくれる.

↓win10のドライバ状況.

win10がUSB audio class deviceとして認識してくれたところまででSTM32CubeMX USB Audio Class exampleはおしまいのようだ.

今後はこれをベースにごにょごにょしてゆきまーす.

かしこ


0 件のコメント:

コメントを投稿