文章目录
1、背景需求
这是一个粉丝提出的DA14531蓝牙方案需求:
1)基于DA14531芯片作为主机和从机 (1.5V供电)
2)从机以3S周期发送定向广播,且每次广播结束后立即进入扩展睡眠
3)主机以3秒周期A/D采集,若采集值大于预设值则进入扩展睡眠。否则扫描从机的定向广播(若20秒内未扫描到从机的定向广播则结束扫描并继续以3秒周期A/D采样,若扫描到从机则与从机建立连接。注:在扫描期间A/D不采样)
4)建立连接后,从机将BUFFER1(20Byte数据+2Byte累加和)和BUFFER2(160Byte数据+2Byte累加和)的数据分别发送给主机(若主机检测到接收到的数据错误,则请求从机重传)。
主机收到正确的BUFFER1和BUFFER2的数据后,将BUFFER3(10Byte数据+2Byte累加和)和BUFFER4的数据(200Byte数据+2Byte累加和)分别发送给从机(若从机检测到数据错误,则请求主机重传,否则从机向主机发送接收正确响应,并且主机、从机断开连接(注:断开连接后,主机、从机各自继续以3秒周期A/D采样或定向广播)。
6)LED亮指示主机-从机正在数据通信。
7)功耗要求,正常工作:主机电流<1mA 从机电流< 5uA
2、需求分析与梳理
从机:
1.从机以3秒时间间隔进行广播,广播后进入扩展睡眠;
2.从机接收到主机发过来的数据时,上报salve_buffer数据给主机;
3.主机断开连接后,从机重复1的动作。
主机:
1)短按按键连接设备(按键端口为P01),进入流程有:唤醒系统、搜索设备、连接设备、发送数据、断开连接,进入扩展睡眠。
2)主机发送host_buffer数据给从机,按键在进入流程到流程为结束期间重复按按键无效。
3)LED指示灯在唤醒系统后为亮,进入扩展睡眠后为灭。
系统架构图:
3、硬件设计
USB接口,PC直接USB连接Dongle,内置USB转UART芯片,所以可以通过USB口直接升级。电路图为BLE芯片最小系统,外围电量简单,包括1个按键,1个LED、晶振、电感、电容等器件。
主要元器件
端口定义
4、从机软件设计
4.1从机工程文档
src文件夹
{
user_profile.c
user_profile.h
Config文件夹
[
da1458x_config_advanced.h
da1458x_config_basic.h
user_callback_config.h
user_config.h
user_modules_config.h
user_periph_setup.h
user_profiles_config.h
]
custom_profile文件夹
[
user_custs_config.c
user_custs_config.h
user_custs1_def.c
user_custs1_def.h
]
platform文件夹
[
user_periph_setup.c
]
}
4.2从机软件设计
BLE从机配置
功能列表
BLE服务列表
从机主要函数接口
4.3从机工程流程图
5、主机软件设计
5.1主机文档目录
src文件夹
{
user_ble_common.h
user_ble_gap.c
user_ble_gap.h
user_ble_gatt.c
user_ble_gatt.h
user_central_app.c
user_central_app.h
Config文件夹
[
da1458x_config_advanced.h
da1458x_config_basic.h
user_callback_config.h
user_central_config.h
user_config.h
user_modules_config.h
user_periph_setup.h
user_profiles_config.h
]
custom_profile文件夹
[
user_custs_config.c
user_custs_config.h
user_custs1_def.c
user_custs1_def.h
]
platform文件夹
[
user_periph_setup.c
]
}
5.2主机软件需求
BLE主机搜索器配置
功能列表
客户端BLE服务列表
5.3主机接口设计
User_ble_gap.c
user_ble_gap_start_scan | 启动搜索 |
---|---|
user_ble_gap_stop_scan | 停止搜索 |
user_ble_gap_parse_adv_data | 解析广播包数据 |
user_ble_gap_get_adv_num_elements | 获取广播包数据类型数量 |
user_ble_gap_connect | 连接设备 |
user_ble_cancel_connect | 取消连接设备 |
user_ble_gatt.c
user_ble_gatt_write | BLE主机向从机写入数据 |
---|---|
user_gatt_read_simple | BLE主机向从机读取数据 |
user_gatt_discover_all_services | BLE主机向从机读取所有的服务列表 |
user_gatt_parse_service | 解析广播数据接口 |
user_central_app.c
user_host_catch_rest_hndl | 主机处理 gatt回调函数 |
---|---|
handle_svc_ind | 主机处理BLE服务列表函数 |
connection_timeout_cb | 蓝牙连接,超时回调。 |
user_on_scanning_completed | 搜索结束回调 |
connection_timeout_cb | 连接超时回调 |
user_on_disconnect | 用户连接断开回调 |
user_on_connection | 用户连接完成回调 |
user_on_adv_report_ind | 广播列表回调 |
ble_scan_for_devices | 用户开启搜索器 |
scan_timeout_cb | 搜索器超时回调 |
5.4主机连接从机主要流程
(主机连接从机设备流程图)
5.5主机Notify接口
在gatt回调处理函数中 user_host_catch_rest_hndl
更多DA14531 SDK开发实战,请点击…