蓝牙 (一) 杂谈

蓝牙历史

1998.5,瑞典爱立信、芬兰诺基亚、日本东芝、美国IBM和英特尔公司五家著名厂商,在联合拓展短程无线通信技术的标准化活动时提出了蓝牙技术。
1999年下半年,著名的业界巨头微软、moto、3COM、朗讯与蓝牙特别小组5家公司共同发起成立了蓝牙技术推广组织,从而在全球范围内掀起了一股蓝牙潮。

蓝牙解决的问题


解决的是  一些小型的设备和移动终端的互联

wifi 解决的是 移动终端与网络(网关设备)互联的技术


蓝牙解决的是点对点的问题,

但是wifi解决的是 点到 中央的问题.

蓝牙特点


传统蓝牙特点
	短距离通信(一般10m内) // 蓝牙技术利用短距离、低成本的无线连接取代了电缆连接,从而为现存的数据网络和小型的外围设备提供统一的连接
		蓝牙设备工作在全球通用免费的2.4GHz的ISM(即工业、科学、医学)频段
	现在拥有三种类别和四个版本
	比特率已经从1Mbps发展的将近54Mbps的境界,在传输速度上似乎要与Wifi分庭抗礼
	蓝牙最致命的弱点在于高功耗
		一旦打开蓝牙,它就会持续进行搜索并试图与设备保持连接,这个过程的功耗是很大的。
		所以蓝牙技术的未来在于如何降低功耗,同时保持高速的传输速率。

低功耗蓝牙特点
	蓝牙4.0支持低功耗蓝牙
	耗电量极低,睡眠模式一般是4-7个uA,广播状态是1个mA以下
	接入时间短
		低功耗蓝牙设备匹配和接入时间比传统蓝牙大大降低,低功耗蓝牙15ms就可以匹配上。
	低功耗不是协议达成,是硬件决定


蓝牙系统

蓝牙系统
	天线单元  // 处理发送介质,就像i2c 的两根物理电线一样.
	链路控制(硬件)单元 // 控制器,就像i2c控制器一样.
	---------------------------- 上面都是硬件,下面都是软件
	链路管理(软件)单元
	软件(协议)单元

蓝牙类别和版本

三个类别,四个版本(还是5?)

现在蓝牙(V4.0的蓝牙)主要分三类

br/edr

le

amp

版本从 v1.0 到 v5.0 ,5个版本

在这里插入图片描述

蓝牙系统详解

  • 天线单元
全是硬件,怎么实现?
  • 链路控制(硬件)单元
全是硬件,怎么实现?
  • 链路管理单元
全是软件,是怎么实现的?
  • 蓝牙协议的实现
CSR
BlueZ
BlueDroid
Broadcom BSA
  • 图示(不包括天线单元)
纯硬件(浅绿色部分)就是蓝牙硬件模块(一般是芯片中的一个模块),下面就以蓝牙模块(硬件)代指浅绿色部分
这个蓝牙模块需要驱动程序,来控制蓝牙模块(硬件)工作.
这个驱动程序提供给其他软件的接口(这个接口包括硬件和软件接口)为 HCI,其他软件不会直接操作蓝牙模块,只会通过 该驱动程序,准确来说是该驱动程序提供的 HCI 来操作硬件.

一般驱动程序提供的接口不是 API 吗?不是纯软件的吗?
是的,但是蓝牙模块可以 单单 以模块存在,然后驱动程序跑在蓝牙模块上.
如果其他软件(想要使用该驱动程序的软件)想要调用这些接口,就要看 该软件 是否和 蓝牙模块上的驱动程序是否在同一cpu上.
如果是,则是纯软件接口.如果不是,那除了软件接口还需要考虑硬件接口,例如硬件接口可能是串口,可能是usb接口.


Link Manager 的主要内容一般是 驱动该蓝牙模块(硬件)的 驱动程序

该驱动程序一般提供什么样的软件 API
1. 定义数据包结构/信道
2. 发现/连接程序
3. 发送/接收数据。

L2CAP
	从0开始
		一开始涉及的 ble 蓝牙协议只有一种 profile ,那么就不需要用到 L2CAP .
		此时想再弄一个 profile ,问题就来了.
			如果两个应用并发调用驱动,怎么办?显然会出现问题.
			有人就说了,那应用处理吧,应用就不干了,我用你的协议,还要处理你内部的并发,这不合理
			有人就说了,说的也是,那蓝牙协议栈处理吧,于是,蓝牙协议栈内部为了解决这个计算机难题,就在蓝牙协议栈中加了一层.(该层用来去并发),做出来了之后,各种好处就出来了.又增又补的,这一层的功能又多了起来.
  • profile
0 开始
		有很多应用,每种应用都要处理自己的封包,
		例如 蓝牙耳机使用的 蓝牙音频协议. 
		应用1 想用 蓝牙传输音频 ,对不起,蓝牙传输音频的协议没有,自己实现吧,于是,应用1实现了一套
		应用2 想用 蓝牙传输音频 ,对不起,蓝牙传输音频的协议没有,自己实现吧,于是,应用2实现了一套
		应用3 想用 蓝牙传输音频 ,对不起,蓝牙传输音频的协议没有,自己实现吧,于是,应用3实现了一套
		...
		有些人一看,得了,这么多人用蓝牙传输音频, 我能不能将一些 通用的 蓝牙传输音频 的代码抽出来,单独做出来,然后别人再实现的 这种应用的时候,直接调用不就行了.ok,于是,出来了 一种 通用的应用协议. 
		然后麻烦事就来了,这些协议放哪里呢?
		照旧,新增一层,这层就放到  L2CAP 和 之前的 app 层 中间吧.用于存放各种 通用应用协议


虽然历史不是这么发展的,但是应该是这么理解的.

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值