MCU → Linux
40 MHz · 10分 · 1.80 GB
観測エラー 0実機測定レポート 2026.09.12
STM32U585とQRB2210の間で、クロック・DMA・転送サイズを変えて測定。標準構成の制約を越え、片方向で実効24 Mbpsに到達した。
MCU → Linux
40 MHz · 10分 · 1.80 GB
観測エラー 0全二重 / 各方向
約21.33 MHz · 10分 · 各1.15 GB
観測エラー 0Linux → MCU
約21.33 MHz · 90秒 · 172.59 MB
観測エラー 0速度はヘッダーを除いた検証済みpayload。全二重は同時に流した両方向それぞれの値。クロックはレジスタから算出し、電気波形は未測定。

左は異なる構成の短時間探索。中央は要求22 MHz(算出約21.33 MHz)で各サイズ約8秒。右は10分間の連続検証。すべての条件を同じ時間測定したものではありません。
標準Zephyr同期API版は512 B・2 MHzで0.655 Mbps/方向。4 MHzでは17フレームすべてが破損しました。同じ512 B・4 MHzでもDMA版は10秒間、エラー0で転送できました。
DMA化に加え、転送の準備が整ってからREADYを通知する同期方式も変更しています。
全二重のサイズ探索では、64 Bで約0.075 Mbps、4 KBで5.93 Mbps、32 KBで12.70 Mbps、65,532 Bで14.87 Mbps/方向。大きな転送は効率が上がる一方、RAMと1フレーム分の待ち時間が増えます。
32 KB・要求22 MHzでは、MCUのソフトCRCで11.55 Mbps、ハードウェアCRCで12.48 Mbps、さらにLinuxを32ビット転送ワードにして13.31 Mbps/方向になりました。いずれも短時間の比較です。
40 MHzの片方向試験でSPI呼び出しは平均20.27 ms。隙間なくクロックを出した場合の13.11 msより長く、READY待ちは10分間で合計0.56秒でした。Linux側のDMA利用も確認済み。CS操作やドライバ内の待ち時間が次の調査候補です。
MCU→Linuxの最大連続実効速度は24.00 Mbps。全二重40 MHzを達成したという結果ではありません。MOSI経路のレベル変換IC TXS0101の1.8/3.3 V条件は22 Mbpsのため、MOSIにデータを流す試験は要求22 MHzまでとしました。
成功だけでなく、初期化失敗や意図的な異常注入も含みます。連続検証と短時間探索を区別して比較してください。
| 試験 / 状態 | 方向 | 要求 MHz | 算出 MHz | フレーム B | MCU → Linux | Linux → MCU | 秒 | CRC / ACK / MCU異常 | Timeout / I/O | CPU % |
|---|
「—」は未計測または該当方向にbulkデータを流していない項目。算出クロックが0または欠落する初期データを、実クロック0 MHzとは扱っていません。

送信データを意図的に1ビット壊した試験では、MCUが異常1件、LinuxがACK不一致1件を検出して異常終了しました。CRC32はすべての誤りを必ず検出するものではなく、「エラー0」は今回の時間・データ量で異常を観測しなかったことを表します。
STM32U585をSlave、QRB2210/LinuxをMasterとした内部SPI3、Mode 0。STM32はZephyr / Arduino、LinuxはネイティブCとspidev。DMA版はGPDMAチャネル6/7を使用しました。MIC・LCD・音声・STT処理は含めていません。
固定seedの疑似乱数payloadをRAMに用意し、32 BのヘッダーでCRCと連番等を検証。初回フレームと最後の未ACKフレームを適切に除外した検証済みpayloadを速度としています。最大フレームは65,532 B、payloadは65,500 Bです。
40 MHzはMOSIを一定にしたMCU→Linux専用モードの観測値です。VDDIO2補償は有効ですが、HSLVは既存オプションバイトにより無効のまま。データシートの全条件を満たす保証試験ではありません。
1台・USB接続中での結果です。電源条件の比較、物理的な電源再投入、温度掃引、複数台、UART/RPCや他の周辺機器との同時負荷は未検証。全クロック×全サイズの総当たりでも、絶対的な性能限界の証明でもありません。
MCU全体のCPU率は未計測。LinuxプロセスCPU率は片方向40 MHzの10分試験で9.656%、全二重の10分試験で6.613%(1コア=100%)。別途、全二重試験内180秒のLinux全体を観測し、全コア合計のbusy率は約2.89%でした。後者にはSPI以外の処理も含まれます。
最大フレームのTX/RXバッファは合計131,064 B。スケッチ用RAM枠262,144 Bに対するグローバル領域は162,000 B。bulk転送の開発開始候補は16 MHz・65,532 B・DMAで、30秒の実測は各方向12.50 Mbps。量産認定値ではなく、低遅延が必要ならブロックを減らす選択になります。
分周レジスタとクロック源レートから算出しています。要求22 MHzは約21.333 MHz、要求36/38 MHzは約33.333 MHz、要求40 MHzは40 MHz。オシロスコープによる波形測定はしておらず、元データのactual_wire_hzはnullのままです。
CSV、未加工の測定結果、コード・プロトコル・実行手順をまとめて確認できます。
実験用ファームウェアには、すべての切断や異常からの自動復旧、他用途とのDMA資源共有は実装していません。