蓝牙协议栈基础学习笔记

  1. 蓝牙是近距离、低功耗的无线通讯标准,支持设备短距离通信(10m左右)。
  2. 采用分散式网络结构以及快跳频和短包技术,支持一对一或一对多通信,在2.4GHz频段工作,速率一般为1Mbps(蓝牙5.0可达2Mbps)
  3. 蓝牙协议栈的结构主要有两部分组成:控制器和主机。
    蓝牙协议栈基础学习笔记_第1张图片
    总结各层作用:
    (1)物理层(PHY):规定了BLE通信的基础射频参数,包括信号频率、调制方式等,使用1Mbps(蓝牙5.0还支持2Mbps)自适应跳频的GFSK射频,工作在2.4GHz频段(2400MHz~2480MHz)。
    (2)链路层(Link Layer):用于控制设备的射频状态,设备处于以下5中状态之一:
        等待、广告、扫描、初始化、连接
    注意:
      · 广播设备不需要建立连接就可以发送数据;
      · 扫描设备收听广播设备发出的数据;
      · 发起连接的设备通过发送连接请求来回应广播设备
    (3)主机控制接口层(HCI):为主机和控制器之间提供标准通信接口。这一层可以是软件API或者硬件接口,如UART、SPI、USB。
    (4)逻辑链路控制及自适应协议层(L2CAP):为上层提供数据封装服务,允许逻辑上的点对点数据通信。
    (5)安全管理层(SM):定义了配对和密钥分配方式,并为协议其它层与另一个设备之间的安全连接和数据交换提供服务。
    (6)属性协议层(ATT):允许设备向另一个设备展示一块特定的数据,称之为“属性”,实现两个连接设备之间的数据交互。在ATT环境中,展示“属性”的设备称为服务器,与之配对的设备称为客户端,链路层状态(GAP角色主机和从机)与设备的GATT角色是相互独立的。
    (7)通用访问配置文件(GAP):规定了设备的角色,负责设备的访问模式和进程,包括设备发现、建立连接、终止连接、初始化安全特性和设备配置。设备总是作为下面四种角色之一:
      · 广播者:不可连接的广告设备;
      · 观测者(扫描):扫描广播,但不建立连接;
      · 外部设备:可连接的广告设备,可以在单个链路层连接中作为从机;
      · 集中器:扫描广告设备并发起连接,在单个链路层或多链路层作为主机。
    (8)通用属性配置文件层(GATT):定义了使用ATT的服务框架,GATT规定了配置文件(Profile)的结构。
  4. BLE软件平台支持两种不同的应用开发配置:
      (1)单一设备
      (2)网络处理器
      它们的异同是:单一设备是将 控制器、主机、配置文件(Profiles)和应用程序在一片芯片上实现。而网络处理器是将控制器和主机部分在一块芯片上执行,应用程序和Profiles在另一个设备(或者说处理器 )上执行,应用程序和Profiles通过厂商特定的HCI命令与蓝牙芯片通信,这一过程需要使用UART接口。
  5. 设备发现过程
      在典型的蓝牙低功耗系统中,外部设备广告特定的数据,来使集中器知道它是一个可以连接的设备。集中器收到广告数据后,向外部设备发送扫描请求,然后外部设备将特定的数据回应给集中器,这过程称作扫描响应。集中器收到扫描响应Packet后,便能知道这是一个可以建立连接的外设,这就是设备的发现过程。
  6. 设备连接
      发现了设备之后,集中器可以选择发起建立连接请求。连接请求包含一些连接参数:
    (1)连接间隔:在两个BLE设备的连接中使用跳频机制,两个设备使用特定的信道收发数据,然后过一段时间后再使用新的信道(链路层处理信道切换),即使没有应用程序的收发,两个设备仍通过交换链路层数据来维持连接,即发空包。连接间隔就是连续两次交换数据的时间差,以1.25ms为单位,取值范围在 7.5ms~4s。
    (2)从机延迟:这个参数用来使外部设备过滤掉前面若干交换数据,一般用于休眠唤醒。
    (3)管理超时:两次数据交互的最大允许时间间隔,超过了就回到未连接状态。
      外设可以通过向集中器发送“连接参数更新请求”改变连接设置,这个请求由协议栈的L2CAP层处理。这个请求包含4个参数:最小连接间隔、最大连接间隔、从机延迟、超时。当集中器收到请求后可以选择接受或者拒绝这些新的参数。
      连接可以被主机或从机以任何原因自动终止。当一方发起终止连接时,另一方必须响应。
  7. 安全通信
      蓝牙连接成功后,如果属性没有设置成认证读写,是可以被任何设备读写的,并且在空中传输的是明文;如果属性设置成加密认证读写,需要先进行配对,配对成功后成安全连接,此时在空中传输的数据是密文的。BLE的安全机制中有一项特性允许两个设备之间建立长期的安全密钥信息,称为Bond(绑定)。它允许两个设备重新连接时快速地完成加密认证,而不需要每次连接时执行配对的完整过程。
  8. 数据通信
      两个设备应用数据的通信是通过协议栈的GATT层实现。从GATT角度来看,当两个设备建立连接后,它们处于下面两种角色之一:
    (1)GATT服务器——提供数据服务
    (2)GATT客户端——从服务器读写应用数据

你可能感兴趣的:(笔记,学习,Bluetooth)