微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 广播间隔、连接间隔、广播设备名等,如何在程序中动态修改?

广播间隔、连接间隔、广播设备名等,如何在程序中动态修改?

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

我想做一个BLE透传程序,需要使用AT指令在程序中修改,请问如何修改广播间隔、连接间隔、广播设备名等。。。。,如何在程序中动态修改?

修改完要复位才能使用不是可以直接使用?

有没相关的例程可以参考的?

可以修改,改完更新一下数据即可,不需要复位

具体怎么修改呢,有没相关例程?

1)使用AT指令来修改程序中的配置,首先你需要搞定AT的基本框架,也就是AT的解析和接收,这部分和BLE没什么关系,主要是串口编程。

2)如何动态修改,这个需要你在设计之前确定你需要动态修改的参数有哪些,然后把这些参数设置成一个自定义的属性表,修改的时候重新赋值即可。

3)一般不需要复位的,因为是变量嘛,当然重启需不需要保持之前的设置,这需要你把设置的属性保存到EEPROM或FLASH中,在启动的时候加载一下即可。

4)你需要什么样的例程呢,你需要把你的透传程序先搞定吧,然后在他的基础上面先确定需要修改的参数,其实这些都和BLE没什么太大关系的,个别参数需要注意。

5)恩看到您后面追问别人改哪里,我有点替您担心,BLE-stack需要基本了解吧,基础实验先熟悉起来在动手吧,不然很多概念不清楚,其实没什么难的,把基础例程自己跑一边,建议添加串口打印调试和ccdebug调试,调试一个通讯例程你就清楚了。

6)就是改这些值啊,我贴一部分,不一定是你需要的参数,紧紧用于示例:


/* 定期执行事件的周期 */
#define SBP_PERIODIC_EVT_PERIOD 20

/* 广告间隔 (单位为 625us, 160=100ms) */
#define DEFAULT_ADVERTISING_INTERVAL 160

/* 建立连接时是否启用自动参数更新请求 */
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE

/* 有限的发现广告模式30.72s 然后停止 */
/* 一般的发现广告模式 无限期 */

#if defined ( GENERAL_DISC )
#define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_LIMITED
#else
#define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_GENERAL
#endif

/* 最小连接时间间隔(单位为1.25ms)如果启用了自动参数更新请求 */
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 16

/* 最大连接时间间隔(单位为1.25ms)如果启用了自动参数更新请求 */
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 16

/* 从机延时值如果启用了自动参数更新请求 */
#define DEFAULT_DESIRED_SLAVE_LATENCY 0

/* 监督的超时值(单位为10ms)如果启用了自动参数更新请求 */
#define DEFAULT_DESIRED_CONN_TIMEOUT 1000

/* 公司标识符 */
#define TI_COMPANY_ID 0x000D

#define INVALID_CONNHANDLE 0xFFFF

/* 地址字符串的长度 */
#define B_ADDR_STR_LEN 15

我在程序中收到一个指令后动态修改广播周期:

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 );
          GAP_SetParamValue( TGAP_GEN_DISC_ADV_MIN, 0);

用sniff抓包看一直没有修改成功。 查看了之前的相关文章,我先关闭广播,然后再修改,修改完打开广播,sniff显示广播没了。

uint8 current_advertising_enable = FALSE;
          GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &current_advertising_enable ); 

          uint16 advInt =  *rx_ptr++;
          advInt = advInt<<8 | (*rx_ptr++);
          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 );
          GAP_SetParamValue( TGAP_GEN_DISC_ADV_MIN, 0);

          //Start Adv
          current_advertising_enable = TRUE;
          GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &current_advertising_enable );

已经无计可施了,请求帮助,谢谢!

上一篇:CC2541如何进入PM3
下一篇:cc2541唤醒

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

网站地图

Top