Bluetooth Low Energyのフレームフォーマットの基本(★)

 フレームフォーマットは下記のようになっています。大きく、アドバータイズチャネル(37, 38, 39ch)で利用するAdvertising PDUと、データチャネル(0-36ch)で利用するData PDUにわかれます。
 Preambleは、ビット表記で’10101010’か’01010101’です。これは、受信側でビット単位のタイミングを取るためです。
 Access Addressは、アドバータイズチャネルの場合は、ビット表記で’10001110100010011011111011010110′(0x8E89BED6)です。これは、受信側で待っているパケットの判別に使うためと、さらに、受信側でバイト単位のタイミングを取るために使われます。なぜ、この数値かと言いますと、この数値は自己相関性(自分自身をビットシフトすると相関が悪くなる特性)が高いのです。
 無線通信では、普通にしているとノイズとほしい信号の区別がつきません。そこで、フレームの最初にこのような系列を入れておきます。受信側ではずーっとデータを受信しておいて、この系列とピッタリあったときだけ相関が高くなるので、自分がほしいフレームだとわかるのです。
 また、データチャネルのAccess Addressは、接続時に相手から通知されます(半導体ベンダーしだいですが、通常、これも自己相関が高くなるようなものが選ばれます。0や1が6個連続するなとか、いろいろ制約があります。)。Access Addressは、自分用のパケットかを判断する唯一の識別子ですので、非常に重要です。
ble_packet

Advertising PDUは主に下記の用途に使われます。

  • アドバータイズ(デバイス情報を報知)
  • スキャン要求(デバイス情報を要求)
  • スキャン応答(デバイス情報の応答)
  • 接続要求

Data PDUは、接続後にやりとりする情報を含んでいます。主に下記の用途に使われます。なお、Ver4.2からData PDUの最大サイズが27Byteから251Byteになりました。

  • アプリケーションデータの通信
  • 切断通知
  • 暗号化要求、応答
  • 接続パラメータの交換