我是BLE /蓝牙程序设计的新手。众所周知,BLE /蓝牙是一个完整的模块。最近我发现,NimBLE提供蓝牙的主机堆栈或控制器部分。https://github.com/apache/mynewt-core。在这里,他们提到它支持任何主机堆栈与任何控制器的混合和匹配。
那么,HCI层(主机堆栈通过它进行交互)和所有模块的Controller(下层蓝牙层)实现是相同的还是供应商特定的?
如果我从NimBLE中选择主机堆栈,HCI的实现是否允许我与任何供应商的控制器一起运行,或者HCI层应该使用供应商规范实现并依赖于控制器。
我认为蓝牙/ BLE模块的控制器部分具有基本的RF和通信部分,所有模块的互操作性都是相同的。如果这个问题很简单,我很抱歉。
答案 0 :(得分:1)
任何具有hci接口的主机堆栈都应该与任何hci控制器一起使用,只要它们都支持相同的传输方法(UART,USB等)。
有时,特别是对于USB,您还需要一个特定的主机驱动程序,以打开特定设备的传输接口。对于UART,一些供应商要求通过UART发送一些供应商特定的设置数据包,以便在hci启动之前配置波特率等。
主机和控制器也应该有一个共同的功能集。例如,对于仅支持Bluetooth classic的主机和仅支持BLE的控制器,您无法做多少。
一些hci控制器实现自定义供应商命令以提供超过标准命令的额外功能,例如设置自定义公共蓝牙设备地址。主机还必须支持这些命令才能使用它们。