应该是512K,flash.
1.准备工具
BK3431Q开发板、通用联机下载器
2.软件工具
keil arm,版本V5.12以上
通用联机下载器上位机软件Beken_ProgramVer4
二、编译
1.keil的安装
需要在keil官网下载安装support for ARM7/9支持包。
2.编译工程
编译成功后在目录\output\app下,会生成几个bin文件,用联机下载器烧录带CRC的bin文件,如图的bin
三、烧录
1.烧录接口
硬件SPI接口
2.烧录程序
打开联机下载器上位机软件Beken_ProgramVer4.此时界面是灰色的
插上连机下载器后,识别下载器,界面正常
选择SIP CHIP页面
下载成功显示
四、运行
用BLE Tool工具调试
五,调试
1.蓝牙名称在哪里修改
user_config.h里面有两个宏定义
APP_DFLT_DEVICE_NAME
APP_SCNRSP_DATA
修改这两个宏,可以修改蓝牙名称
2.UUID怎么修改?
GATT的用户自定义UUID,是FFF0服务,在fff0s.h下修改一下的三个宏定义,可以修改UUID值
ATT_USER_SERVER_FFF0=ATT_UUID_16(0xFFF0), ATT_USER_SERVER_CHAR_FFF1=ATT_UUID_16(0xFFF1), ATT_USER_SERVER_CHAR_FFF2=ATT_UUID_16(0xFFF2),
3.修改UUID读写属性
修改fff0s.c
const struct attm_desc fff0_att_db[FFF0S_IDX_NB] = { // FFF0 Service Declaration [FFF0S_IDX_SVC] = {ATT_DECL_PRIMARY_SERVICE, PERM(RD, ENABLE), 0, 0}, [FFF0S_IDX_FFF2_LVL_CHAR] = {ATT_DECL_CHARACTERISTIC, PERM(RD, ENABLE), 0, 0}, // Characteristic Value [FFF0S_IDX_FFF2_LVL_VAL] = {ATT_USER_SERVER_CHAR_FFF2,PERM(WRITE_COMMAND, ENABLE), PERM(RI, ENABLE), FFF0_FFF2_DATA_LEN *sizeof(uint8_t)}, // fff1 Level Characteristic Declaration [FFF0S_IDX_FFF1_LVL_CHAR] = {ATT_DECL_CHARACTERISTIC, PERM(RD, ENABLE), 0, 0}, // fff1 Level Characteristic Value [FFF0S_IDX_FFF1_LVL_VAL] = {ATT_USER_SERVER_CHAR_FFF1, PERM(WRITE_COMMAND, ENABLE) , PERM(RI, ENABLE), FFF0_FFF1_DATA_LEN * sizeof(uint8_t)}, // fff1 Level Characteristic - Client Characteristic Configuration Descriptor [FFF0S_IDX_FFF1_LVL_NTF_CFG] = {ATT_DESC_CLIENT_CHAR_CFG, PERM(RD, ENABLE)|PERM(WRITE_REQ, ENABLE), 0, 0}, };/// Macro used to retrieve permission value from access and rights on attribute.
4.广播间隔修改
修改user_config.h
//广播参数配置 /// Advertising channel map - 37, 38, 39 #define APP_ADV_CHMAP (0x07) /// Advertising minimum interval - 100ms (160*0.625ms) #define APP_ADV_INT_MIN (80) /// Advertising maximum interval - 100ms (160*0.625ms) #define APP_ADV_INT_MAX (80) /// Fast advertising interval #define APP_ADV_FAST_INT (32) ———————————————— 版权声明:本文为CSDN博主「心跳包」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/dop102/article/details/106997922
5.连接间隔参数修改
连接间隔关系到蓝牙功耗,广播间隔越大,功耗越小
1//最小连接间隔 #define BLE_UAPDATA_MIN_INTVALUE 10 //最大连接间隔 #define BLE_UAPDATA_MAX_INTVALUE 10 //连接Latency #define BLE_UAPDATA_LATENCY 0 //连接超时 #define BLE_UAPDATA_TIMEOUT 600
6.蓝牙连接成功的回调函数
连接成功回调函数是gapc_connection_req_ind_handler,程序运行到这里,说明蓝牙连接成功。
7.蓝牙断开连接回调函数
蓝牙断开回调函数是gapc_disconnect_req_ind_handler,程序运行到这里,说明蓝牙已经断开。
8.蓝牙设备如何发数据到手机端?
以GATT工程为例,FFF0服务中,FFF1为nodify属性,用nodify发送数据到手机。函数app_fff1_send_lvl可以发送数据到手机端。 在app_fff0.c static int fff1_level_upd_handler(ke_msg_id_t const msgid, struct fff0s_fff1_level_upd_rsp const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) { if(param->status == GAP_ERR_NO_ERROR) { //uint8_t buf[128]; //memset(buf, 0xcc, 128); //app_fff1_send_lvl(buf, 128); app_fff0_env.send_status=0; } return (KE_MSG_CONSUMED); }
9.如何接受手机发下来的数据?
以GATT工程为例,FFF0的服务中,FFF2为write属性,用write从手机发数据到蓝牙设备
函数接口fff2_writer_req_handler接收数据后,并打印出来
static int fff2_writer_req_handler(ke_msg_id_t const msgid, struct fff0s_fff2_writer_ind *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) { // Drop the message UART_PRINTF("FFF2 param->value = 0x "); for(uint8_t i = 0;i < param->length;i++) { UART_PRINTF("%02x ",param->fff2_value[i]); } UART_PRINTF("\r\n"); return (KE_MSG_CONSUMED); }
10.如何打开芯片的sleep模式
打开芯片的sleep模式,可以大大降低芯片的功耗,但是由于芯片频繁休眠,可能对某些外部响应不及时,比如GPIO中断响应慢,按键检测不及时,UART数据漏数据等等。
在keil工程中,打开rwip_config.h文件,在configuration wizard页面中,把CFG_SLEEP打勾即可打开。