[STIoT] [Bài 01 (Part 2)] Tổng quan về BLE protocol stack

Ngô Văn Tuân

Gà con
Staff member
2. Link layer:
Là một hệ thống hard real-time duy nhất của cả stack do phải đáp ứng các yêu cầu về thời gian của chuẩn giao tiếp được quy định trong specification. Do đó thường được tách biệt với các lớp trên thông qua HCI (Host Controller Interface).
Ở trong lớp này sẽ xuất hiện một số khái niệm sau:
  • Vai trò của một thiết bị trong kết nối BLE: Advertiser and Scanner, Master and Slave​
  • Bluetooth device address: public device address, Random device address.​
  • Advertising: Connectable, Non-Connectable, Scannable, Non-Scannable, Directed, Undirected Advertising.​
  • Scanning: passive scanning, active scanning.​
  • Connection: Connection interval, Slave latency, Connection supervision timeout.​
Khi hai thiết bị chưa kết nối với nhau, ta có khái niệm Advertiser - Scanner:
  • Advertiser: thiết bị gửi advertising packet.​
  • Scanner: thiết bị scan advertising packet.​

Sanner - Advertiser
Khi hai thiết bị đã kết nối với nhau, ta có khái niệm Master - Slave:
  • Master: thiết bị khởi tạo và quản lý kết nối.​
  • Slave: Thiết bị chấp nhận kết nối và tuân theo master’s timing.​

Master - Slave
Để có thể phân biết được thiết bị các thiết bị với nhau thì ta có khái niệm Bluetooth device address:
  • Public device address: Địa chỉ này được ghi sẵn ở trong chip trước khi bán (coder không thể thay đổi được), phải được đăng ký với IEEE Registration Authority và sẽ không bao giờ thay đổi trong suốt quá trình tồn tại của thiết bị.
  • Random device address: Địa chỉ này có thể được thay đổi bằng các nạp lại chương trình hay được khởi tạo trong quá trình vận hành của thiết bị. Địa chỉ này thường được sử dụng nhiều trong các ứng dụng thực tế.
  • Random device address còn được phân ra thành Static AddressPrivate Address. Trong Priavte Address lại có Non-ResolvableResolvable Private Address.


BLE Address Type
Trong Advertising packet (packet thông báo với thế giới rằng có một em BLE đang ở đây) của Link Layer có chứa một số thông tin sau:
  • Connectable: Scanner có thể khởi tạo kết nối với thiết bị advertise loại packet này.
  • Non-Connectable: Scanner không thể khởi tạo kết nối với thiết bị advertise loại packet này.
  • Scannable: Scanner có thể gửi scan request cho thiết bị advertise loại packet này.
  • Non-Scannable: Scanner không thể gửi scan request cho thiết bị advertise loại packet này.
  • Directed: Payload chỉ có advertiser’s and scanner’s address, không chứa user data.
  • Undirected: Packet này không gửi cho scanner cụ thể nào, do đó có thể chứa user data ở payload.
Scanning:
  • Passive scanning: advertiser không biết có bất kì scanner đang nhận advertising packet của nó không.
  • Active scanning: scanner sẽ gửi Scan Request lại cho advertiser sau khi nhận được advertising packet. Advertiser nhận được Scan Request packet sẽ trả lời thông qua Scan Response packet.

Passive and Active Scanning
Connection:

BLE connection

Connection Event: Connection Event là gì? Nhìn hình sẽ hiểu, còn nếu không hiểu thì cứ nhìn lại hình, nếu vẫn còn không hiểu nữa thì tiếp tục nhìn lạ hình cho đến khi hiểu.​
Ngay cả khi không có application data cần truyền thì hai thiết bị vẫn phải trao đổi link layer packet để giữ kết nối.​
  • Connection interval: Khoảng thời gian giữa hai connection event liên tiếp.
Đợn vị (Unit): 1.25ms​
Điều kiện: 6*1.25 = 7.5 ms<= Connection interval <= 4.0s = 3200*1.25
  • Slave latency: Số lượng connection event tối đa mà slave có thể bỏ qua mà không làm mất kết nối.
Điều kiện: 0 < Slave latecy < 499
  • Effective Connection Interval: Khoảng thời gian giao tiếp hiệu quả, có ít nhất một connection event thành công trong khoảng thời gian này.
Điều kiện: ECI = (Connection Interval) * (1 + [Slave Latency]) < 16s​
Example:​
Connection Interval: 80 (100 ms)​
Slave Latency: 4​
Effective Connection Interval: (100 ms) * (1 + 4) = 500 ms​
  • Connection supervision timeout: Khoảng thời gian tối đã giữ hai lần trao đổi packet thành công (successful connection event). Quá khoảng thời gian này mà không có bất kỳ successful connection event nào thì connection sẽ bị mất.
Điều kiện: Connection supervision timeout >= Effective Connection Interval
3. Host controller interface (HCI):
Vì Link layer là một hệ thống hard real-time có nhiệm vụ điều khiển trực tiếp radio physical layer:((, do đó, trong thực tế, Linker layer thường được tách ra khỏi Host – nơi mà phần phức tạp nhưng ít timing constraints hơn (yêu cầu đáp ứng thời gian thực) của Protocol stack được implement.
HCI là một tập của các commands (gửi từ host xuống controller), events (gửi từ controller lên host) và các procedure để truyền dữ liệu qua lại giữa host và controller.​

HCI Communication Overview

Smartphone, laptop, máy tính nhúng là những ví dụ điển hình cho kiểu cấu hình: controller chạy trên module riêng biệt, host và application chạy trên main CPU, module Bluetooth kết nối với main CPU thông qua USB, SDIO hoặc UART transport layer. Model này tương tự như Wi-Fi hay Ethernet: TCP/IP stack chạy trên main CPU trong khi các lớp thấp hơn được implement trên một module riêng biệt.

HCI Stack
Cùng với sự phát triển của công nghệ bán dẫn, ngày nay, ngày càng nhiều nhà sản xuất cung cấp những sản phẩm SoC (System on Chip). Với SoC, application, host và controller cùng được implement trên cùng một chip. Đối với ứng dụng BLE, thông thường, người ta sẽ thiết kế một hệ thống bao gồm sensor kết nối với một SoC. SoC này sẽ report dữ liệu đọc được từ sensor cho một thiết bị khác thông qua BLE. Hơn nữa SoC này cũng thường có CPU thuộc loại tiết kiệm năng lượng. Ví dụ như chip nRF52832:

nRF52832 SoC​
 
Top