微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 2541不定时停止广播现象

2541不定时停止广播现象

时间:10-02 整理:3721RD 点击:

大家好,我用的是从机的程序。

其中我是这样配置的,协议栈用的是1.4.0的

#define DEFAULT_DISCOVERABLE_MODE             GAP_ADTYPE_FLAGS_GENERAL

 uint16 gapRole_AdvertOffTime = 0;

 GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );

为什么模块会不定时的停止广播?这里先谢过各位大牛的指点了。

若是要保持无限广播的话,可以先设置TGAP_GEN_DISC_ADV_MIN = 0。GAP_SetParamValue(TGAP_GEN_DISC_ADV_MIN,0).再使能广播。

另外可以参考论坛相关帖子 http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/p/62121/154912.aspx

学习了。

谢谢 Susan Yang ,我试一下

多谢指导,我是想有广播间隔,但是不是广播一段时间后就停止广播的

那您可以先设置你每次的广播时间,TGAP_GEN_DISC_ADV_MIN = 10000。GAP_SetParamValue(TGAP_GEN_DISC_ADV_MIN,10000)。

然后再设置关闭广播的持续时间,如20秒:

gapRole_AdvertOffTime = 20000。

GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );

Susan Yang 谢谢你耐心的解答。

我还有一个问题想问您一下,在从机程序中有这样一段说明

  // Set advertising interval
  {
    uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;

    GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MIN, advInt );
    GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MAX, advInt );
    GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MIN, advInt );
    GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MAX, advInt );
  }

这不是修改广播间隔吗?

TGAP_GEN_DISC_ADV_MIN   和  TGAP_GEN_DISC_ADV_INT_MIN两者有什么关系。

或者说我要周期性广播按您上面说的方法没错可以。

是不是这样修改也可以

1. // What is the advertising interval when device is discoverable (units of 625us, 160=100ms)
    #define DEFAULT_ADVERTISING_INTERVAL          160

2. #define DEFAULT_DISCOVERABLE_MODE             GAP_ADTYPE_FLAGS_GENERAL

3.

  // Set advertising interval
  {
    uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;

    GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MIN, advInt );
    GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MAX, advInt );
    GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MIN, advInt );
    GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MAX, advInt );
  }

这样是不是可以无限广播且广播间隔为100ms

keyfob有这样一段解释

// Use limited discoverable mode to advertise for 30.72s, and then stop, or
// use general discoverable mode to advertise indefinitely
#define DEFAULT_DISCOVERABLE_MODE             GAP_ADTYPE_FLAGS_LIMITED
//#define DEFAULT_DISCOVERABLE_MODE             GAP_ADTYPE_FLAGS_GENERAL

这是我自己总结的广播相关的一些配置,可以参考一下。

广播可以设置为自动广播和手动广播。

1、广播相关参数:

(1)默认广播发送时间间隔

// What is the advertising interval when device is discoverable (units of 625us, 640=400ms)

#define DEFAULT_ADVERTISING_INTERVAL          640

(2)设备可被发现模式

// Limited discoverable mode advertises for 30.72s, and then stops

// General discoverable mode advertises indefinitely

#define  DEFAULT_DISCOVERABLE_MODE

limited mode:GAP_ADTYPE_FLAGS_LIMITED        规定时间内发送广播,然后停止发送

general mode: GAP_ADTYPE_FLAGS_GENERAL    循环发送广播

(3)广播使能

uint8 initial_advertising_enable = TRUE or FALSE

(4)广播停止时间

 // By setting this to zero, the device will go into the waiting state after

 // being discoverable for 30.72 second, and will not being advertising again

// until the enabler is set back to TRUE

uint16 gapRole_AdvertOffTime = 0 or others

2、参数设置

(1)广播使能

GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );

(2)广播停止时间设置

GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );

(3)设置广播相关时间

    uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;

    GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MIN, advInt );

    GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MAX, advInt );

    GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MIN, advInt );

    GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MAX, advInt );

    //set the advertising time for each 

    GAP_SetParamValue(TGAP_GEN_DISC_ADV_MIN, 1000);

3、几种广播模式相关参数设置:

(1)单次限时广播

a. 设置广播模式为限制广播

#define  DEFAULT_DISCOVERABLE_MODE     GAP_ADTYPE_FLAGS_LIMITED

b. 广播停止时间设置

uint16 gapRole_AdvertOffTime = 0;

GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );

c. 广播时间设置

uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;

GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MIN, advInt );

GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MAX, advInt );

d. 广播持续时间设置

GAP_SetParamValue(TGAP_LIM_ADV_TIMEOUT, 3);    //3s

e. 广播使能

uint8 initial_advertising_enable = TRUE;

GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );

(2)手动循环广播

a ~ d设置与单次限时广播时间相同

e. 通过添加一个定时器来定时启动广播:

广播使能

uint8 initial_advertising_enable = TRUE;

GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );

(3)自动循环广播

a. 设置广播模式为通用广播

#define  DEFAULT_DISCOVERABLE_MODE     GAP_ADTYPE_FLAGS_GENERAL

b. 广播停止时间

uint16 gapRole_AdvertOffTime = 4000;    //4s

GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime );

c. 广播时间设置

uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;

GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MIN, advInt );

GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MAX, advInt );

d. 广播持续时间设置

GAP_SetParamValue(TGAP_GEN_DISC_ADV_MIN, 1000);

e.广播使能

uint8 initial_advertising_enable = TRUE;

GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );

*注: 设置广播持续时间为0时,会持续广播,这时候设置广播停止时间无效,即GAPROLE_ADVERT_OFF_TIME参数设置无效果。

谢谢 bo lai

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top