|
|
Information
| 说明: |
建议参照本版块置顶帖内容输入必要信息 |
| 芯片型号: |
B80B与B85 |
| 驱动SDK版本: |
b80_ble_sdk 和tc_ble_sdk-4.0.2.1 |
我现在要用B85做主机连接遥控器B80B(做从机),同时B85保留后续做从机连接其他单片机的拓展空间,目前B85(蓝牙名为Bf101)和B80B(蓝牙名为Blr101)只要匹配蓝牙名互相确认正确,就可以建立蓝牙连接,并互相加入白名单,后续开机自动扫描建立连接,并可以传送对应数值。
B85匹配如下:
const u8 tbl_advData[] = {
6, DT_COMPLETE_LOCAL_NAME, 'B', 'f', '1', '0', '1', // 设备名称内容(实际显示为"Bf10l")
2, DT_FLAGS, 0x05,
3, DT_APPEARANCE, 0x80, 0x01,
5, DT_INCOMPLT_LIST_16BIT_SERVICE_UUID, 0x12, 0x18, 0x0F, 0x18, // incomplete list of service class UUIDs (0x1812, 0x180F)
};
switch (slavePairing.state)
{
case PAIRING_TRIGGERED:
// 初始化BLE栈
u8 mac_public[6] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};; //自定义MAC地址
blc_ll_initStandby_module(mac_public);
blc_smp_smpParamInit();
blc_smp_setSecurityLevel_master(LE_Security_Mode_1_Level_3);
blc_smp_setBondingMode_master(Bondable_Mode);
blc_smp_setPairingMethods_master(LE_Secure_Connection);
blc_smp_setIoCapability_master(IO_CAPABILITY_NO_INPUT_NO_OUTPUT);
blc_smp_enableAuthMITM_master(0); // 禁用MITM
// uart_init(115200);
blc_ll_setAdvParam(
ADV_INTERVAL_30MS, // 广播间隔
ADV_INTERVAL_35MS,
ADV_TYPE_CONNECTABLE_UNDIRECTED,
OWN_ADDRESS_PUBLIC,
0,
NULL,
BLT_ENABLE_ADV_ALL, // 启用所有广播通道
ADV_FP_NONE
);
blc_ll_setAdvEnable(BLC_ADV_ENABLE);
master.state = PAIRING_IN_PROGRESS;
LedRG_Flag = LedRGF_Flag;
testLED_tick = clock_time();
break;
B80B匹配如下:
const u8 tbl_advData[] = {
7, DT_COMPLETE_LOCAL_NAME, 'B', 'l', 'r', '1', '0', '1',
2, DT_FLAGS, 0x05,
3, DT_APPEARANCE, 0x80, 0x01,
5, DT_INCOMPLETE_LIST_16BIT_SERVICE_UUID, 0x12, 0x18, 0x0F, 0x18,
};
const u8 tbl_scanRsp [] = {
7, DT_COMPLETE_LOCAL_NAME, 'B', 'l', 'r', '1', '0', '1'
};
switch (slavePairing.state)
{
case PAIRING_TRIGGERED:
Led_Mode = LedRedGreenFlash_Mode;
printf("bluetooth_paring --> Led_Mode = LedRedGreenFlash_Mode \r\n");
// 初始化BLE栈
u8 mac_public[6] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};; //自定义MAC地址
blc_ll_initStandby_module(mac_public); // 初始化待机模式 //mandatory
blc_ll_initAdvertising_module(); // 初始化广播模块
blc_ll_initSlaveRole_module();
// 配置安全请求发送参数
blc_smp_setSecurityLevel(LE_Security_Mode_1_Level_2); // 设置安全级别为无认证加密
// blc_smp_setSecurityLevel(No_Security); //No加密模式
blc_smp_setPairingMethods(LE_Secure_Connection); // 使用传统配对方式
// 配置GAP参数/广播参数
// 调用配置函数启用默认配置
app_switch_to_undirected_adv(0, NULL, 0);
blc_gap_setEventMask(GAP_EVT_MASK_DEFAULT |
(1<<GAP_EVT_SMP_CONN_ENCRYPTION_DONE)); // 启用加密完成事件
blc_smp_setBondingMode(Bondable_Mode); // 启用绑定存储(重连自动加密)
blc_smp_setIoCapability(IO_CAPABILITY_NO_INPUT_NO_OUTPUT); //无交互
bls_ll_setAdvEnable(1);
slavePairing.state = PAIRING_IN_PROGRESS;
break;
现在没有成功连接,请问1.配置是否正确?2.我们的SDK如何获取对方的MAC地址并加入白名单?3.如何确认连接成功?4.如何发送数据?5.后续如何每次开机自动扫描并与白名单确认合适后自动连接?
谢谢!
|
|