0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

经典蓝牙的LMP的工作原理解析

泰凌微电子 来源:泰凌微电子 2024-06-12 09:01 次阅读

蓝牙协议中,为了更加灵活以及容易实现多种特性,使用了多协议,多层级的设计,LMP即link manager protocol(链路管理器协议)就是蓝牙协议中的一个重要组成部分,本文将对经典蓝牙的LMP进行解析,带大家一起了解LMP的工作原理

1

什么是LMP?

LMP是 controller中的一层,用于控制和协商两个设备之间蓝牙连接的所有操作,这包括了逻辑传输和逻辑链路的建立和控制,以及物理链路的控制,比如蓝牙连接中进行断开、设置输出功率、获取features等操作。LMP用于两个设备上的链路管理器(LM)之间的通信,为它们提供了链路配置、安全管理、服务质量管理、错误控制与恢复、电源管理信息交换等功能。

f9a1e238-2853-11ef-91d2-92fbcf53809c.png

图1. 蓝牙核心系统架构

2

LMP的特点

所有LMP消息只能作用于发送和接收设备之间的物理链路以及相关的逻辑链路和逻辑传输,如当前有两个连接A和B,那么A上的LMP消息不应当作用于B。LMP消息用于建立链路、加密和控制,由两个设备之间的ACL-C或ASB-C逻辑链路传输,只由LM解释和执行,不会传到更高的协议层。

f9a8530c-2853-11ef-91d2-92fbcf53809c.png

图2. LMP层级

LMP的每个PDU(protocol data unit,协议数据单元,数据传送的基本单元)都被分配一个7位或15位的操作码(opcode),用于唯一标识不同类型的PDU。操作码的前7位和1位transaction ID位于有效负载主体的第一个字节中,如果操作码的前7位是124到127的话,则操作码的附加字节位于有效负载的第二个字节中,包报头的FLOW位始终为1,并且在接收时应该被忽略。如果PDU包含一个或多个参数,这些参数将被放置在操作码之后紧接着的有效负载中,即如果PDU具有7位操作码,则在字节2处,如果有15位操作码,则在字节3处,使用的字节数取决于参数的长度,所有参数都使用小端格式,即先传输最低有效字节。

f9c2cc0a-2853-11ef-91d2-92fbcf53809c.png

图3. LMP PDU结构

3

LMP的工作原理

3.1

事务

LMP根据事务(transaction)进行操作,事务是实现特定目的的一组连续的消息交换。构成同一事物的一部分的所有PDU的事务ID应该具有相同的值,如果事务是由central发起的,那么事务ID为0,如果是peripheral发起的,那么事务ID为1。

3.2

响应超时

ACL-C逻辑链路上传输的LMP PDU从被接收到回复之间的时间应该小于LMP响应超时时间(30秒),而在ASB-C逻辑链路上发送的LMP消息则不受LMP响应超时的约束。

3.3

错误处理

如果LM接收到一个操作码未知的PDU,它会以包含错误码Unknown LMP PDU(0x19)的LMP_NOT_ACCEPTED或LMP_NOT_ACCEPTED_EXT来响应,如果接收到的是参数无效的PDU则应以包含错误码Invalid LMP Parameters(0x1E)的LMP_NOT_ACCEPTED或LMP_NOT_ACCEPTED_EXT来响应。如果超过了最大响应时间或者检测到链路丢失,等待响应的一方应当断定链路连接失败,及时做出处理。如果收到错误消息的数量超过了阈值,则应该断开连接。

3.4

冲突解决

由于LMP PDU不是及时传递的,因此可能会出现冲突的情况,即两端都启动了相同的程序,并且都无法完成。在这种情况下,central应该通过发送带有错误代码LMP Error Transaction Collision/LL Procedure Collision(0x23)的LMP_NOT_ACCEPTED或LMP_NOT_ACCEPTED_EXT来拒绝peripheral程序的启动,从而完成central启动的程序。

两个LM启动了不同的程序并且都无法完成的情况下也会产生冲突,这种情况下central应该通过发送带有错误码Different Transaction Collision(0x2A)的LMP_NOT_ACCEPTED或LMP_NOT_ACCEPTED_EXT来拒绝peripheral启动的程序,从而完成central的程序。

3.5

设备特性

设备特性(device features)定义了很多的设备的特性,这些特性是可以用特定的LMP message来获取的,为了表示和传输这些特性,定义了一些bit位来代表它们,当这些bit被置为1时说明该设备支持这个特性,如图是一些常见的特征。

f9c7174c-2853-11ef-91d2-92fbcf53809c.png

图4. 部分设备特征

每个LMP PDU都是强制性或者可选的,一些LMP PDU需要某些特征的支持,LM不得发送或接收与其对等设备的特征不兼容的任何PDU,LM可以获取并缓存对等设备的特征掩码,在连接期间,支持的特征集不应当被修改。

4

常用的LMP流程

LMP有很多基本流程,主要有Connection control、Information Requests、Role Switch、Modes of Operation、Logical Transports。每个流程都包含很多子流程,我们这里只简单列举几个常用的进行讲解,并使用泰凌微B91开发板配合抓包器对LMP流程进行深入了解。

f9d14280-2853-11ef-91d2-92fbcf53809c.png

图5. B91开发板

5

连接建立

在page结束之后,我们使用该流程来建立Host之间的连接,在这个流程中,我们首先可以请求时钟偏移、LMP版本、支持的特性、名称以及可能的detach行为。之后如果要建立连接的话,Paging设备就会发送LMP_HOST_CONNECTION_REQ,对端如果同意建立连接就可以回复LMP_ACCEPTED PDU否则可以回复LMP_NOT_ACCEPTED PDU,如果peripheral需要进行角色切换的话,它会在收到LMP_HOST_CONNECTION_REQ之后发送LMP_SLOT_OFFSET和LMP_SWITCH_REQ,如果角色切换失败,LM将继续创建连接,除非由于资源有限无法支持,那么应以带有错误码Remote Device Terminated Connection due to Low Resources(0x14)的 LMP_DETACH PDU来中止连接。当切换成功时,旧的peripheral将回复LMP_ACCEPTED或LMP_NOT_ACCEPTED并且事务ID将会被设为0。

当连接被接收后,设备就可以调用LMP安全程序(paring,authentication和encryption),当设备在连接期间不会再启动任何安全程序时它会发送LMP_SETUP_COMPLETE PDU。当两个设备都发送LMP_SETUP_COMPLETE PDU时表示连接流程完成,数据流可以在BR/EDR ACL逻辑传输上传输。

fa0f72da-2853-11ef-91d2-92fbcf53809c.png

图6. 连接建立流程图

fa203246-2853-11ef-91d2-92fbcf53809c.png

图7. 抓包器抓到的LMP Connection establishment流程

6

连接断开

central和peripheral随时都可以使用LMP_DETACH断开两者之间的连接,并在消息中包含错误码,以通知对方断开原因。而在收到LMP_DETACH后是不会用LMP进行回复的,只会回复一个ack并通知Host连接断开。

fa23af34-2853-11ef-91d2-92fbcf53809c.png

图8. Detach流程图

fa2d7b54-2853-11ef-91d2-92fbcf53809c.png

图9. 抓包器抓到的LMP Detach流程

总结

LMP是蓝牙协议中重要的一环,用来管理所有的连接,目前泰凌微电子的TLSR951x和TLSR952x系列芯片均基于自研蓝牙协议栈,支持标准LMP所有过程,且支持BR/EDR和LE双模共存,多链路共存等方案,适合用于需求复杂的产品开发。

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电源
    +关注

    关注

    184

    文章

    17835

    浏览量

    251693
  • 管理器
    +关注

    关注

    0

    文章

    248

    浏览量

    18606
  • 蓝牙协议
    +关注

    关注

    1

    文章

    29

    浏览量

    11461
  • ACL
    ACL
    +关注

    关注

    0

    文章

    61

    浏览量

    12020

原文标题:【技术专栏】泰凌微电子经典蓝牙 LMP 概述

文章出处:【微信号:telink-semi,微信公众号:泰凌微电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    彩扩机工作原理解析 彩扩机进行工作时对温度有什么要求?

    首先,我们会解析彩扩机工作原理;然后,我们根据它的工作原理探讨其工作条件,对系统搭建设计初步方案。
    的头像 发表于 05-21 07:28 6037次阅读

    开关电源工作原理详细解析

    本帖最后由 eehome 于 2013-1-5 10:10 编辑 這是一篇基楚教學[attach]开关电源工作原理详细解析[/attach]
    发表于 09-21 05:09

    蓝牙耳机的工作原理解析

    蓝牙耳机的工作原理蓝牙耳机听个响?
    发表于 12-30 06:28

    S-function的工作原理解析

    S-function函数S-function工作原理
    发表于 12-31 06:17

    三极管开关电路工作原理解析

    三极管开关电路工作原理解析  图一所示是NPN三极管的 共射极电路,图二所示是它的特性
    发表于 11-24 10:50 27.1w次阅读

    校验码工作原理解析

    校验码工作原理解析   元件故障噪声干扰等各种因素常常导致计算机在处理信息过程中出现错误。为了防止错误,可将信号采用专门的逻辑线路进行编码以检测错误,甚
    发表于 04-13 14:16 2188次阅读
    校验码<b class='flag-5'>工作原理解析</b>

    组合逻辑控制器组成结构及工作原理解析

    组合逻辑控制器组成结构及工作原理解析 按照控制信号产生的方式不同,控制器分为微程序控制器和组合逻辑控制器两类 微程序控制器是
    发表于 04-15 11:20 1.3w次阅读

    触摸屏的应用与工作原理解析

    触摸屏的应用与工作原理解析
    发表于 02-08 02:13 38次下载

    燃气调压器工作原理解析_燃气调压器怎么调(步骤教程)

    本文首先介绍了燃气调压器作用及分类,其次阐述了直接作用式调压器、间接作用式调压器及轴流式调压器的工作原理解析,最后介绍了燃气调压器怎么调的步骤教程,具体的跟随小编一起来了解一下吧。
    发表于 05-08 14:30 18.7w次阅读

    锂电池工作原理:充电及放电机制原理解析资料下载

    电子发烧友网为你提供锂电池工作原理:充电及放电机制原理解析资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-09 08:55 24次下载
    锂电池<b class='flag-5'>工作原理</b>:充电及放电机制原<b class='flag-5'>理解析</b>资料下载

    什么是晶振 晶振工作原理解析

    什么是晶振 晶振工作原理解析
    的头像 发表于 12-30 17:13 4410次阅读
    什么是晶振 晶振<b class='flag-5'>工作原理解析</b>

    什么是安全光栅?工作原理及应用领域解析

    什么是安全光栅?工作原理及应用领域解析
    的头像 发表于 06-24 10:19 2038次阅读
    什么是安全光栅?<b class='flag-5'>工作原理</b>及应用领域<b class='flag-5'>解析</b>

    什么是安全光栅?工作原理及应用领域解析

    什么是安全光栅?工作原理及应用领域解析
    的头像 发表于 06-29 09:45 2633次阅读
    什么是安全光栅?<b class='flag-5'>工作原理</b>及应用领域<b class='flag-5'>解析</b>

    解析经典蓝牙设备连接过程

    随着越来越多的经典蓝牙设备应用在我们的生活和工作中,该类设备的使用场景和相关设计也更加丰富。与此同时,泰凌微电子作为蓝牙芯片的源头厂商,在经典
    的头像 发表于 06-05 09:11 2542次阅读
    <b class='flag-5'>解析</b><b class='flag-5'>经典</b><b class='flag-5'>蓝牙</b>设备连接过程

    蓝牙模块的工作原理与电路设计

    蓝牙技术是一种短距离无线通信技术,广泛应用于各种智能设备中,如手机、耳机、智能手表等。蓝牙模块作为实现蓝牙通信的核心部件,其工作原理和电路设计对于
    的头像 发表于 06-14 16:04 1825次阅读