富芮坤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 0

            if (gap_security_get_bond_status())

                gap_security_enc_req(p_event->param.master_connect.conidx);

            else

                gap_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);

#endif

            mr_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 0

            if (gap_security_get_bond_status())

                gap_security_enc_req(p_event->param.master_connect.conidx);

            else

                gap_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);

#endif

            mr_central_start_scan();

        }

        break;

到此代码修改结束!

主从都下载好后双方的打印如下:

在这里插入图片描述

可以看到能够正确连接SYD8811,但是notify使能失败!

抓包后发现是因为FR801XH的芯片的ATT命令和手机的有点差别,造成和SYD8811不兼容!

在这里插入图片描述

目前先到这里,以后有需要再分析!

本文对应的资料包为"FR801XH连接SYD8811资料合集20220511 144402.7z",如果有需要,请和博主联系!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: 要在Keil C中安装SYD8110,首先需要确保已经从官方网站下载了SYD8110的安装程序。然后按照以下步骤进行安装: 1. 打开Keil C软件,点击菜单栏的“Project”(项目)选项,然后选择“Manage Project Items”(管理项目项)。 2. 在弹出的窗口中,点击“Add”(添加)按钮,然后浏览到下载的SYD8110安装程序的路径,并选择它。 3. 点击“OK”(确定)按钮,Keil C将开始安装SYD8110。 在安装过程中,可能会询问是否安装绑定的驱动程序或其他相关的软件。根据需要进行选择,并按照提示完成安装。 安装完成后,SYD8110将被添加到Keil C的项目项中。您可以在项目中使用SYD8110提供的功能和库文件来进行开发和测试。 如果在安装过程中遇到问题,建议查阅Keil C和SYD8110的官方文档或寻求官方技术支持以获得进一步的帮助。 ### 回答2: 对于Keil C官方安装Syd8110,您可以按照以下步骤进行操作: 1. 首先,确保您已经成功下载并安装了Keil C开发环境。您可以从Keil官方网站上下载最新版本的Keil C。 2. 确保您的计算机已经连接了Syd8110设备。这可以通过USB线连接设备到计算机上,或者其他适当的连接方式。 3. 打开Keil C开发环境,并创建一个新的工程,或者打开一个现有的工程。在Keil C中,您可以选择“File”(文件)菜单,然后选择“New Project”(新建工程),或者选择“Open Project”(打开工程)。 4. 在工程中,选择“Project”(工程)菜单,然后选择“Manage Project Items”(管理工程项目)。这将打开一个新的窗口,列出了当前工程的项目项。 5. 在“Manage Project Items”窗口中,选择“Devices”(设备)选项卡。在这个选项卡中,您可以找到并选择Syd8110设备。 6. 在选择Syd8110设备后,您可以选择其他设置,如操作系统、启动文件等。根据您的需求,进行适当的设置。 7. 完成上述设置后,保存并构建工程。选择“Project”(工程)菜单,然后选择“Build Project”(构建工程)。Keil C将会编译您的代码,并生成可执行文件。 8. 最后,您可以通过将可执行文件烧录到Syd8110设备上,进行测试和调试。具体的烧录方法会因设备型号而有所不同,请参考Syd8110设备的用户手册或者Keil C的官方文档,了解如何烧录可执行文件到设备上并进行运行。 以上是关于Keil C官方安装Syd8110的大致步骤,希望对您有所帮助。如果您在操作过程中遇到任何问题,建议您参考官方文档或者联系Keil C的技术支持团队以获得进一步的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值