前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蓝牙芯片----BK34341开发笔记------快速入门(2)

蓝牙芯片----BK34341开发笔记------快速入门(2)

作者头像
心跳包
发布2020-08-31 15:17:08
2.4K0
发布2020-08-31 15:17:08
举报
文章被收录于专栏:嵌入式智能硬件

应该是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值

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
//广播参数配置
/// 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)

5.连接间隔参数修改

连接间隔关系到蓝牙功耗,广播间隔越大,功耗越小

代码语言:javascript
复制
//最小连接间隔
#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

代码语言:javascript
复制
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接收数据后,并打印出来

代码语言:javascript
复制
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打勾即可打开。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档