富芮坤FR801XH作为主机连接SYD8811
SYD8811使用开发板,代码使用的是透传例程:Source Code\SYD8811_ble_peripheral\1.SYD8811_BLE_UART_notifyen_open_power
FR801XH芯片丝印如下:
两块板子实物路如下:
FR801XH上位机软件<FreqChip_Download.exe>以及烧录步骤如下:
这里使用的工程为:FR801xH-SDK-master\examples\dev1.0\ble_multi_role\kei
简单按照如下步骤修改主机的代码:
1.在void app_gap_evt_cb(gap_event_t *p_event)函数中修改扫描结构中判断设备的逻辑:
case GAP_EVT_ADV_REPORT:{uint8_t scan_name[] = "SYD_UART";// co_printf("data:%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\r\n",p_event->param.adv_rpt->data[0],p_event->param.adv_rpt->data[1],p_event->param.adv_rpt->data[19],\
// p_event->param.adv_rpt->data[20],p_event->param.adv_rpt->data[21],p_event->param.adv_rpt->data[22],p_event->param.adv_rpt->data[23],p_event->param.adv_rpt->data[24],\
// p_event->param.adv_rpt->data[25],p_event->param.adv_rpt->data[26]);//if(memcmp(event->param.adv_rpt->src_addr.addr.addr,"\x0C\x0C\x0C\x0C\x0C\x0B",6)==0)// if (p_event->param.adv_rpt->data[0] == 0x05// && p_event->param.adv_rpt->data[1] == GAP_ADVTYPE_LOCAL_NAME_COMPLETE// && memcmp(&(p_event->param.adv_rpt->data[2]), scan_name, 0x12) == 0)if (p_event->param.adv_rpt->data[0] == 0x02&& p_event->param.adv_rpt->data[1] == GAP_ADTVYPE_FLAGS&& memcmp(&(p_event->param.adv_rpt->data[19]), scan_name, 0x08) == 0){gap_stop_scan();co_printf("evt_type:0x%02x,rssi:%d\r\n",p_event->param.adv_rpt->evt_type,p_event->param.adv_rpt->rssi);co_printf("content:");show_reg(p_event->param.adv_rpt->data,p_event->param.adv_rpt->length,1);gap_start_conn(&(p_event->param.adv_rpt->src_addr.addr),p_event->param.adv_rpt->src_addr.addr_type,12, 12, 0, 300);}}break;
2.在void app_gap_evt_cb(gap_event_t *p_event)函数中修改连接上设备好查找的服务:
case GAP_EVT_MASTER_CONNECT:{co_printf("master[%d],connect. link_num:%d\r\n",p_event->param.master_connect.conidx,gap_get_connect_num());//master_link_conidx = (p_event->param.master_connect.conidx);#if 0if (gap_security_get_bond_status())gap_security_enc_req(p_event->param.master_connect.conidx);elsegap_security_pairing_req(p_event->param.master_connect.conidx);#else// extern uint8_t client_id;// gatt_discovery_all_peer_svc(client_id,p_event->param.master_encrypt_conidx);uint8_t group_uuid[]={0x01,0x00};gatt_discovery_peer_svc(client_id,p_event->param.master_encrypt_conidx,2,group_uuid);#endifmr_central_start_scan();}break;
3.static uint16_t mr_central_msg_handler(gatt_msg_t *p_msg)函数中查找到服务后使能notify等操作:
case GAP_EVT_MASTER_CONNECT:{co_printf("master[%d],connect. link_num:%d\r\n",p_event->param.master_connect.conidx,gap_get_connect_num());//master_link_conidx = (p_event->param.master_connect.conidx);#if 0if (gap_security_get_bond_status())gap_security_enc_req(p_event->param.master_connect.conidx);elsegap_security_pairing_req(p_event->param.master_connect.conidx);#else// extern uint8_t client_id;// gatt_discovery_all_peer_svc(client_id,p_event->param.master_encrypt_conidx);uint8_t group_uuid[]={0x01,0x00};gatt_discovery_peer_svc(client_id,p_event->param.master_encrypt_conidx,2,group_uuid);#endifmr_central_start_scan();}break;
到此代码修改结束!
主从都下载好后双方的打印如下:
可以看到能够正确连接SYD8811,但是notify使能失败!
抓包后发现是因为FR801XH的芯片的ATT命令和手机的有点差别,造成和SYD8811不兼容!
目前先到这里,以后有需要再分析!
本文对应的资料包为"FR801XH连接SYD8811资料合集20220511 144402.7z",如果有需要,请和博主联系!
富芮坤FR801XH作为主机连接SYD8811相关推荐
- 富芮坤FR801xH使用SDK开发蓝牙GATT协议栈教程
文章目录 一.FR801xH蓝牙芯片介绍 1.1 芯片外设资源 1.2 部分参数 1.3 芯片架构 二.开发(验证)板介绍 2.1 开发板资源 2.2 开发板烧录和串口调试方式 三.蓝牙协议栈SDK介 ...
- 富芮坤FR801xH蓝牙协议栈启动流程和notify实现温度数据主动上传
文章目录 一.蓝牙协议栈启动流程 1.1 初始化代码 1.2 初始化流程 1.3 回调函数里的初始化 二.notify实现 2.1 notify介绍 2.2 notify实现 2.3.1 定义数据 2 ...
- 富芮坤蓝牙FR801xH开发环境搭建
富芮坤蓝牙FR801xH方案开发资源包网盘下载链接:网盘 提取码:30qu 搭建过程: 安装Keil开发工具:mdk525.exe 可以从Keil官网下载:http://www.keil.com/fi ...
- 基于富芮坤fr8016 蓝牙5.0 芯片设计的BLE HID Joystick 游戏摇杆设备
文章目录 ble hid 学习笔记 HID报告描述符与BLE HID profile之间关系 1.HID报告描述符 富芮坤fr8016 设计Joystick例子 1.描述X轴Y轴Z轴 2.描述按钮 3 ...
- 基于富芮坤的FR801 BLE芯片开发
基于富芮坤的FR801 BLE芯片开发 前言:本篇主要讲解如何利用官方的SDK和ble 协议栈知识开发所需的功能 注意:因为官方是每个工程都导入同一个底层-所以一旦修改了components ,全部工 ...
- 富芮坤FR8008A开发环境
1. 富芮坤FR8008A介绍 FR8008A官网有详细介绍 首页-企业官网 2.富芮坤FR8008A开发资料 keil软件: https://www.keil.com/download/produc ...
- 【富芮坤】 RF801xH的rost demo添加 OTA 功能
[富芮坤] RF801xH的rost demo添加 OTA 功能: 官方的rost demo 并没有蓝牙的OTA功能.需要自己修改添加OTA功能进去. 操作步骤 步骤一:修改官方工程配置否则编译不过: ...
- 富芮坤fr8008gp lvgl遇坑和解法:卡死在lvgl定时器中;SWD接口配置;
卡死在lvgl定时器中 官方提供的lvgl的demo在gui_main函数中如下设置定时器并调用window_manager_init函数初始化各个界面: /* Implement and regis ...
- 富芮坤FR8008A II2C驱动之AW9523B
1. AW9523B简介 AW9523B是一款I2C接口.16路呼吸灯,每路可作扩展 GPIO 控制器.上电后,16 路 GPIO 口默认为输出模式,其输出默认值可通过 2 位器件地址进 ...
最新文章
- android 代码打开权限,android开发权限询问的示例代码
- 来个“云”毕业典礼,这些装扮太硬核了!
- honeywell新风系统控制面板说明_新风系统——不开窗也能清新呼吸
- 编写高性能的托管应用程序:入门
- 计算机安全概论论文,计算机安全探讨论文毕业论文(7篇).doc
- gif tools
- 资源放送丨《 MySQL中的索引探究 - 2020云和恩墨大讲堂》PPT视频
- find_package()的查找*.cmake的顺序
- 盒子横向排列-初识浮动Float(HTML、CSS)
- 奇迹单机版服务器修改,大天使之剑奇迹网页游戏 一键服务端单机版/架设教程/修改方法...
- 图之查找关键路径(python)实现
- 柯特斯公式的matlab代码,牛顿-柯特斯公式C语言的实现.pdf
- 转换IC CD7833CZ:4x41W汽车音响功率放大电路
- python爬取公众号阅读量_分享一个牛逼的Python项目:公众号文章爬虫
- gis与计算机科学之间的联系,GIS地理信息系统课程论文 地理信息系统与其他学科的关系及应用前景...
- ROS仿真环境中实现自主导航
- win10禁用笔记本原本键盘
- C++ 策略模式的具体案例与优缺点
- windows平台下静态库(.lib)和动态库(.dll)使用
- 公司要我做报表,只会随机数据图表的我感到危机感,来试试Python读取csv
热门文章
- laravel 上传图片 或word或excel储存不了后缀
- android 实现拍照,Android开发拍照实现
- 运用MACD捕捉最佳买卖点的一种简易方法
- 蓝牙模块各种工作模式
- 求排列数 C语言 PTA
- ipad 全民打飞机微信登录不了 显示服务器繁忙,我手机用的是QQ浏览器,两天前登陆时页面老是出现网络不给力,请稍后再试的提示,客服也问了也关机重启过...
- Mysql出现which is not functionally dependent on columns in GROUP BY clause的解决办法
- 芯片测试问题的一些理解
- 迷宫问题【数据结构实验报告】
- Unity 声音组件 Audio Source(声源)和Audio Listener(声音接收者)