BLE Controller相关介绍并答疑

RF/无线

1823人已加入

描述

本系列的几篇文章主要讲述"Bluetooth LE Multiple Connection"。此SDK是Telink BLE多连接应用的SDK,Telink多连接SDK还提供标准的 BLE Controller,通过标准HCI与其他BLE Host配合。接下来,小编将带您详细了解BLE Controller相关介绍并答疑。

1Telink BLE 多连接 HCI

BLE Stack由Controller和Host两部分组成。BLE Stack的实现方式有两种,一种是Host和Controller实现在一个SOC上的单芯片方案,一种是Host和Controller实现在两个芯片上的多芯片方案。通常HCI出现在多芯片实现的BLE Stack中。当然在单芯片BLE Stack方案中也可能有HCI,只是此时的HCI传输介质是RAM。

多连接

1.1 Host 和 Controller 数据交互

Host可以通过HCI下发HCI CMD和HCI ACL到Controller;Controller可以通过HCI上报HCI Event和HCI ACL。

多连接

下面以Host控制Controller发送adv并与Master建立connection的例子讲解HCI的使用。

初始时Host发送HCI_LE_Set_Adv_Param_Cmd设置ADV参数,Controller执行完Cmd以后上报HCI_Command_Complete_Event到Host;

Host紧接着发送HCI_LE_Set_Adv_Data_Cmd和HCI_LE_Set_Scan_Rsp_Data来配置ADV数据和Scan Rsp Data;

Host下发HCI_LE_Set_Adv_Enable_Cmd以使能ADV,controller将在37/38/39号通道上发送ADV。此时手机可以收到controller发送的ADV,并可以与之建立connection。

本地设备收到手机的Connection_Req以后,connection创建完成,controller会上报HCI_LE_Connection_Complete_Event到Host,之后可以交互数据。

多连接

多连接

1.2Telink BLE多连接Controller Block Diagram

下图是Telink BLE多连接 Controller软件架构。Telink BLE 多连接Controller是按照标准BLE Spec实现的,HCI是由HCI Transport和HCI Protocol处理两部分构成。

多连接

目前Telink BLE多连接Controller支持BLE 5.0全功能feature,具体细节如下表。

多连接

2Telink BLE 多连接 HCI Transport

HCI Transport是Host和Controller之间交换数据的物理接口,这种物理接口可以是UART、USB等。

Telink BLE多连接Controller目前只支持UART接口的HCI Transport,其他接口的HCI Transport后面可以根据需要扩展。

多连接

2.1Telink BLE 多连接 HCI Transport 软件架构

UART接口的HCI Transport有两种协议(H4和H5 )可以选择。这两种协议Telink 多连接BLE Controller都是支持的。

Telink BLE多连接 HCI Transport主要由两部分组成:HCI Transport Protocol实现层和HCI Transport 控制管理层。目前HCI Transport Protocol实现了两种协议,H4和H5,可以根据需求添加其他协议的实现。HCI Transport Control实现了对HCI Transport各种协议的管理和控制,同时也负责与HCI对接,它提供用户使用HCI Transport所需要的一切,因此,使用HCI Transport的用户只需要关注该层即可。

多连接

(1) H4 Protocol

H4协议PDU由HCI Type Indicator和Payload构成;HCI Type Indicator指明了HCI Packet Type;Payload是与HCI Type Indicator对应的HCI Protocol,如:HCI CMD、HCI ACL、HCI Event等。

H4 PDU将在UART接口上传输。

多连接

多连接

(2) H5 Protocol

H5又称3wire UART。H5支持软件流控和重传机制。相较H4来说,H5具有更高的可靠性,但是其传输效率没有H4高,且消耗的资源比H4大。

H5 PDU(Protocol Data Unit)在传输之前需要被编码,在解析H5 PDU之前需要解码,H5 PDU的编解码由Slip Layer完成。

Telink H5 Protocol软件架构如下图。UART用于数据的收发;Slip层实现了H5 PDU的编码器和解码器,负责H5 PDU的编码和解码;H5 Handler实现了H5 PDU的解析和处理、H5 Link的创建以及流量控制和重传控制。

多连接

3Telink BLE 多连接 Controller 常见问答

1、单连接SDK和多连接SDK是否都支持Controller工程?

单连接Controller工程支持BLE 4.2,并且后面不再升级

多连接Controller工程支持BLE 5.0,后面将不断升级

2、是否支持BT HCI CMD?

Telink 多连接BLE Controller HCI支持spec规定的LE 相关的HCI CMD,不支持BT相关HCI CMD

如果用户需要支持BT HCI CMD,我们可以做适配处理

3、BLE Controller是否支持低功耗?

默认不支持低功耗

如果需要支持低功耗需要和Host配合开发;

Host和Controller之间需要有GPIO唤醒源

Host有数据发送时,通过GPIO首先唤醒Controller,然后通过UART发送HCI CMD和HCI ACL

如果Controller有数据需要发送给Host也通过GPIO唤醒源唤醒Host,然后发送数据

需要注意的是:我们芯片的不支持UART唤醒的,所以需要通过GPIO唤醒,并且芯片从sleep起来需要一定恢复时间, 因此Host唤醒Controller以后需要等一会才能发送数据。

多连接

4、Controller丢包问题

如遇Host下发的数据包,Controller HCI有丢包现象,大概率是UART丢包了,因为正常情况Host到Controller是有流控的,不会出现丢包现象,除非Host没有对流控做处理;

如遇Controller接收到了remote数据,但是上报给host时丢包了,这个大概率是HCI Tx FIFO 不够用或者UART Baudrate太小导致,通常调大UART Baudrate和调大HCI Tx FIFO number即可。建议UART Baudrate至少1M。

5、HCI Vendor OGF

HCI Vendor OGF是HCI特意留给用户自定义使用的一个Opcode组,stack默认是空,但是可以根据用户需求添加;比如用户可能需要添加Set_Tx_Power,Read_Tx_Power,Set_Freq_Offset,Read_Freq_Offset, Set_BD_ADDR等。

这个地方无法做成通用的,因为不同用户要求的cmd格式可能不一样。

6、Controller是否支持Device Firmware Update(DFU)?

Controller目前是支持基于UART和HCI协议的DFU功能的,这个DFU功能做过大量测试,功能稳定。

这套DFU在Telink多连接BLE Controller和BT Controller相关项目中都有使用。

审核编辑:汤梓红

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分