第一部分:HCI协议(一)HCI传输层

一、HCI传输层:

1、UART传输层配置

(1)HCI UART使用的是RS232,具体配置如下图所示:

第一部分:HCI协议(一)HCI传输层_第1张图片

主要需要注意的就是流控(Flow control),流控是为了防止uart buffer溢出,这个流控不是HCI流控,HCI有自己的流控机制(注意:有的bt chip直接可以设置uart流控,不用设置hci 流控)

接线方式:BT CHIP的TX和MCU的RX接;BT CHIP的RX和MCU的TX接;BT CHIP的CTS和MCU的RTS接;BT CHIP的RTS和MCU的CTS接。

(2)HCI packet indicator

HCI packet indicator是HCI packet的开头,大小是1byte,取值范围如下图所示:

第一部分:HCI协议(一)HCI传输层_第2张图片

例如:

A、HCI reset command,开头就是0x01;表示这是一个HCI command Packet

第一部分:HCI协议(一)HCI传输层_第3张图片

B、command complete event,开头就是0x04,表示这是一个HCI Event Packet

第一部分:HCI协议(一)HCI传输层_第4张图片

C、HCI Acl data,开头就是0x02,表示这是一个HCI ACL Data Packet

D、HCI Synchronous Data packet一般不用,这里不做解释,以后用到再补充,HCI Synchronous Data packet其实就是SCO数据,一般SCO是不走UART的,直接通过BT chip的PCM IN和PCM OUT引脚进行数据收发

E、HCI ISO Data packet,这个是core 5.2新加的类型,暂时不做解释,以后用到再补充

(3)错误校正

一旦UART同步出现错误,则Contorller会报HCI_Hardware_Error event,此时Host需要发送HCI_Reset command重新初始化Controller

2、USB传输层

没用过,暂时不解释

3、SECURE DIGITAL (SD)传输层

没用过,暂时不解释

4、THREE-WIRE UART传输层

没用过暂时不解释

你可能感兴趣的:(蓝牙协议栈)