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.

CC2640R2F 主机扫描设备问题

Expert 2280 points
Other Parts Discussed in Thread: CC2640R2F

CC2640R2F 主机参数从机设备, 设置扫描时间为8s, 如果8s未找到设备, 最多重复扫描4次(即总共扫描时间为32s), 从机的广播时间为2s, 主机和从机的距离为0.5米左右, 但是搜索不到从机设备, 这个能是什么问题?

手机连接从机设备都能连接成功.

  • 从机广播间隔多少?其他主机设备能搜索到吗?
  • 从机广播时间是2s, 就只有一个主机, 手机连接正常
  • 主机需要设置什么参数吗?
  • “手机连接正常”是说手机可以正常搜索到从机并连接吗? 你用的是simple peripheral的例程吗?
  • simple peripheral和simple Center都是修改过的, 手机是可以搜索到从机并连接
  • 那我大概知道原因了,你把DEFAULT_DEV_DISC_BY_SVC_UUID改为false试试
    By default, the simple_central application is configured to filter and connect to peripheral devices with the TI Simple Profile UUID. To modify this behavior, set DEFAULT_DEV_DISC_BY_SVC_UUID to FALSE in simple_central.
  • DEFAULT_DEV_DISC_BY_SVC_UUID我是修改成TRUE了, 这个是为了连接指定名称的设备, 但是从机发的广播数据和主机接收到的数据不一致.
    static uint8_t scanRspData[] =
    {
    // complete name
    0x11, // length of this data
    GAP_ADTYPE_LOCAL_NAME_COMPLETE,
    'K',
    'O',
    'N',
    'M',
    'E',
    'D',
    '5',
    '3',
    '3',
    '_',
    'D',
    'E',
    'V',
    'I',
    'C',
    'E',

    // connection interval range
    0x05, // length of this data
    GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE,
    LO_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL), // 100ms
    HI_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL),
    LO_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL), // 1s
    HI_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL),

    // Tx power level
    0x02, // length of this data
    GAP_ADTYPE_POWER_LEVEL,
    1 // 0dBm
    };
    // General discoverable mode: advertise indefinitely
    #define DEFAULT_DISCOVERABLE_MODE GAP_ADTYPE_FLAGS_GENERAL
    // Advertisement data (max size = 31 bytes, though this is
    // best kept short to conserve power while advertising)
    static uint8_t advertData[] =
    {
    // Flags: this field sets the device to use general discoverable
    // mode (advertises indefinitely) instead of general
    // discoverable mode (advertise for 30 seconds at a time)
    0x12, // length of this data
    GAP_ADTYPE_FLAGS,
    DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
    'K',
    'O',
    'N',
    'M',
    'E',
    'D',
    '5',
    '3',
    '3',
    '_',
    'D',//设备MAC地址的倒数6位
    'E',//设备MAC地址的倒数5位
    'V',//设备MAC地址的倒数4位
    'I',//设备MAC地址的倒数3位
    'C',//设备MAC地址的倒数2位
    'E',//设备MAC地址的倒数1位
    // service UUID, to notify central devices what services are included
    // in this peripheral
    0x03, // length of this data
    GAP_ADTYPE_16BIT_MORE, // some of the UUID's, but not all
    LO_UINT16(SIMPLEPROFILE_SERV_UUID),
    HI_UINT16(SIMPLEPROFILE_SERV_UUID)
    };

    我将从机的广播数据设置成这样, 在static bool SimpleCentral_findSvcUuid(uint16_t uuid, uint8_t *pData, uint8_t dataLen)中的
    pData的数据是什么?
    我在主机设备中搜索包含"KONMED533"的广播数据, 搜到从机设备的概率很小.
    如果需要搜索指定名称的设备, 有什么方法实现吗?
  • simple Center中 #define DEFAULT_SCAN_DURATION 8000 这个宏定义, 这个值是什么作用? 值越大越好还是值越小越好?
  • #define DEFAULT_SCAN_DURATION 定义扫描时间,时间越长,扫描到设备的概率越高,缺点是功耗也高
  • 我测试将DEFAULT_SCAN_DURATION 这个宏定义的值调成1s, 设备扫描次数为16次, 这个更加容易扫描到从机设备, 设置时间为8s, 扫描8次, 这个扫描设备几率更小, 这是为什么?
  • 1、使用的SDK版本是什么?
    2、DEFAULT_SCAN_WIND
    DEFAULT_SCAN_INT这两个怎么设置的?调整是否有影响?
    3、建议不要把DEFAULT_SCAN_DURATION设置过长,返回结果会很慢
  • SDK 3.10
    DEFAULT_SCAN_WIND和DEFAULT_SCAN_INT这个宏定义没有