蓝牙BC6的HCI指令初始化后无法搜索到周围蓝牙设备!
本帖最后由 sunzucao 于 2012-06-14 10:23:07 编辑 各位大虾好!
小弟目前正在做蓝牙HCI层开发,用的CSR的BlueCore6芯片,目前可以用串口发送BCSP包而且相互都可以响应,我的指令初始化过程如下:
首先是互相同步的包:
--------------------------------------------
收到: C0 40 41 00 7E DA DC ED ED C0
发出: C0 00 41 00 BE DA DC ED ED C0
--------------------------------------------
--------------------------------------------
收到: C0 40 41 00 7E AC AF EF EE C0
发出: C0 00 41 00 BE AC AF EF EE C0
--------------------------------------------
--------------------------------------------
收到: C0 40 41 00 7E AD EF AC ED C0
发出: C0 00 41 00 BE AD EF AC ED C0
--------------------------------------------
--------------------------------------------
收到: C0 40 41 00 7E DE AD D0 D0 C0
发出: C0 00 41 00 BE DE AD D0 D0 C0
--------------------------------------------
我这个设备是初始化为主设备:
然后是Read_BD_ADDR包:
--------------------------------------------
<<命令[Read_BD_ADDR][OGF:04 OCF:09]:
发出: C0 00 35 00 CA 09 10 00 C0
--------------------------------------------
--------------------------------------------
收到: C0 C1 C5 00 79 0E 0A 01 09 10 00 A5 A5 00 5B 02 00 C0
>>指令完成事件:
#Num_HCI_Command_Packets [1字节] 值:01
#Command_OpCode [2字节] 值:09 10
#----指令[Read_BD_ADDR][OGF:04 OCF:09]返回参数:
#----Status [1字节] 值:00
#----BD_ADDR [6字节] 值:A5 A5 00 5B 02 00
发出: C0 10 00 00 EF C0
--------------------------------------------
然后是Read_Buffer_Size的包:
--------------------------------------------
<<命令[Read_Buffer_Size][OGF:04 OCF:05]:
发出: C0 00 35 00 CA 05 10 00 C0
--------------------------------------------
--------------------------------------------
收到: C0 C2 D5 00 68 0E 0B 01 05 10 00 36 01 40 0A 00 08 00 C0
>>指令完成事件:
#Num_HCI_Command_Packets [1字节] 值:01
#Command_OpCode [2字节] 值:05 10
#----指令[Read_Buffer_Size][OGF:04 OCF:05]返回参数:
#----Status [1字节] 值:00
#----HCI_ACL_Data_Packet_Length [2字节] 值:36 01
#----HCI_SCO_Data_Packet_Length [1字节] 值:40
#----HCI_Total_Num_ACL_Data_Packets [2字节] 值:0A 00
#----HCI_Total_Num_SCO_Data_Packets [2字节] 值:08 00
发出: C0 18 00 00 E7 C0
---------------------------------------------
然后是Inquiry包去搜索周围的蓝牙设备:
---------------------------------------------
<<命令[Inquiry][OGF:01 OCF:01]:
#----LAP [3字节] 值:33 8B 9E
#----Inquiry_Length [1字节] 值:0A
#----Num_Response [1字节] 值:08
发出: C0 00 85 00 7A 01 04 05 33 8B 9E 0A 08 C0
---------------------------------------------
---------------------------------------------
收到: C0 C4 65 00 D6 0F 04 00 01 01 04 C0
>>指令状态事件:
#Status [1字节] 值:00
#Num_HCI_Command_Packets [1字节] 值:01
#Command_OpCode [2字节] 值:01 04
#----指令[Inquiry][OGF:01 OCF:01]返回状态.
发出: C0 28 00 00 D7 C0
---------------------------------------------
---------------------------------------------
收到: C0 C5 35 00 05 01 01 00 C0
>>查询完成事件:
#Status [1字节] 值:00
#Num_Responses [1字节] 值:00
发出: C0 30 00 00 CF C0
---------------------------------------------
但是很遗憾没有任何查询结果事件收到,也就是搜索不到周围任何蓝牙设备。但是周末至少有2个蓝牙设备,因为我用我笔记本的蓝牙可以搜索到两个。我若把BC6初始化为从设备,笔记本也搜索不到它。不知道为何,我已经试了三块BC6芯片了都是如此所以基本排除了芯片故障。我觉得是我初始化指令不对,或者少了某些指令,卡在这里好多天,没有头绪。。。。望大虾们指教,或者同行的弟兄们也可以加我的QQ:84511509,互相帮助,十分感谢!!
[解决办法]
ConnectionWriteScanEnable(hci_scan_enable_inq_and_page);加这个才能搜索到。一个主设备连接2个从设备,用SPP进行通信。怎么设置两个SPP呢?