2020年4月29日水曜日

STM32でDCCを作る方向で (6) 仕様調査中

【バスについて】
ソニーにいた頃、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 件のコメント:

コメントを投稿