首页 > 其他分享 >CH573 CH582 CH579蓝牙从机(Peripheral)/主机(Central)例程讲解一(蓝牙主从机收发数据接口说明)

CH573 CH582 CH579蓝牙从机(Peripheral)/主机(Central)例程讲解一(蓝牙主从机收发数据接口说明)

时间:2023-09-26 15:37:40浏览次数:44  
标签:CH579 例程 主机 Peripheral 蓝牙 从机 BLE

原文链接:

https://www.cnblogs.com/risc5-ble/p/15994545.html

前言:

蓝牙从机,顾名思义,就是一个蓝牙从设备,可以不断发送广播等待与主机建立连接进行通信,建立连接后,可以通知主机,也可以收到主机发的信息,

一般使用BLE调试助手(安卓应用市场可下载),ios可使用Lightblue来进行调试通信等的基础功能。

如果用Central例程来连接Peripheral例程的话,需要将Peripheral例程中宏BLE_MAC设置成TRUE,否则的话Peripheral例程使用自带的MAC,与主机例程中的目标设备MAC不对应,主机不会发起连接。

首先讲解一下Peripheral例程的蓝牙收发接口吧,这样的话比较方便上手,大多数需要修改的都在peripheral.c中修改,

从机给主机发送数据例程是通过一个一秒执行一次的tmos任务来实现的,接口函数如下:

蓝牙从机的收发接口:

一、蓝牙从设备例程(Peripheral例)发送蓝牙数据:

tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD);

这个任务第一次调用是在蓝牙连接后,因为不连接调用它也没什么意义,

任务里会调用此蓝牙发送函数performPeriodicTask();

二、蓝牙从设备例程(Peripheral例)接收蓝牙数据:

接收主机的数据也已经包装好了,例程只打印输出了一段标识,代表接收到数据了,可以自己添加处理下,

三、蓝牙串口例程(BLE_UART)接收蓝牙数据:

四、此例程蓝牙发送数据的方式是将串口3收到的数据通过蓝牙发送给主机,当然也可以自己调用notify函数发送实现。

蓝牙主机的收发接口:

一、当主机是手机时,使用BLE调试助手:

                                     

二、当主机为CH573时:

蓝牙主机例程(Central)接收蓝牙数据:

                                  

蓝牙主机例程(Central)发送蓝牙数据:

此主机例程在不修改的情况下只适用于与Peripheral例程通信,原因是枚举服务是针对Peripheral例程服务去写的,

如果需要和别的从机通信可以将主机写成像手机那样枚举从机的所有服务,获取其handle进行通信,例程可发送邮件至[email protected]获取,

也可像主机例程这样,已经知晓从机的UUID根据UUID去获取handle进行通信。。

蓝牙包大小修改:

在config.h文件中BLE_BUFF_MAX_LEN默认是27,此时默认的MTU只有23,一包数据最大20字节,

默认例程实际传输就写的一个字节,可以修改gattprofile.h宏定义SIMPLEPROFILE_CHAR1_LEN为20,

如果想修改的再大一点的,那么有两种方法,一种是主机发起交互,还有种是从机发起交互,

主机分三种:手机电脑平板等设备,沁恒的蓝牙主机,其他厂商的蓝牙主机,

首先需要将从机端代码中BLE_BUFF_MAX_LEN可以直接修改到最大值251,

1.手机电脑平板等设备的话,直接通过软件去配置即可,

ps后期加图:在BLE调试助手右上角的三个点里面,

2.沁恒的蓝牙主机的话,将主从的BLE_BUFF_MAX_LEN修改为251,此时在连接后,协议栈底层会交互MTU为247,SIMPLEPROFILE_CHAR1_LEN修改为244,

若是别的从机可以主机调用交互:

attExchangeMTUReq_t req;
req.clientRxMTU = 247;
GATT_ExchangeMTU(centralConnHandle, &req, centralTaskId);   

3.其他厂商的主机,可以通过代码实现。

从机发起交互:

步骤1:BLE_BUFF_MAX_LEN需要修改为251,

步骤2:在初始化函数Peripheral_Init()中添加GATT_InitClient();

步骤3:在蓝牙连接后调用GATT_ExchangeMTU来修改MTU。

attExchangeMTUReq_t req;
req.clientRxMTU = 247;
GATT_ExchangeMTU(peripheralConnList.connHandle, &req, Peripheral_TaskID);  

标签:CH579,例程,主机,Peripheral,蓝牙,从机,BLE
From: https://www.cnblogs.com/BLEBaby/p/17730201.html

相关文章

  • CH573 CH579 CH582程序烧录讲解
    原文链接:https://www.cnblogs.com/risc5-ble/p/16865626.html 第一步,我们需要学会如何下载程序:WCH的蓝牙芯片CH57x/CH58x大部分是支持串口烧录、USB烧录和LINK烧录的,除了一些特殊的封装,如571K没有USB口,只支持串口免按键烧录,579F没有仿真口,不支持LINK烧录。仿真下载:ARM内核......
  • 蓝牙风扇CE证书FCC证书EN60335报告
    风扇CE证书风扇LVD证书风扇EMC证书风扇FCC证书风扇ROHS证书风扇REACH证书风扇SAA证书风扇ETL证书风扇能效报告,能效证书风扇RCM证书风扇KC证书风扇PSE证书风扇TUV证书风扇CB证书风扇SGS证书风扇METI证书风扇辐射测试风扇传导测试风扇静电测试风扇BQB证书风扇3C......
  • LZW字典压缩算法及例程
    字典压缩算法是一种数据压缩方法,其基本原理是将重复出现的字符串或者片段用一个短的代表符号来表示,从而减小数据的存储空间。字典压缩算法通常用于无损压缩数据。一种常见的字典压缩算法是Lempel-Ziv-Welch(LZW)算法。该算法通过构建和更新一个字典来实现压缩。初始时,字典中包含......
  • 蓝牙mesh1.1更新尝鲜
    蓝牙mesh协议1.1前言万众期待的蓝牙mesh协议版本时隔4年之久,在2023年9月终于迎来一轮新的版本更新,从2017年7月1.0初版协议发布,再到2019年1月1.0.1小版本更新。算起来整个蓝牙mesh协议已经很久没有更新了,那么这次蓝牙联盟更新的这个大版本协议有什么令人期待的呢?又有什么大招被蓝......
  • CH573 CH582 CH579外设RTC使用讲解
    一.RTC可以选择使用外部32768HZ晶振或芯片内部32768HZ(区别是精度不同)外部:20ppm以内外部:0.04%-0.1%(400ppm-1000ppm)。LClk32K_Select(Clk32K_LSI);//启用内部32K精度0.04%-0.1%(400ppm-1000ppmLClk32K_Select(Clk32K_LSE);//启用外部32K精......
  • 【WCH蓝牙系列芯片】-基于CH582开发板—四种低功耗模式电流测试
    ---------------------------------------------------------------------------------------------------------------------在WCH沁恒官方提供的CH583的EVT资源包中,找到BLE文件中找到PW这个工程文件,这是一个系统睡眠模式并唤醒例程;其中GPIOA_5作为唤醒源,共4种功耗等级。芯片提......
  • FreeRTOS例程开发
    环境配置下载官方源码https://www.freertos.org/找到这个,他就是visualstudio示例demo,我们主要在这个的基础上修改下载visiostudiohttps://visualstudio.microsoft.com/zh-hans/安装时不需要额外任何插件,打开项目会提示你安装c/c++,这样安的快打开第一步圈的那个WIN3......
  • 《安富莱嵌入式周报》第303期:微软推出嵌入式安全物联网RTOS CHERIoT,超强的产品级开源
     更新一期视频教程:DSP视频教程第11期:插补算法,曲线拟合丝滑顺畅,统计函数和基础函数加速实现,汇集SIMD,饱和和MAC乘累加应用实战(2023-02-12)视频版:https://www.bilibili.com/video/BV17j411N7Cr/ 1、微软推出嵌入式安全物联网RTOSCHERIoT知识补充:CHERI的全称是CapabilityHardware......
  • BMS电池管理系统的蓝牙芯片 国产高性能 低功耗蓝牙Soc芯片PHY6222
    电池管理系统是对电池进行监控与控制的系统,将采集的电池信息实时反馈给用户,同时根据采集的信息调节参数,充分发挥电池的性能。但是,前技术中,在管理多个电池时,需要人员现场调试与设置,导致其检查、维护与更新相当不方便。而且,针对电池组的工作性能、电池老化情况、使用寿命等信息,需要......
  • 蓝牙模式修改
    常见的三种蓝牙模式:BluetoothAdapter.SCAN_MODE_NONE:没有扫描模式。功能:蓝牙适配器不接受扫描请求,设备也无法被其他设备发现。BluetoothAdapter.SCAN_MODE_CONNECTABLE:可连接模式。功能:蓝牙适配器可以接受连接请求,但不会被其他设备发现。BluetoothAdapter.SCAN_MOD......