9

当社は、Bluetooth BLE を備えたハードウェア ユニットを開発しており、Nexus 7 (2013) にファームウェア ファイルをユニットに送信するサービス アプリがあります。ファイルは最大 500kb まで可能です。

BT チップは Texas Instruments CC2540 です。

Android デバイスから CC2540 へのデータ転送を高速化する方法について、大量のページを調べ、スタック オーバーフローをスキャンしましたが、本当に良い例は見つかりませんでした。

Nordic Semiconductors のホームページで、Android ユニットの最大スループットを計算する方法の例を見つけました: ( https://devzone.nordicsemi.com/index.php/how-do-i-calculate-throughput-for-a-ble -リンク)

Nexus 4 with nRF51822: 4 * 20 B * 1/0.0075 s = 10.6 kB/s = 84 kbps

Android ユニットは接続間隔ごとに 20 バイトの 4 つのパケットを送信でき、Android は 7.5ms の接続間隔を処理できると述べています。

私たちのアプリでは、現在 writeCharateristics でデータ送信しており、データの次のチャンクを送信する前にonWriteCharateristicsコールバックを待ちます。ただし、コールバックが呼び出されるまでに約 2 秒かかるため (!!)、その送信速度は非常に遅いです。これにより、データ転送速度は 10 バイト/秒になり、上記の計算例の 10.6kb/秒とはかけ離れています。

2 つの iOS デバイス間で 50kb のデータを転送しようとしました (iOS 用の KeyFob デモの修正版を使用)。転送速度は 3.4kb/s でした。しかし、それはCBPeripheralManager UpdateValueを使用していました。これは、ペリフェラルからセントラルに通知を送信する方法であると理解しています。

私が読んだことは、Androidデバイスを周辺機器として機能させる方法が今のところありません. これは、CC2540 が Nexus 7 に通知を送信できないということですか? また、通知を通じてデータを送信するためにスループットを最大化する唯一の方法はありますか?

すべてを遅くするのは TI デバイスのスタックですか、それとも Nexus と CC ユニット間のデータ転送を高速化するためにパラメータを変更する方法はありますか?

Nexus 7 デバイスに GATT サーバーを実装し、そこからの通知を CC2540 にサブスクライブさせるというアイデアがありました。それは可能ですか?つまり、Nexus は最初に CC2540 をスキャンし、サービスが見つかったら接続する必要があります。接続が確立されると、CC2540 は Nexus 7 からの通知のサブスクライブを開始します。その後、Nexus から CC2540 に高い転送速度で通知を送信します。

うまくいけば、他の誰かが私たちがやろうとしているのと同じことをやろうとしているのです!

4

1 に答える 1

0

数ヶ月前、私は CC2540 を使用するプロジェクトに取り組みましたが、残念ながらそのプロジェクトは別のアプリケーション分野に関するものでした。

とにかく、消費電力が以前よりも大きくなったとしても、スループットを向上させるために、 Connection_IntervalSlave_Latencyなどの接続パラメーターを設定できることを覚えています。おそらくあなたはすでにそれをやろうとしましたが、これが良い結果を得るための唯一の方法だと思います.

于 2014-05-28T17:47:52.140 に答える