中華STM32基板のBlackpillを味見しています.初体験はこちら.
USB転送レートがどのくらい出るかを知りたい.
BlackpillのCPUはSTM32F401CCです.
このCPUにはUSB2.0が載っているのですが、HIGH SPEED(480Mbps)は出ません.FULL SPEED(12Mbps)です.12Mはいまいち遅いのだけど、USBのいろいろなoverheadのせいで12Mは望むべくも無く、実力はもっと遅いはずです.それを確かめたい.
BlackpillをUSB deviceで動かします.
ArduinoIDEで開発したかったけれど、USB libraryが見つからなかったので断念しました.STM32CubeIDEで開発しました.
STM32CubeIDEは、雛形sourceとして、USB COM classを吐き出してくれます.(virtual COM port/Communications Device Classなど呼び名はいろいろ)
Blackpillのclockは最速(84MHz)に設定します.
USB接続する相手はPCです.corei7の4000番台なので古いマシンです.
PCのアプリはTeratermです.Teratermで受信したdata量とtimeで転送レートを求めます.
USB COMではなくバルク転送でレート測定したらもっと高速なのかもしれませんが、今回はバルク転送はやってませーん.
ーーーー
STM32CubeIDEが吐き出すUSB COM classの雛形をどのように動かすのか?
STM32からの送信はこの関数に尽きます.これを呼び出せば送信します.
CDC_Transmit_FS( buf, num );
DMAはありません.
callしてもbusyだったら無視されるみたいです.つまりブロックされます.
CDC_Transmit_FS()の送信サイズは1024bytesにしました.packet分割は自動でやってくれます.USB FULL SPEEDでは64bytes/packetです.
1mSec タイマー割り込みでCDC_Transmit_FS()をcallします.1ms毎にcallしたって過剰ですからbusyで無視されます.ゆえに、むりくり最高速度を叩き出している様になります.
ーーーー
以上の仕掛けで得られた転送レートは、、、1Mbpsでした.これは反吐が出るほど遅い(笑)
12Mが1Mに落ちるなよ.
STM32帰責でない事は確認できてます.まさかPCってことも無いだろうし.ゆえに律速はUSBでしょう.
ちなみに別件で試したHIGH SPEEDでは理論480Mbpsに対し実効120Mbpsぐらい出せたことがあります.
つまりFULL SPEEDはover headが大きいわけですが、packet sizeが原因じゃないかな?
FULL SPEED 64bytes/packet
HIGH SPEED 1024bytes/packet
となっています.
なんかいまいち.
かしこ
USB1.0の速度になっているとか?
返信削除スキャナーのスキャン速度遅いでよくあったです
USB1だったらさらに遅いんでしょうなぁ
削除工学院のれぽーとが完成しません
返信削除れぽーと再提出だなあ
実験の単位取れず留年ですね
つぎはADCを動かします
削除こちらの匿名さんは、学生さんなんですね。
削除匿名だと、誰が誰やらワケワカメ。
コテハン推奨
削除Google Account 取れば、自動的に「コテハン」に成れます。別に「ちゃんとブログ書く」必要も無いし。
削除※わたしも、最初は一々入力してたのですが、段々面倒になって来たのでそうしてます。
おはようございます
削除わたしは言うまでも無く自動的にこてはんです
匿名にもできますが
>Blackpill
返信削除STM系の基板には、「BluePill」「BlackPill」の、2種類があって、この、
・BlackPill
って、「高性能な方」だと思ってたんですが、それでも「この程度」だったんですかね?
※Blue/Black Pill 基板は、世界中に「鬼のようにコピー」が出回ってるので、たまたま、
・ハズレを掴んだ
だけかもしれませんが・・・
もしかしてBluepillはSTM32F103なんですかね?
削除BlackpillはSTM32F401です.
たしか性能は401>103だったかな.
そうそう、そうです。
削除※「パチモン基板」だと、ちゃんと性能出てるか分かりませんが・・・
コピーが出回らないようにSTMは安い定価で出していたらしい
削除秋月1000円くらい いまは、安くないですね 店頭で見ない
STM32の中華セカンドソースってあるんですよね.お値段は少し安いです.半額までは行かないので買ってみたことはないです.
削除