BLE:主机堆栈 - HCI - 控制器
BLE : Host stack - HCI - Controller
我是 BLE/Bluetooth 编程新手。众所周知,BLE/Bluetooth 是一个完整的 module.Recently 我发现,NimBLE 提供了蓝牙的主机堆栈或控制器部分。https://github.com/apache/mynewt-core。他们在这里提到它支持任何主机堆栈与任何控制器的混合和匹配。
所以,是所有模块的 HCI 层(主机堆栈通过它进行交互)和控制器(较低的蓝牙层)实现相同还是特定于供应商?
如果我从 NimBLE 选择主机堆栈,HCI 的实现是否允许我使用任何供应商的控制器进行操作,或者 HCI 层是否应根据供应商规范实施并依赖于控制器.
我假设蓝牙/BLE 模块的控制器部分具有基本的射频和通信部分,所有模块的互操作性都是相同的。如果问题不重要,我很抱歉。
任何带有 hci 接口的主机堆栈都应该与任何 hci 控制器一起工作,只要它们都支持相同的传输方法(UART、USB 等)
有时,特别是对于 USB,您还需要一个特定的主机驱动程序来打开特定设备的传输接口。对于 UART,某些供应商需要在 hci 启动之前通过 UART 发送一些供应商特定的设置数据包以配置波特率等。
此外,主机和控制器应该具有共同的功能集。例如,您不能对仅支持经典蓝牙的主机和仅支持 BLE 的控制器做很多事情。
一些 hci 控制器实现自定义供应商命令以提供比标准命令更多的功能,例如设置自定义 public 蓝牙设备地址。主机还必须支持这些命令才能使用它们。
我是 BLE/Bluetooth 编程新手。众所周知,BLE/Bluetooth 是一个完整的 module.Recently 我发现,NimBLE 提供了蓝牙的主机堆栈或控制器部分。https://github.com/apache/mynewt-core。他们在这里提到它支持任何主机堆栈与任何控制器的混合和匹配。
所以,是所有模块的 HCI 层(主机堆栈通过它进行交互)和控制器(较低的蓝牙层)实现相同还是特定于供应商?
如果我从 NimBLE 选择主机堆栈,HCI 的实现是否允许我使用任何供应商的控制器进行操作,或者 HCI 层是否应根据供应商规范实施并依赖于控制器.
我假设蓝牙/BLE 模块的控制器部分具有基本的射频和通信部分,所有模块的互操作性都是相同的。如果问题不重要,我很抱歉。
任何带有 hci 接口的主机堆栈都应该与任何 hci 控制器一起工作,只要它们都支持相同的传输方法(UART、USB 等)
有时,特别是对于 USB,您还需要一个特定的主机驱动程序来打开特定设备的传输接口。对于 UART,某些供应商需要在 hci 启动之前通过 UART 发送一些供应商特定的设置数据包以配置波特率等。
此外,主机和控制器应该具有共同的功能集。例如,您不能对仅支持经典蓝牙的主机和仅支持 BLE 的控制器做很多事情。
一些 hci 控制器实现自定义供应商命令以提供比标准命令更多的功能,例如设置自定义 public 蓝牙设备地址。主机还必须支持这些命令才能使用它们。