This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640:不广播-simpleBLEperipheral 时、无法与配对的 CC2640连接

Guru**** 2551110 points
Other Parts Discussed in Thread: CC2640

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/578545/cc2640-cannot-connect-with-paired-cc2640-when-not-advertising--simplebleperipheral

器件型号:CC2640

您好!  

我目前能够使用以下函数打开串行事件的广播:
GAPRole_SetParameter( GAPROLE_Adverte_enabled,1,&en );

我的配置如下:

//可发现器件时的广播间隔(625us、160=100ms 的单位)
#define DEFAULT_advertising_interval 160 //160

//受限可发现模式为180进行广播,然后停止
//一般可发现模式广播无限
#define DEFAULT_DISCOVERADE_MODE GAP_ADTYPE_FLAGS_LIMITED //GAP_ADTYPE_FLAGS_GENE//GAP_ADTYPE_FLAGS_LIMITED

#ifndef FEATE_OAD
//最小连接间隔(单位为1.25ms,80=100ms),前提
是启用了自动//参数更新请求
#define DEFAULT_MORTed_MIN_CONN_INTERVAL 40 //40

//如果
启用了自动//参数更新请求
#define DEFAULT_REGIND_MAX_CONN_INTERVAL,则最大连接间隔(单位为1.25ms,800=1000ms) 80 //800
#else //!feature_OAD
//如果启用了自动
//参数更新请求
#define default_desired min_conninterval,则最小连接间隔(单位为1.25ms,8=10ms) 8

//如果启用了自动
//参数更新请求
#define DEFAULT_RETOVE_MAX_CONN_INTERVAL,则最大连接间隔(单位为1.25ms,8=10ms) 8
#endif // feature_OAD

//启用自动参数更新请求时使用的从器件延迟
#define default_desired slave_latency 0

//如果启用了自动参数
//更新请求
#define DEFAULT_MILLED_CONN_TIMEOUT,则监控超时值(10ms、1000=10s 的单位) 1000

//连接时是否启用自动参数更新请求
//形成
#define DEFAULT_ENABLE_UPDATE_REQUEST True

//连接暂停外设时间值(以秒为单位)
#define DEFAULT_CONN_PAUSE_PERIFT 6 //6

//执行周期性事件的频率(以 msec 为单位)
#define SBP_PERIOD_EVT_PERIOD 15000
#define SBP_timeswit_EVT_PERIOD 5000

#ifdef FITY_OAD
// OAD 数据包的大小。
#define OAD_PACKET_SIZE (((OAD_BLOCK_SIZE)+ 2)
#endif // Feature_OAD

//任务配置
#define SBP_TASK_PRIORITY 1


#ifndef SBP_task_stack_size
#define SBP_task_stack_size 644
#endif

// RTOS 应用
程序的内部事件#define SBP_State_change_EVT 0x0001
#define SBP_CHAR_CHANGE_EVT 0x0002
#define SBP_Period_EVT 0x0004
#define SBP_CONN_EVT_END_EVT 0x0008

// RTOS 应用
程序的外部事件#define SBP_BLE_DATA_EVT 0x0010
#define SBP_UART_DATA_EVT 0x0020
#define SBP_timeswit_EVT0x0040

#IF define (NPI_USE_UART)|| Defined (NPI_USE_SPI)
// TL 将用于控制驱动
器#define MRDY_EVENT 的事件 0x0001
#define transport RX_EVENT 0x0002
#define transport;TX_DONE_EVENT 0x0004
#endif //TL

#if define (NPI_USE_UART)|| Defined (NPI_USE_SPI)
#define APP_TL_buff 64
#endif //tl 

我将使用以下命令初始化 simpleBLEperipheral 任务:

uint8_t 初始化地址使能= false; 

使用标志 GAP_ADTYPE_FLAGS_LIMITED、我的器件会广播30秒(我更改180秒的超时)、然后停止广播。
在这30秒内、我可以通过智能手机连接、配对、断开/重新连接设备。
但是、当 CC2640停止广播时、即使与它配对、我也无法再连接它。

感谢您的提前帮助、如果需要、我可以提供更多参考代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Robin:

    即使设备已配对、如果设备未进行广播、您也无法与设备连接。 如果器件未进行广播、它也不侦听、因此无法连接。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Marie、

    感谢您的快速回答。 那么、为了在连接时尽可能节省功耗、您会建议什么? 例如,我能否在设备配对时降低广播功率,以便在智能手机尝试连接时能够“听到”,同时不会在广播上花费精力?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Robin:

    如果您知道何时会发生连接、则可以在一段时间内禁用广播、然后唤醒器件并使用时钟开始广播。

    您可以使用 HCI_EXT_SetTxPowerCmd ()调整 TX 功率。 但是、您必须根据需要对其进行上下调整、因为没有用于广播 TX 功率的唯一命令。