2020年4月23日木曜日

STM32でDCCを作る方向で (4) HSはPhyが外付けになります

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

ーーーー
STM32のIDEは使いやすくていい感じかもしれない.pripheralの知識をロクすっぽ知らなくても、レジスタ表と首っ引きでcodingしなくても、なんとなく動かせてしまうようになっている.組み込みマイコンのprogrammingでそれはとても有難い.

なのであるが、STM32 CPU本体と、開発ボードであるところのNUCLEOには「あっそうなんですか、そうですかそうですか、とほほのほ」と愚痴の一つや二つも言いたくなるようなところがあるんだ.

それはDCCに必須のUSBに関する失望である.

USBには低速~高速まである
  USB1.0    1.5Mbps
  USB1.0    12Mbps    のろくてだめ
  USB2.0    480Mbps     DCCに適する
  USB3.0    3Gbpsぐらい     そんなには不要
なのでUSB2.0の性能をSTM32に求める.

STM32のラインナップを読んで、480Mbpsを出せるSTM32を探すと、STM32F2xx、STM32F7xx、STM32H7xx といったところ.F7xxとH7xxは高機能でパッケージも最低でも256pinとかでお値段もそれなりに高価である.自動的にF2xxを使おうということになる.(訂正:STM32F4xxにも480Mbpsがある)
それで、STM32F207が載ったNUCLEOをtargetにして、STM32CubeMXでUSBのprogrammingを始めようとしたのさ.

ところが、STM32CubeMXがどういうわけか、USB 480Mbps(HS)をセレクトできないのである.選択肢が12Mbps(FS)に固定されているのだ.なんでだろ? (480MbpsをHigh Speed(HS)、12MbpsをFull Speed(FS)とUSB規格では呼ぶ)

おかしいなぁと思いつつ、単独のSTM32F207をtargetにしてSYM32CubeMXを動かすと、HSの選択肢が出てくる.

これの原因がわかった.
 ・NUCLEOでHSはプリント基板的に非対応なのでHSを選択不能
 ・CPU 単品でなら、HSへの対応が可能
ということなのだが、これには悲しい事情がある.
STM32はHighEnd CPUに至るまで全てにおいて、
HSで動かしたければPhyは外付けなんだよ
おいおいおい、STMさん落胆させてくれるじゃないか....

EZ-USBなんかあんなチープなICなのにPhyは内蔵されてるよ.
♪またひとつ、EZ-USBが偉く思えてきた~♪
(ちなみに、CypressはInfineonに身売りしました)

ここでPhyとは何かを解説する.わたしは「ファイ」と読むけどあってるのかな?
バスを流れる信号は通常のdigital信号ではなく、高周波アナログ差動伝送信号である.そのdigi-ana変換をする専用ICをPhyと呼ぶのだ.小さなICだ.

USB HS PhyぐらいSTM32なら内蔵していると思ってたんだけどな.

だって、競合製品のNXPのLPC5500にはPhyが内蔵されているんだよ.
♪またひとつ、NXPが偉く思えてきた~♪

仕方がないのでPhyにはMicro Chip社のUSB3300を使うつもりだけど、部品が増えるのってめんどくさいんだよね.データを8本も配線しなくちゃいけないしさ.

結論は、、、NUCLEOでSTM32F207のHSを選択できない理由はPhyがNUCLEOには搭載されていないため、target=NUCLEOにした時点でHSが選択できなくなっているのであった.

かしこ


0 件のコメント:

コメントを投稿