ソニーにいた頃、LSI設計チームの人々がAHBだのAPBだのバスアービタだのとごちょごちょとやっていたけれど、system回路設計者じゃなくて信号処理回路者だったわたしにはAHBなんかご縁が無かった.
STM32をいじるとなると、ARM CPUなのでどうしてもAHBやAPBが絡んでくる.疎いんだよねぇ、そっち方面については.
AXIというバス規格も名前ぐらいは知っていた.XILINXによるローカルなバス規格なのかと思っていたのだけどそうじゃなく、AXIもARMのバス規格なんだね.知らないのよ、そっち方面については.
まぁ使えりゃなんでもいいや...
【sample code】
STM32 DCCの開発に役立つsample codeがあると便利だ.
探してみたら、USB audio class 2.0のsampleがあることがわかった.
うまうまとDLしてみて、う~んと唸ってしまった.
targetが、STM32446E-EVAL と 32F769IDISCOVERY なのである.STM32F769はあまりにもHighEnd過ぎて最初から相手にする気が無い.STM32F466ならアリかもしれない.
本当はお値段が安いSTM32F205をtargetにしたいんだけどな.F466は少しお値段が高い.中華通販で、F205は最安¥257、F466は最安¥500 ぐらい.両者にはCPUがCoretex-M3とM4の違いがある.
リンク先のsampleには、F4xx系CPUとF7xx系CPU専用のUSB libraryが入っているのだけれど、それらはF2xx系CPUには対応していない.
かすかな希望を抱きつつ、F2xx系とF4xx系のUSB registerをdatasheetで比較してみる.ベース設計は同じはずなので似てはいるが、半分同じ、半分違うといった具合.F4xx系libraryをF2xxに流用するのはあきらめるしかなさそうだ.
targetをSTM32F446に変更しようかと悩む.
【出力、DMA】
PCM streamをSTM32から外部へ出力する必要がある.いちいちCPUで出力する気はないのでDMAを使う.
最も簡単な経路は、USB FIFO → DMA → 8bitのGPIO なのだが、GPIOはDMAのdestinationに出来ないんだ.がっかり.
何か別のperipheralで外部出力しなくちゃいけない.候補はI2S,I2C,SPI,SAI などがある.これらならDMAのdestinationにできる.
I2Sを使えばいいじゃんと思うだろうが、STM32のI2Sには問題がある.32bit192kHzまでしか対応しないのだ.32bit384kHzじゃないと嫌なのでI2Sはダメ.
I2Cは1Mbpsぐらいしか出ないので問題外.32bit384kだと25Mbpsぐらい必要.
QUAD-SPIはclock最大90MHzという数値がdatasheetにある.これは速いので使えそう.でもaddressを出力されるとかえってめんどくさいので嫌かも.
SAIはSerial Audio Interfaceの略である.外部クロックも使えるみたいだ.問題は外部から25MHzのclockをぶっここめるのかどうかであるが、それはダメっぽい.
帯に短し襷に長しである.
32bit384kHzを円満に出力できるかどうかを実機で確かめる必要がありそうだ.
かしこ
0 件のコメント:
コメントを投稿