勤基科技 王泽行
本文主要讲解如何对特定BLE从机来开发主机BLE的代码调试,以实现主从机的数据通信,主从机芯片是Dialog的DA14585,并且基于官方串口透传(DSPS)的demo:
DA14585_DSPS\projects\target_apps\dsps\dsps_host\Keil_5。
该demo在官网https://support.dialog-semiconductor.com下DA14585的Reference designs板块能够下载。
一、在从机工程中,通信只有一个服务,但是这一个服务包括两个特征,一个用于接收数据,一个用于发送数据如下:
#define DEF_SVC1_UUID_128 {0xfb,0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00}
#define DEF_SVC1_ADC_VAL_1_UUID_128 {0xfb,0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xf2, 0xff, 0x00, 0x00}//R
#define DEF_SVC1_ADC_VAL_2_UUID_128 {0xfb,0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x00, 0xf1, 0xff, 0x00, 0x00}//T
const struct prf_char_def spsc_sps_char_16[SVC1_CHAR_MAX] =
{
[SVC1_ADC_VAL_1_CHAR] = {DEF_SVC1_ADC_VAL_1_UUID_16, ATT_MANDATORY, ATT_CHAR_PROP_NTF|ATT_CHAR_PROP_RD},
[SVC1_ADC_VAL_2_CHAR] = {DEF_SVC1_ADC_VAL_2_UUID_16, ATT_MANDATORY, ATT_CHAR_PROP_WR|ATT_CHAR_PROP_RD},
};
SVC1_ADC_VAL_1_UUID_128用于从机发送数据给主机,且以notify方式发送
SVC1_ADC_VAL_2_UUID_128用于主机发送数据给从机,且以GATTC_WRITE方式发送
二、在通过上面第一步添加好特征UUID及句柄后,我们需要在spsc_sps_char_desc中定义针对特征的描述符,如下:
/// State machine used to retrieve SPS service characteristic description informationconst struct prf_char_desc_def spsc_sps_char_desc[SVC1_DESC_MAX] =
{
///SPS Client Config
[SVC1_ADC_VAL_1_CLI_CFG] = {ATT_DESC_CLIENT_CHAR_CFG, ATT_MANDATORY, SVC1_ADC_VAL_1_CHAR},
[SVC1_ADC_VAL_1_USER_CFG] = {ATT_DESC_CHAR_USER_DESCRIPTION, ATT_MANDATORY, SVC1_ADC_VAL_1_CHAR},
[SVC1_ADC_VAL_2_USER_CFG] = {ATT_DESC_CHAR_USER_DESCRIPTION, ATT_MANDATORY, SVC1_AD