EMC易倍(中国)官方网站-引领体育潮流

蓝牙通讯详细原理pdf-EMC易倍体育|官方网站
蓝牙通讯详细原理pdf
发布时间:2026-05-01 16:04:06

  一、HCI 在蓝牙软件协议模型位置的分析 蓝牙系统的协议模型如图1 所示。从图中可以看出,HCI 是 位于蓝牙系统的L2CAP(逻辑链 路控制与适配协议)层和LMP (链路管理协议)层之间的一 层协议。HCI 为上层协议提供了 进入LM 的统一接口和进入基带 的统一方式。在HCI 的主机 (Host)和HCI 主机控制器 (Host Controller)之间会存 在若干传输层,这些传输层是 透明的,只需完成传输数据的 任务,不必清楚数据的具体格 式。目前,蓝牙的SIG 规定了 四种与硬件连接的物理总线、UART 和PC 卡。 其中通过RS232 串口线方式进 行连接具有差错校验。 HCI层的底层层协议如图2所示。 由图可看出,HCI层屏蔽了基带,为协 议层的上层提供了进入基带的统一方 式。 二、HCI与基带通信方式的研究与 分析 蓝牙系统的底层协议通信如图3所 示。下面结合图3对蓝牙系统中HCI 层与基带间的通信作一些分析研究。 1.通信方式的分析 HCI是通过包的方式 来传送数据、命令和事件 的,所有在主机和主机控 制器之间的通信都以包 的形式进行。包括每个命 令的返回参数都通过特 定的事件包来传输。HCI 有数据、命令和事件三种 包,其中数据包是双向 的,命令包只能从主机发 往主机控制器,而事件包 始终是主机控制器发向 主机的。主机发出的大多 数命令包都会触发主机 控制器产生相应的事件 包作为响应。 命令包分为六种类型: * 链路控制命令; * 链路政策和模式命令; * 主机控制和基带命令; * 信息命令; * 状态命令; * 测试命令。 事件包也可分为三种类型: * 通用事件,包括命令完成包(Command Complete)和命令状态包(Command Status); * 测试事件; * 出错时发生的事件,如产生丢失 (Flush Occured)和数据缓冲区溢出 (Data Buffer Overflow)。 数据包则可分为ACL 和SCO 的数据包。包的格式如图4 所示。 2.包 的参数分 析研究 命令包: 命令包中 的OCF (Opcode Command Field)和 OGF (Opcode Group Field)是 用于区分 命令种 的。 Paramete r Length 表示所带 参数的长 度,以字 节数为单 位,随后 就是所带 的参数列 表。下面 以 Inquiry 命令为例 对HCI 的 命令包做 具体说 明。 在Inquiry 命令中,OGF=0x01 表示此命令属于链路控制命令,同时 OCF=0x0001 则表示此命令为链路控制命令中的Inquiry 命令。OCF 与OGF 共占 2 字节,又由于底位字节在前,则它们在命令包为0x0104。在Inquiry 命令 中,参数Parameter Length 为5。Inquiry 命令带3 个参数,第一个参数为 LAP(low address part), 它将用来产生Baseband 中查询命令包的包头中的 Access Code。第二个参数为Inquiry_Length,它时表示在Inquiry 命令停止 前所定义的最大时间,超过此时间,Inquiry 命令将终止。第三个参数为 NUM_Response,它的值为0X00 表示设备响应数不受限制,只为0x00-0xff 则 表示在Inquiry 命令终止前最大的设备响应数。因此,若LAP=0x9e8b00, Inquiry_Length=0x05,NUM_Response=0x05,则协议上层调用Inquiry 命令是 HCI 向基带发的明令包将为:0x01 04 05 00 8b 9e 05 05。 事件包:事件包的Event Code 用来区分不同的事件包,Parameter Length 表示所带参数的长度,以字节数为单位,随后就是所带的参数列表。以Command Status Event 事件包为例对HCI 的事件包进行具体说明。 当主机控制器收到主机发来的如上面所提到的Inquiry 命令包并开始处理 时,它就会向主机发送Command Status Event事件包,此事件包为:0x0f 04 00 0a 01 04。0xOf 表示此事件包为Command Status Event 事件包,0x04 表 示此事件包带4 字节长度的参数,0x00 为此事件包的第一个参数即Status, 表示命令包正在处理。0x0a 为事件包的第二个参数 NUM_HCI_Command_Packets,表示主机最多可在向主机控制器发10 个命令包。 0x01 04 为第三个参数Command_Opcode, 表示此事件包是对Inquiry 命令包 的响应。 数据包:ACL 和SCO 数据包中的Connection Handle 即连接句柄是一个12 比特的标志符,用于唯一确认两台蓝牙设备间的数据或语音连接,可以看作是 两台蓝牙设备间唯一的数据通道的标识。两台设备间只能有一条ACL 连接,也 就是只有一个ACL 的连接句柄,相应L2CAP 的信道都是建立在这个连接句柄表 示的数据通道上;两台设备间可以有多个SCO 的连接,则一对设备间会有多个 SCO 的连接句柄。连接句柄在两设备连接期间一直存在,不管设备处于什么状 态。在ACL 数据包中,Flags 分为PB Fla 和BC Fla ,PB Fla 为包的界限 标志,PB Flag=0x00 表示此数据包为上层协议包(如L2CAP 包)的起始部分; PB Flag=0x01 表示此数据包为上层协议包 (如L2CAP 包)的后续部分。BC Fla 为广播发送的标志,BC Flag=0x00 表示无广播发送,只是点对点的发送;BC Flag=0x01 表示对所有处于激活状态的从设备进行广播发送,BC Flag=0x02 表 示对所有的从设备包括处于休眠状态的从设备进行广播发送。ACL 和SCO 数据 包中的Data Total Length 都表示所载荷的数据的长度,以字节位单位。 3.通信过程的研究与分析 当主机与基带之间用命令的方式进行通信时,主机向主机控制器发送命令 包。主机控制器完成一个命令,大多数情况下,它会向主机发出一个命令完成 事件包(Command Complete Packet),包中携带命令完成的信息。有些命令 不会收到命令完成事件,而会收到命令状态事件包(Command Status Packet), 当收到该事件则表示主机发出的命令已经被主机控制器接收并开始处理,过一 段时间该命令被执行完毕时,主机控制器会向主机发出相应的事件包来通知主 机。如果命令参数有误,则会在命令状态事件中给出相应错误码。假如错误出 现在一个返回Command Complete 事件包的命令中,则此Command Complete 事 件包不一定含有此命令所定义的所有参数。状态参数作为解释错误原因同时也 是第一个返回的参数,总是要返回的。假如紧随状态参数之后是连接句柄或蓝 牙的设备地址,则此参数也总是要返回,这样可判别出此Command Complete 事件包属于那个实例的一个命令。在这种情况下,事件包中连接句柄或蓝牙的 设备地址应与命令包种的相应参数一致。假如错误出现在一个不返回Command Complete 事件包的命令中,则事件包包含的所有参数都不一定是有效的。主 机必须根据于此命令相联系的事件包中的状态参数来决定它们的有效性。 4.HCI 流量控制(Flow Control)的分析研究 HCI 的流量控制是为了管理主机和主机控制器中有限的资源并控制数据流 量而设计的,由主机管理主机控制器的数据缓存区,主机可动态地调整每个连 接句柄的流量。 对于命令包的流量控制,主机在每发一个命令之前都要确定当前能发命令包的 数目,当然,在开机和重启动时发命令包可以不用考虑接收情况,直到收到命 令完成事件包或命令状态事件包为止。因为在每个命令完成事件包和命令状态 事件包中都有Num_HCI_Command_ Packet 选项表明当时主机能向主机控制器 发送的命令包的数目,而对于每个命令必然会有相应的命令完成事件包和命令 状态事件包,主机就能控制命令包不会溢出。 对于数据包的流量控制,一开始,主机调用Read_Buffer_Size 命令,该命 令返回的两个参数决定了主机能发往主机控制器的ACL 和SCO 两种数据包的大 小的最大值,同时两个附加参数则说明了主机控制器能接收的ACL 和SCO 数据 包总的数目。而每隔一段时间,主机控制器会向主机发 Number_Of_Complete_Packet 事件,该事件的参数值表明了对每个连接句柄 已经处理的数据包的数目(包括正确传输和被丢弃的)。主机根据一开始就知 道的总数,减去已经处理的包的数目,则可计算出还能发多少数据包,从而控 制数据包的流量。 如有必要,HCI 的流量控制也可由主机控制器来实现对主机的控制,可以 通过Set_Host_ Controller_To_Host_Flow_Control 命令来设置,其控制过程 基本与主机控制过程类似,只是命令稍有不同。当主机收到断链确认的事件后, 就认为所有传往主机控制器的数据包已经全部被丢弃了,同时主机控制器中的 数据缓冲区也被释放了。 三、HCI 协议层软件开发 我们在对HCI 层进行全面的分析研究之后,提出了HCI 协议层软件开发的 方案,定出了HCI 层提供给协议上层的接口。这些接口给蓝牙协议栈的上层提 供了进入BaseBand 的统一入口。整个接口按协议站的要求分为八大部分。下 面介绍每部分的接口。整个软件层采用传递消息加函数调用相结合的机制来实 现,即上层对HCI 层接口的调用采用函数调用的机制,HCI 对上层的通信采用 传递消息的方式。 1.接口分类及举例说明 (1)开始命令 此命令接口是主机向HCI注册及并启动HCI。 如启动HCI 的函数接口为HCI_ReqStart (),HCI 在启动后发向上层的消息接 口为HCI_START_CNF ()。命令执行过程如图5 所示。 (2)链路控制命令 链路控制命令是允许 主机控制器控制与其他 蓝牙设备的连接。在链路 控制命令运行时, LM 控 制蓝牙微微网与分布网 的建立与维持。这些命令 指示LM 创建及修改与远 端蓝牙设备的连接链路, 查询范围内的其他蓝牙 设备,及其他链路管理协 议命令。 以查找并发现周围设备为例,HCI层为上层提供了函数接口 HCI_ReqInquir ,消息接口为HCI_INQUIRY_RESULT_EVT和HCI_INQUIRY_CNF。 命令执行过程如图6所示。 主机首先调用HCI 的 HCI_ReqInquir 函数开 始查询过程,在此过程 中,如有蓝牙响应此查 询,则会产生一 HCI_INQUIRY_RESULT_EV T事件通知主机。在此次 查询过程结束时,会产生 HCI_INQUIRY_CNF这条消 息通知主机,参数 NrofResponse表示在此 次查询过程所响应的蓝 牙设备数。 (3)链路政策命令 链路政策命令提供了 一种影响LM怎样管理微 微网的方法。当链路政策 命令运行时,LM仍然以 调整的参数控制微微网 及分布网的建立和维持。 这些链路政策命令调整 LM

  2、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问加。

  3、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。

  4、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档

  《生动的数据》课件-2025-2026学年沪教版(新教材)小学美术三年级下册.pptx

  《校园微电影宣传策划》教学课件-2025-2026学年人美版(北京)(2024)初中美术七年级下册.pptx

  Emc易倍体育官网app

  《 春华秋实绘花鸟》教学课件-2025-2026学年人美版(北京)(2024)初中美术七年级下册.pptx

  《把“大自然”穿在身上》教学课件-2025-2026学年人美版(北京)(2024)初中美术七年级下册.pptx

  DB37-T4776-2024路用不粘轮改性乳化沥青粘层应用技术规范.pdf

  2025浙江金华市义乌市建设投资集团有限公司人员招聘18人笔试历年参考题库附带答案详解.docx

  广东省深圳市深圳实验中学2024-2025学年八年级下学期期中测试语文卷.docx

  GB 50168-2018电气装置安装工程电缆线路施工及验收标准解读.pptx

  2024年兰州热力集团有限公司人员招聘笔试备考题库及答案解析.docx

  《GB_T 45271-2025化学纤维 儿茶素含量的测定 高效液相色谱法》专题研究报告.pptx

  2025浙江金华市义乌市双江湖集团人员招聘68人笔试历年参考题库附带答案详解.pdf

  原创力文档创建于2008年,本站为文档C2C交易模式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有。原创力文档是网络服务平台方,若您的权利被侵害,请发链接和相关诉求至 电线) ,上传者