2024年4月8日月曜日

BlackpillというSTM32 board(2)(USB2.0で1Mbps)

中華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
となっています.

なんかいまいち.

1へ    3へ

かしこ

13 件のコメント:

  1. USB1.0の速度になっているとか?
    スキャナーのスキャン速度遅いでよくあったです

    返信削除
    返信
    1. USB1だったらさらに遅いんでしょうなぁ

      削除
  2. 工学院のれぽーとが完成しません
    れぽーと再提出だなあ
    実験の単位取れず留年ですね

    返信削除
    返信
    1. つぎはADCを動かします

      削除
    2. こちらの匿名さんは、学生さんなんですね。
      匿名だと、誰が誰やらワケワカメ。

      削除
    3. Google Account 取れば、自動的に「コテハン」に成れます。別に「ちゃんとブログ書く」必要も無いし。
      ※わたしも、最初は一々入力してたのですが、段々面倒になって来たのでそうしてます。

      削除
    4. おはようございます
      わたしは言うまでも無く自動的にこてはんです
      匿名にもできますが

      削除
  3. >Blackpill
    STM系の基板には、「BluePill」「BlackPill」の、2種類があって、この、
    ・BlackPill
    って、「高性能な方」だと思ってたんですが、それでも「この程度」だったんですかね?
    ※Blue/Black Pill 基板は、世界中に「鬼のようにコピー」が出回ってるので、たまたま、
    ・ハズレを掴んだ
    だけかもしれませんが・・・

    返信削除
    返信
    1. もしかしてBluepillはSTM32F103なんですかね?
      BlackpillはSTM32F401です.
      たしか性能は401>103だったかな.

      削除
    2. そうそう、そうです。
      ※「パチモン基板」だと、ちゃんと性能出てるか分かりませんが・・・

      削除
    3. コピーが出回らないようにSTMは安い定価で出していたらしい
      秋月1000円くらい いまは、安くないですね 店頭で見ない

      削除
    4. STM32の中華セカンドソースってあるんですよね.お値段は少し安いです.半額までは行かないので買ってみたことはないです.

      削除