2024年10月31日木曜日

STM32H723 USB BULK転送したい(4)フロー制御、転送レート

STM32H723をtargetとして、STM32CubeIDEでCDC Classを生成し、これを雛形にBULK transferを行います.

前回では、1秒毎に"hirasaka"文字列のloopbackという遅い通信でした.

今回は、最高速を試してみます.(ただしFull Speed 12Mbps)

ヒラ的によくわからんところは、、、フロー制御と実効転送レートです.

フロー制御についてはこんな疑問があります.
USBの場合、USB HOSTが転送レートを決める側面があります.HOSTが「データ送れ」と言ったらDEVICEが送信する仕組みなため.
だからといってLinux HOSTが「送れ」言いまくるとSTM32が処理できなくてLinux HOSTがtimeoutしてUSB BUS hung-upなんてことになったりしないかな?

ーーーー
結論が出ました.

フロー制御は、Linux HOSTが応答待ちしているのが事実上のフロー制御になっている模様.なので事実上の放置プレイ.

転送レートは、0.73MBytes/Sec が出ました.(5.8Mbit/Sec)
USB FSの理論レートは12Mbit/secですから妥当なところでしょう.

条件:
STM32→Linuxマシンへの転送
深いところでpacket size 64に細切れにして転送してるはず
500bytesのEP1 BULK転送を1000回で500kBの転送に0.68Secかかった
8x 500kB / 0.68sec = 5.88Mbit/sec

目的を達したのでこれでこの連載はおしまいです.


かしこ

0 件のコメント:

コメントを投稿