前回nRF52840 と Android端末間で、Nordic UARTの基本的な送受信を行いました。次にどのくらい実際に通信量を流せるか試します。Bluetooth5での公称通信速度は 2Mbps です。実際にそんなに出るわけありません。昔々、有線TCP/IPでも実効転送速度は一割でシステム設計するよう叩き込まれたものです。
実行環境
BTマスターハードウェア | nRF52840-DK |
BTマスターVersion | 5.4 |
BTマスターIDE | SEGGER5.6 (デバッガ有効) |
BTスレーブ | モトローラG32, 2.4Gz x 4 coe |
BTスレーブVersion | 5.2 |
BTスレーブIDE | AndroidSdtio 4.0 (デバッガ有効) |
IDE用PC | Windows10, Core i7 3.8GHz x 8 coe |
実行条件
通信方向 | マスタ → スレーブ |
通信周期 | 3 sec |
1セットの通信量 | 2,000 byte |
通信1セットのパケット分割数 | 8回 |
パケットサイズ | 244 |
パケット間隔 | スレーブ内で BLE_NUS_EVT_TX_RDY:次送信許可 イベント発生後、即時。 |
シーケンス全体:

パケット間シーケンス:

評価方法
スレーブ側で以下の計算を行い秒辺りの送信バイト数を画面表示する。
( 通信1セットの終了開始時刻(sec) - 通信1セットの受信開始時刻(sec) ) ÷ 通信1セットの受信Byte数
結果

2MBpsで、1byte=10bit仮定し、200kbyte/秒すると、性能の1%しか達成していない。
少し予想はしていましたが、なぜこのような結果となるのでしょう? 引続き調査をしていきます。