网站细节,网站设计的建议,兰州最新情况,软件工程中做视频网站这里写目录标题 1.DA14531简介2.蓝牙传感器开发3.主要用户应用代码3.1.传感器数据结构体3.2.配置广播间隔3.3.主要用户代码说明3.3.1.主要函数接口3.3.2.打印MAC地址3.3.3.低功耗模式3.3.4.广播数据底层配置3.3.5.刷新传感器数据 1.DA14531简介
DA14531是基于全球尺寸最小、功… 这里写目录标题 1.DA14531简介2.蓝牙传感器开发3.主要用户应用代码3.1.传感器数据结构体3.2.配置广播间隔3.3.主要用户代码说明3.3.1.主要函数接口3.3.2.打印MAC地址3.3.3.低功耗模式3.3.4.广播数据底层配置3.3.5.刷新传感器数据 1.DA14531简介
DA14531是基于全球尺寸最小、功耗最低的蓝牙5.1系统级芯片(SOC)最小尺寸1.7X2.05x0.5mm功耗23.75uA/MHz且TX发射电流3.5 mA所属行业最低它应用范围广泛特别是在功耗和封装都要求比较高的场合。
2.蓝牙传感器开发
工程路径\Source\DA14531\projects\target_apps\ble_examples\ble_app_peripheral 固件输出路径Source\DA14531\projects\target_apps\ble_examples\ble_app_peripheral\Keil_5\out_DA14531\Output\ DA14531_Sensor.bin 传感器特性
名称范围 默认参数系统①低功耗系统 ②非低功耗系统功耗不广播状态 1uA广播状态200ms0.14mA广播间隔时间间隔广播20ms-2000ms广播数据设备名称 “Sensor”制造商数据FF前两字节公司IDFFC1A数据uint16_t1001B数据uint16_t2001C数据uint16_t3001D数据uint16_t4001E数据uint16_t5001F数据uint16_t6001G数据uint16_t7001
3.主要用户应用代码
3.1.传感器数据结构体
typedef struct { uint16_t SensorA; uint16_t SensorB; uint16_t SensorC; uint16_t SensorD; uint16_t SensorE; uint16_t SensorF; uint16_t SensorG; }Sensor_Data_t;
3.2.配置广播间隔
1#include “user_config.h” 中 /// Minimum interval for advertising .intv_min MS_TO_BLESLOTS(200), // 200ms
/// Maximum interval for advertising
.intv_max MS_TO_BLESLOTS(200), // 200ms2配置设备名称#define USER_DEVICE_NAME “Sensor” 配置公司ID #define USER_COMPANY_ID 0xFFC1
3.3.主要用户代码说明
3.3.1.主要函数接口
函数接口 说明 user_app_adv_undirect_complete() 广播完成回调函数 user_app_on_db_init_complete() BLE数据库初始化完成回调函数 user_app_adv_start() 开启广播函数 user_app_adv_stop() 关闭广播函数 app_easy_gap_undirected_advertise_start_create_msg 广播数据接口 user_RsfreshSensorData() 传感器数据刷新 user_app_before_sleep() 睡眠前回调函数 user_app_resume_from_sleep() 唤醒时回调函数
3.3.2.打印MAC地址
#if defined (DA14531) extern struct bd_addr dev_bdaddr; uint8_t bd_address[6] CFG_NVDS_TAG_BD_ADDRESS;
arch_printf(OTP addr: %02x %02x %02x %02x %02x %02x\r\n,dev_bdaddr.addr[0],dev_bdaddr.addr[1],dev_bdaddr.addr[2],dev_bdaddr.addr[3],dev_bdaddr.addr[4],dev_bdaddr.addr[5]);arch_printf(nvds addr: %02x %02x %02x %02x %02x %02x\r\n,bd_address[0],bd_address[1],bd_address[2],bd_address[3],bd_address[4],bd_address[5]);#endif arch_printf(“main_loop\r\n”);
3.3.3.低功耗模式
设置为低功耗模式 arch_set_sleep_mode(ARCH_EXT_SLEEP_ON); 设置为正常模式 arch_set_sleep_mode(ARCH_SLEEP_OFF);
3.3.4.广播数据底层配置 uint8_t dev_name_len 0;uint8_t dev_manu_len 0;uint8_t adv_data_len 0;uint8_t scan_rsp_data_len 0;uint8_t adv_data[31];uint8_t scan_rsp_data[31];// Device Namedev_name_len strlen(USER_DEVICE_NAME);dev_manu_len sizeof(device_info.manu);arch_printf(adv_name:%s\r\n,USER_DEVICE_NAME);adv_data_len 0;if(dev_name_len){adv_data[adv_data_len 0] dev_name_len 1;adv_data[adv_data_len 1] GAP_AD_TYPE_COMPLETE_NAME;memcpy(adv_data[adv_data_len 2],USER_DEVICE_NAME,dev_name_len);adv_data_len dev_name_len 2;}if(dev_manu_len){adv_data[adv_data_len 0] dev_manu_len 1;adv_data[adv_data_len 1] GAP_AD_TYPE_MANU_SPECIFIC_DATA;memcpy(adv_data[adv_data_len 2],device_info.manu,dev_manu_len);adv_data_len dev_manu_len 2;}adv_cmd-info.host.adv_data_len adv_data_len;memcpy((cmd-info.host.adv_data[0]), adv_data, adv_data_len);arch_printf(adv_data_len:%d\r\n,adv_data_len);show_reg(adv_data,adv_data_len,1);adv_cmd-info.host.scan_rsp_data_len scan_rsp_data_len;memcpy((cmd-info.host.scan_rsp_data[0]), scan_rsp_data, scan_rsp_data_len);//arch_printf(scan_rsp_data_len:%d\r\n,scan_rsp_data_len);//show_reg(scan_rsp_data,scan_rsp_data_len,1);3.3.5.刷新传感器数据
static void user_RsfreshSensorData(void) { ///arch_printf(“Rsf\r\n”);
// 获取传感器信息
Sensor.SensorA;
Sensor.SensorB;
Sensor.SensorC;
Sensor.SensorD;
Sensor.SensorE;
Sensor.SensorF;
Sensor.SensorG;// 更新数据
User_data.CycleTime;
if(User_data.CycleTime5)
{User_data.CycleTime 0;if(memcmp(Sensor,bacSensor,sizeof(Sensor))){device_info.manu[0] (uint8_t)USER_COMPANY_ID;device_info.manu[1] (uint8_t)(USER_COMPANY_ID8);device_info.manu[2] Sensor.SensorA;device_info.manu[3] Sensor.SensorA;device_info.manu[4] Sensor.SensorB;device_info.manu[5] Sensor.SensorB;device_info.manu[6] Sensor.SensorC;device_info.manu[7] Sensor.SensorC;device_info.manu[8] Sensor.SensorD;device_info.manu[9] Sensor.SensorD;device_info.manu[10] Sensor.SensorE;device_info.manu[11] Sensor.SensorE;device_info.manu[12] Sensor.SensorF;device_info.manu[13] Sensor.SensorF;device_info.manu[14] Sensor.SensorG;device_info.manu[15] Sensor.SensorG;user_app_adv_stop(); // 停止广播后会重新开启广播 请看}
}}