BLEパケットの構造と伝送速度

http://blog.csdn.net/mov2012/article/details/16368441


Bluetooth 4.0 BLEの部分合意によると:

BLEの物理層の伝送速度は1Mbpsです。これに加えて、データ伝送速度はパケットサイズとCPU処理時間に関係しています。

パッケージ構造:

1.全体的な構造:

プリアンブル(1バイト)+アクセスアドレス(4バイト)+ PDU + CRC(3バイト)

前文= 10101010または01010101

アクセスアドレス= 0x8e89bedd6

2.放送パッケージ

PDU =ヘッダー(2バイト)+ペイロード(最大37バイト)

ヘッダー:  1)0000-接続された無向広告イベント接続可能な無向広告イベント

   2)0001-接続されたダイレクト広告イベントをダイレクト広告イベントに接続できます

   3)0010-接続されていない無向広告イベント

4 )00 1 1 - スキャン要求フォームスキャナに対応スキャン要求の応答

     5)0101-イニシエーターによる接続要求

6)0 110は、指向広告イベントができ-connected非見つける向け広告イベントを

  • 無向広告パケット
ペイロード= AdvA(6バイト)+ AdvData(最大31バイト); 

// AdvAには、TxAdd = 1の場合は広告主のパブリックアドレス、TxAdd = 0の場合はランダムアドレスが含まれます。 
// AdvData広告データ;
  • ダイレクト広告パケット
ペイロード= AdvA(6バイト)+ InitA(6バイト); 
// AdvAには、TxAdd = 1の場合は広告主のパブリックアドレス、TxAdd = 0の場合はランダムアドレスが含まれます。 
// InitAには、RxAdd = 1の場合はイニシエーターのアドレスが含まれ、RxAdd = 0の場合はランダムアドレスが含まれます。

3.スキャン要求とスキャン応答

PDU =ヘッダー(2バイト)+ペイロード(最大37バイト)

ヘッダー:  1)0011-広告主からの詳細情報のスキャンリクエスト

   2)0100-スキャナーからのスキャン要求への応答

  • スキャンリクエスト
ペイロード= ScanA(6バイト)+ AdvA(6バイト);
// ScanAには、TxAdd = 1の場合はスキャナーのパブリックアドレスが含まれ、TxAdd = 0の場合はランダムアドレスが含まれます。 
// AdvAには、TxAdd = 1の場合は広告主のパブリックアドレス、TxAdd = 0の場合はランダムアドレスが含まれます。 
  • スキャン応答
ペイロード= AdvA(6バイト)+ ScanRspData(0〜31バイト);
//広告主のホストからのScanRspDataデータ。 
// AdvAには、TxAdd = 1の場合は広告主のパブリックアドレス、TxAdd = 0の場合はランダムアドレスが含まれます。 

3.接続要求

PDU =ヘッダー(2バイト)+ペイロード(34バイト)

ヘッダー:0101-イニシエーターによる接続要求

ペイロード = InitA(6バイト)+ AdvA(6バイト)+ LLData(22バイト)

LLDataには接続情報が含まれており、詳細な構造はBluetooth4.0プロトコルを参照しています。

4.LLデータチャネルと制御パッケージ

PDU =ヘッダー(2バイト)+ペイロード(最大27バイト)

ヘッダー:詳細な手順については、Bluetooth4.0プロトコルを参照してください。

  • LLデータチャネル

ペイロード= 0〜27バイト

  • LL制御パッケージ
ペイロード= 1〜23バイト

Bluetoothデバイスの接続のみを考慮する場合は、データ転送速度を評価します

  • 更新包TTL度:プリアンブル(1バイト)+アクセスアドレス(4バイト)+ PDU(29バイト)+ CRC(3バイト)= 41バイト
  • RFPHY伝送速度1Mbps
次に、27バイトの有効なペイロードを送信するのに時間がかかります:41 * 8/1 = 328 us

一个27字节的传输周期 :328 + 150 + 80 + 150 = 708 us,若能持续传输,即传输速度:38KB/s,这样显然功耗不会低,也不符合BLE协议规范,真正的传输速度受连接事件间隔和间隔内能传输数据包数目相关。

如果连接时间间隔设置到7.5ms(协议规定最小值),一个连接事件传输3个包,则传输速率大约是10.8kB/s,一个连接事件能传输几个包与连接设备密切相关,看到很多CC2540实测数据,时间间隔7.5ms和一个传输时间3个包以上很多都达不到,51内核是其重要原因之一,在 http://processors.wiki.ti.com/index.php/CC2540_Data_Throughput有5.9KB/s,也有在论坛看到有40ms间隔,2个包,即1.4KB/s成功的案例,以后有时间我再实测下速度。


おすすめ

転載: blog.csdn.net/lilifang_2011/article/details/72897747