ToB企服应用市场:ToB评测及商务社交产业平台

标题: 蓝牙概述及基本架构介绍 [打印本页]

作者: 大号在练葵花宝典    时间: 2024-10-20 23:22
标题: 蓝牙概述及基本架构介绍
1. 概述

1.1 蓝牙的概念

蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包罗移动电话、PDA(掌上电脑)、无线耳机、条记本电脑、相关外设等浩繁设备之间进行无线信息互换,蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,利用IEEE802.11协议。
1.2 蓝牙的发展历程

自1994年由爱立信推出至今,蓝牙技术已经走过了20个光阴。从最初的Bluetooth V1.0,到Bluetooth V5.2,经历了近9个版本的修订后,发展为当前的状态。
“蓝牙”的形成配景:
1998 年 5 月,爱立信、诺基亚、东芝、 IBM和英特尔公司等五家闻名厂商, 在联合开展短程无线通信技术的标准化运动时提出了蓝牙技术,其宗旨是提供一种短距离、 低本钱的无线传输应用技术。
芯片霸主 Intel 公司负责半导体芯片和传输软件的开发,爱立信负责无线射频和移动电话软件的开发, IBM 和东芝负责条记本电脑接口规格的开发。
1999 年下半年,闻名的业界巨头微软、摩托罗拉、三星、朗讯与蓝牙特别小组的五家公司共同发起创建了蓝牙技术推广组织,从而在全球范围内掀起了一股“蓝牙”热潮。
全球业界即将开发一大批蓝牙技术的应用产品, 使蓝牙技术呈现出极其广阔的市场前景,并预示着 21 世纪初将迎来波澜壮阔的全球无线通信海潮。
蓝牙版本发布时间最大传输速率传输距离蓝牙1.01998723Kbps10米蓝牙1.12002810Kbps10米蓝牙1.220031Mbps10米蓝牙2.0+EDR20042.1Mbps10米蓝牙2.1+EDR20073Mbps10米蓝牙3.0+HS200924Mbps10米蓝牙4.0-4.22010/2013/201424Mbps50米蓝牙5.0-5.22016/2019/202048Mbps300米
1.3 蓝牙技术概述

蓝牙协议包罗两种技术:BR:Basic Rate和LE:Low Energy。这两种技术都包罗搜刮(discovery)管理、连接(connection)管理等机制,但它们是不能互通的。
厂商假如只实现了一种,那么只能与同样实现该技术的设备互通。
假如厂商要确保能和全部的蓝牙设备互通,那么就只能同时实现两种技术,而不去管是否真的需要。
1.3.1 Basic Rate(BR)


AMP的Alternate交替利用体如今:由于蓝牙自身的物理层和AMP技术差异太显着,BR/EDR和AMP是不能同时利用的。
简朴的说,就是:BR和EDR是可以同时存在的,但BR/EDR和AMP只能二选一。
1.3.2 Low Energy(LE)

上面所讲的BR技术的进化门路,就是传输速率的加快、加快、再加快。但能量是守恒的,你想传的更快,代价就是斲丧更多的能量。而有许多的应用场景,并不关心传输速率,反而非常关心功耗。这就是Bluetooth LE(称作蓝牙低功耗)产生的配景。
从它的英文名字上就可以看出它是一种低功耗蓝牙技术,是蓝牙技术联盟设计和贩卖的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等范畴的新兴应用。
低功耗蓝牙与经典蓝牙利用相同的2.4GHz无线电频率,因此双模设备可以共享同一个天线。低功耗蓝牙利用的调制体系更简朴。
LE技术相比BR技术,差异非常大,大概说就是两种差别的技术,凑巧都加一个“蓝牙”的前缀而已。
如今BLE主要广泛应用于IoT产品范畴。
技术规范经典蓝牙(BT)低功耗蓝牙(BLE)无线电频率2.4GHz2.4GHz距离10米最大100米发送数据所需时间100ms<3ms响应延时约100ms6ms安全性64/128-bit及用户自定义的应用层128-bit AES及用户自定义的应用层能耗100%(ref)1%-50%空中传输数据速率1-3Mb/s1Mb/s主要用途手机 游戏机 耳机 汽车 PC手机 游戏机 PC 智能穿着设备汽车 家用电子 2. 蓝牙的基本架构

2.1 芯片架构

蓝牙的核心体系,由一个Host和一个或多个Controller构成。

Bluetooth的主控制器,可能是以下几种:

根据Host与Controller的构成关系,常见的蓝牙芯片也分为以下几种:

因此,蓝牙芯片就会有以下几种架构:

2.2 协议架构

蓝牙的协议架构我们从两个视角来进行熟悉。
2.2.1 官方协议中所展示的蓝牙协议架构


2.2.1.1 全局分析



2.2.1.2 局部分析



2.2.2 HW层,Transport层,Host层


2.2.2.1 HW层——蓝牙芯片层

HW层,指的是蓝牙芯片层,也就是我们上面说的Controller,包罗以下几个部分:

2.2.2.2 Transport——数据传输层

Transport层,主机控制层接口,通过硬件接口UART/USB/SDIO把HOST协议层的数据发送给Controller层,而且吸取Controller层的数据。
该部分有几个协议:

H4需要蓝牙芯片的UART_TX/UART_RX/UART_CTS/UART_RTS/VCC/GND接到MCU;
H5只需要蓝牙芯片的UART_TX/UART_RX/VCC/GND接到MCU就可以通信。
2.2.2.3 HOST——协议层

HOST层,此部分就是蓝牙协议栈,该部分包罗多个协议:

GATT与ATT的关系:GATT 是脱胎于 ATT ,ATT 是 Attribute Protocol Specification 属性规范协议,注意ATT是协议,而GATT是规范,两者差别点在于 ATT规定了数据格式,而 GATT 则是按照 ATT 的格式将具体数据填充进去。
2.2.3 BLE蓝牙体系架构




3. 市场常见的蓝牙技术方案

3.1 SOC单芯片方案

一般是半导体厂商半开源协议栈,把开发的蓝牙协议栈直接烧写到蓝牙芯片中,(好比CSR BC4/5,CSR8670,CSR8675,TI CC2540,NRF51xxx,NRF52xxx,乐鑫ESP32等等),架构如下:

市场上的常见产品:蓝牙音箱,蓝牙耳机,蓝牙手环,蓝牙心率带
3.2 SOC蓝牙+MCU方案

就是在1)的根本上,通过特定的interface(UART居多),发送自定义的command来到达想要的功能,好比发送0x01代表搜刮周围设备,当然在产品中肯定不会定义这么简朴的command,一般要加上command id + command len + command para data + command check sum来实现功能。
架构如下:

此部分的应用一般用于外设功能相对于复杂,需要驱动许多外设,但是单芯片方案的性能达不到的情况下一般用这种方案。
3.3 蓝牙host+controller分开方案

这种应用算是蓝牙最复杂的应用,适用于蓝牙利用情景较复杂的情况下利用,好比车载蓝牙等。客户需要有许多蓝牙协议,好比蓝牙电话(HFP),蓝牙音频(A2DP),蓝牙音乐控制(AVRCP),蓝牙电话本(PBAP),蓝牙短信(MAP),BLE,HID,假如你说以上还能用soc做,那么再加上Carplay的IAP/IAP2,Android Auto的RFCOMM BT呢,基本以上就需要这种方案了。
此中Transport是一个协议,H2就是在USB的根本上的协议,H4,H5,BCSP是UART根本上的协议,当然另有SDIO。

市场上常见产品:手机,功能较为复杂的蓝牙手表。
4 Bluez介绍

4.1 Bluez概述

BlueZ 是官方 Linux Bluetooth 栈,由主机控制接口(Host Control Interface ,HCI)层、Bluetooth 协议核心、逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol,L2CAP)、SCO 音频层、其他 Bluetooth 服务、用户空间后台历程以及设置工具构成。
BlueZ 的架构主要分为以下几个组件:

BlueZ 还提供了一组丰富的工具和库,用于在 Linux 体系上开发和管理蓝牙应用步调。这些工具包罗 hciconfig(用于设置 HCI 接口)、hcitool(用于执行蓝牙设备和操作的低级别命令)、bluetoothctl(用于交互式地管理蓝牙设备)等。
4.2 Bluez目录介绍

Bluez协议栈下载地址:http://www.bluez.org/
目录架构介绍:

  1. android/ - 用于替代android中bluedroid的android版本bluez源码。
  2. attrib/ - 包含gatttool 源码以及与gatt attribute相关的代码,gatttool程序入口为gatttool.c。   
  3. btio/ - 通过的标准socket接口与BlueZ5 kernel模块通信。
  4. client/ - bluetoothctl源码,程序入口为main.c。
  5. doc/ - BlueZ5 API文档。
  6. emulator/ - 与bluetooth虚拟controller工具相关的代码。
  7. gdbus/ - BlueZ5自带的内部gdbus库源码。
  8. gobex/ - Blue5自带的内部gobex库源码。
  9. lib/ - libbluetooth.so 源码,提供BlueZ4 API,用来支持某些第三方应用。
  10. monitor/ - btmon源码, 程序入口为main.c。
  11. obexd/ - obexd源码,程序入口为src/main.c。
  12. peripheral/ - 与蓝牙ble的GATT相关的代码?。
  13. plugins/ - BlueZ5插件源码(neard,autopair等插件)。
  14. profiles/ - BlueZ5蓝牙上层协议(a2dp,hid等)源码。
  15. src/ - bluetoothd源码,程序入口为main.c。
  16. test/ - Bluez5测试脚本。
  17. tools/ - Bluez5测试工具集源码。
  18. unit/ - PTS测试相关的一些代码?。
  19. README / INSTALL - 配置,编译,安装Bluez5的说明。
  20. Makefile.obexd - 定义obexd编译规则,此文件被include于Makefile.am中。
  21. Makefile.plugins - 定义BlueZ5的plugins(neard,autopair等)的编译规则, 此文件被include于Makefile.am中。
  22. Makefile.tools - 定义BlueZ5测试工具集的编译规则,此文件被include于 Makefile.am中。
  23. Makefile.am - 定义了Bluez5的编译规则。用于automake工具,生成 Makefile.in文件。
  24. Makefile.in - 用于configure脚本,生成最终的Makefile文件。
  25. configure.ac - 用于autoconf工具,生成configure脚本。
  26. configure - 配置编译选项,生成最终的Makefile文件,以及config.h文件
复制代码
bluez核心代码在src目录下,入口函数是main.c,bluez5编译后会生成bluetoothd可执行文件,该可执行文件在linux体系启动时自动加载,加载设置文件放在/etc/init/bluetooth.conf。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4