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 件のコメント:
コメントを投稿