---
title: 'BLE 協議棧'
disqus: kyleAlien
---
BLE 協議棧
===
## OverView of Content
[TOC]
## 協議棧 - 概述
協議棧 Protocol Stack 是由軟體實現大量的規則 (也就是協議);**BLE 協議棧就是透過軟體來完成 BLE 協議的規則通訊**
### 協議棧 - 功能
* 協議棧也可以想做 **溝通的語言**,比喻描述如下
| 現實描述 | 設備 |
| - | - |
| 語言 | 協議棧 |
| 國語 | BLE 協議棧 |
| 英語 | Classic 藍芽 |
| 不會說話的嬰兒 | 沒有協議棧的設備 |
| 只會說國語 | 單模 BLE 設備 |
| 只會說英語 | 單模 Classic 設備 |
| 國、英語都會說 | 雙模設備 |
### 傳輸 - 單位、媒介
* 藍芽的傳遞 **媒介**:無線電傳播
* 藍芽的傳遞 **單位**:二進位數據,可以是 Byte、Bit
### 協議棧結構
* 下圖是 BLE 協議棧 (去除 Classic、High Speed 部分) 的結構 (藍芽文件:`CORE SYSTEM ARCHITECTURE` 可找到相同的圖)
:::success
這一層一層的傳遞、配合也是協議棧稱為用「棧 `Stack`」來描述的原因的原因
:::
> 
* 其中的箭頭是數據流向的方向,舉例來說:
1. LE 低功率藍芽 `ISOAL` 可以透過 `ISO`,流出到 `HOST` 層後直接讓使用者接收到 (這樣速度就比較快)
:::info
這個功能是 藍芽 5.2 LE Audio 新加入的部分
:::
2. Baseband Resource Manager 透過 `ACL`,流出到 `HOST` 層 `L2cap Resource Manager` 後經過 `Channel Manager`、`ATT/GATT` 才能讓使用者收到
### BLE 系統結構
* 下圖為一個經典 BLE 系統框架圖,而 **其中的 `Host`、`Controller` 就是 BLE 協議棧**
> 
:::warning
* 各家芯片廠商為了保證軟體程式寫成的協議棧的完整、規範性,**通常不會對用戶開放 Source Code**,避免用戶修改導致通訊失敗
* 通常使用 Library (`.so`) 的方式提供給用戶,並暴露 API 部分(`.h`)
:::
* BLE 協議棧分成兩個大區塊 `Host`、`Low Energy Controller`,可以在藍芽規格書中找到對應資訊 (Vol 3、Vol 6)
> 
## Appendix & FAQ
:::info
:::
###### tags: `BLE`