【问题标题】:BLE : Host stack - HCI - ControllerBLE:主机堆栈 - HCI - 控制器
【发布时间】:2018-02-01 12:40:07
【问题描述】:

我是 BLE/蓝牙编程的新手。众所周知,BLE/蓝牙是一个完整的模块。最近我发现,NimBLE 提供了蓝牙的主机堆栈或控制器部分。https://github.com/apache/mynewt-core。在这里他们提到它支持任何主机堆栈与任何控制器的混合和匹配。

  1. 那么,是所有模块的 HCI 层(主机堆栈通过它交互)和控制器(较低的蓝牙层)实现相同还是特定于供应商?

  2. 如果我从 NimBLE 中选择主机堆栈,HCI 的实施是否允许我使用任何供应商的控制器进行操作,或者 HCI 层是否应根据供应商规范实施并取决于控制器。

我假设蓝牙/BLE模块的控制器部分具有基本的RF和通信部分,所有模块的互操作性都是相同的。如果问题是微不足道的,我很抱歉。

【问题讨论】:

    标签: bluetooth bluetooth-lowenergy core-bluetooth usb-hostcontroller


    【解决方案1】:

    任何具有 hci 接口的主机堆栈都应该适用于任何 hci 控制器,只要它们都支持相同的传输方法(UART、USB 等)

    有时,特别是对于 USB,您还需要一个特定的主机驱动程序来打开特定设备的传输接口。对于 UART,一些供应商需要一些供应商特定的设置数据包通过 UART 发送,这些数据包配置波特率等,然后才能启动 hci。

    主机和控制器也应该有一个共同的功能集。例如,您不能对仅支持经典蓝牙的主机和仅支持 BLE 的控制器做很多事情。

    一些 hci 控制器实现了自定义供应商命令,以提供标准命令之外的额外功能,例如设置自定义公共蓝牙设备地址。主机还必须支持这些命令才能使用它们。

    【讨论】:

    • 根据您的第一个陈述,我的问题 1 并不是特定于供应商的(对于 SPI、IIC 等其他通信方法应该是正确的),但控制器似乎具有 可能性 在较低级别具有供应商规范命令。因此,可以有一个通用的 HCI 层,但不是针对 每个控制器,尽管它支持相同的通信方法。我做对了吗?
    • 是的,控制器有可能具有供应商特定的命令,尽管标准实施当然不需要这些命令。如果我们以 UART 为例,如果您有两个控制器(以相同的波特率运行),您可以使用它们中的任何一个,而无需更改主机端。
    • 好吧,这让我清醒了。谢谢! @Emil 如果我在我的 µc 上使用 HCI 层(来自供应商)实现这些类型的主机堆栈,并在堆栈中进行一些自定义修改,例如:我使用 BLE 堆栈配置文件之一来接收图像或数据,以访问任何 BLE控制器(类似于访问任何控制器以进行标准实现的通用堆栈),是否必须获得任何认证?
    • 我不知道。您可以通过他们的门户询问蓝牙 SIG。
    • @kaya 询问“是否必须获得任何认证?”主机和控制器认证是分开进行的。如果您想通过您的解决方案获利,获得认证会有所帮助,因为它证明您的解决方案符合 SIG 推荐的规范,并且可能会吸引潜在的用户/客户使用您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多