在本章中,我们首先解释蓝牙芯片组如何物理连接,然后提供有关流行的蓝牙芯片组及其与BTstack一起使用的信息。
HCI接口
主机(计算机或MCU)与主机控制器(实际蓝牙芯片组)之间的通信遵循主机控制器接口(HCI),如下所示。HCI定义了如何交换命令,事件,异步和同步数据包。异步数据包(ACL)用于数据传输,而同步数据包(SCO)用于带有耳机和免提配置文件的语音。
HCI H2
在桌面级计算机上 笔记本电脑,USB主要用作HCI传输层。对于USB蓝牙芯片组,几乎没有变化:市场上的大多数USB硬件锁目前包含Broadcom BCM20702或CSR 851x芯片组。它也被称为H2。
在嵌入式系统中,使用UART连接,尽管也可以使用USB。
对于UART连接,存在不同的传输层变体。
HCI H4
最常见的是官方的“UART Transport”,也称为H4。它需要通过CTS / RTS线路进行硬件流量控制,并假设UART线路没有错误。
HCI H5
“三线UART传输”,也称为H5,利用SLIP协议传输数据包,并通过重传处理数据包丢失和比特错误。虽然可以在没有硬件握手的情况下将H5真正用于“三线”,但我们建议使用带有硬件握手的完整UART。如果您的设计缺乏硬件握手,H5是您唯一的选择。
BCSP
H5的前身。与H5的主要区别在于,偶数奇偶校验用于BCSP。要将BCSP与BTstack一起使用,可以使用H5传输并调用hci_transport_h5_enable_bcsp_mode
eHCILL
最后,德州仪器(TI)扩展了H4以创建“eHCILL传输”层,允许双方进入睡眠模式而不会失去同步。虽然它比H5更容易实现,但它仅受TI芯片组支持,无法处理数据包丢失或误码。
H4通过SPI
来自Dialog Semiconductor和EM Marin的芯片组允许通过SPI发送H4格式的HCI数据包。SPI具有主机控制器和主机更简单实现的优点,因为它不需要精确的时钟。SPI主设备(这里是主机)提供SPI时钟,SPI从设备(主机控制器)只需在时钟线改变时读取和更新数据线。EM9304支持高达8 Mhz的SPI时钟。但是,需要一个附加协议让主机知道主机控制器何时有HCI数据包。通常,使用额外的GPIO来发出信号。
HCI的缺点
不幸的是,人机交互标准错过了一些相关的细节:
-
对于基于UART的连接,未定义初始波特率,但大多数蓝牙芯片组使用115200波特。为了获得更好的吞吐量,需要更高的波特率,但是没有标准的HCI命令来更改它。相反,每个供应商都必须提出他们自己的一组特定于供应商的命令。有时,还需要额外的步骤,例如进行热复位,以激活波特率变化。
-
某些蓝牙芯片组没有唯一的MAC地址。一开始,需要设置MAC地址,但没有标准的HCI命令来设置它。
-
语音的SCO数据既可以通过HCI接口传输,也可以通过芯片组上的显式PCM / I2S接口传输。大多数芯片组默认使用PCM / I2S接口。要通过USB或免提配置文件中的宽带语音使用它,需要将数据传送到主机MCU。较新的蓝牙标准定义了用于配置SCO路由的HCI命令,但是到目前为止我们测试的芯片组中没有实现它。相反,这也是以特定于供应商的方式配置的。
-
此外,大多数供应商允许通过向芯片组发送自定义命令来在运行时修补或配置其芯片组。显然,这也取决于供应商。
文档和支持
各种蓝牙芯片组提供商之间的开发人员文档和支持水平差异很大。
根据我们的经验,只有德州仪器和EM Microelectronics直接在其网站上提供所有相关信息。Nordic Semiconductor没有正式使用带有HCI接口的蓝牙芯片组,但是他们的nRF5系列文档是完整的,信息非常丰富。TI和Nordic还通过各自的网络论坛提供出色的支持。
Broadcom的蓝牙+ Wifi部门已被赛普拉斯半导体公司收购,据我们所知,它仅向大客户提供开发人员文档。可以加入他们的社区论坛并下载WICED SDK。WICED SDK针对Wifi +蓝牙组合芯片组,包含必要的芯片组补丁文件。
已被高通公司收购的CSR在签署保密协议后在其支持网站上提供所有相关信息。
芯片组概述
芯片组 |
类型 |
人体交通运输 |
BD_ADDR(1) |
SCO over HCI(2) |
LE DLE |
多个LE角色 |
BTstack文件夹 |
评论 |
Atmel ATWILC3000 |
LE |
H4 |
是 |
不知道 |
没有 |
没有 |
atwilc3000 |
BLE固件大小:60 kB |
Broadcom UART |
双模式 |
H4,H5 |
很少 |
部分(2) |
没有 |
也许(3) |
BCM |
最大UART波特率为2 mbps |
Broadcom USB Dongles |
双模式 |
USB |
是 |
是 |
没有 |
没有 |
BCM |
|
CSR UART |
双模式 |
H4,H5,BCSP |
很少 < |