CH58x 是单芯片解决方案,控制器,主机,配置文件和应用程序均在 CH58x 上实现。蓝牙应用程序开发的结构:
1、 Application(应用层):业务代码
2、 Profiles(GATT 配置文件):服务/特征值的数据定义
3、 BLE Stack(蓝牙协议栈):通讯数据包,调用 API解析
4、 HAL / StdPeriphDriver(硬件抽象层):调用封装好的API
5、 RISC-V Core + 外设硬件(芯片本身)
在开发层面,提供六个组件:
1、TMOS:任务管理系统,Task Management Operating System。低功耗蓝牙协议栈以及应用均基于 TMOS。TMOS是一个控制循环,通过 TMOS 可设置事件的执行方式。对于一个任务,独一无二的任务 ID,任务的初始化以及任务下可执行的事件都是不可或缺的。
2、HAL:硬件抽象层, Hardware Abstraction Layer,就是把寄存器操作封装成统一 API 的那一层。
3、BLE Stack: 协议栈,是沁恒预编译好的闭源支持库,通过API调用。
4、Profiles:定义数据模型,分标准Profile和私有Profile。私有的Profile,每种数据类型有唯一的识别ID,就是UUID。书写Profile必须按照约定的注册接口实现。
5、RISC-V Core:单片机本身的RISC-V4A 内核
·Application:应用层,业务逻辑处理
软件包提供了四个 GAP 配置文件,用于对应蓝牙通讯中设备的四种不同的角色:
·Peripheralrole(从机)
·Centralrole(主机)
·Broadcasterrole(广播者)
·Observerrole(观察者)
1、Peripheralrole(从机)
蓝牙设备在成为从机之前,需要不断向外广播,表明自己是等待连接的蓝牙设备,等待别人连接。一旦连接成功,就可以双向收发数据。初始化时,使用GAPRole_PeripheralInit()函数。
需要配置:广播间隔、广播数据/扫描响应内容、连接参数(最小/最大间隔、超时、slave latency)。
2、Centralrole(主机)
工作时,主动扫描周围其他蓝牙设备发出的广播包,连接成功后,可实现双向收发数据。主机可同时连接多个从机。初始化时,使用GAPRole_CentralInit()函数。
主机典型的工作流程是:扫描→连接→遍历Service→遍历Characteristic→记录 handle→使能 notify→读写。
需要配置:扫描模式与时长 TGAP_DISC_SCAN、发起连接的超时与连接参数。
3、Broadcasterrole(广播者)
不间断向外发送广播,无论谁连接它,都不回应。初始化时,使用GAPRole_BroadcasterInit()函数。
需要配置:广播类型、是否扩展广播、发射功率。
4、Observerrole(观察者)
只扫描接收广播包,不发起连接。初始化时,使用GAPRole_ObserverInit()函数。
需要配置:扫描模式(被动/主动)、扫描窗口与间隔。
我要赚赏金
