TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2540在扫描的时候能读取RSSI吗?

在central端,GAPCentralRole_StartRssi函数能读到RSSI的值,,但是这个需要连接之后才能读到。

现在想请问下,1,在扫描的时候,能够读到RSSI的值吗?

2,Packet Sniffer接收蓝牙信号后,每次跟着RSSI的值,请问,Packet Sniffer是怎么工作的,一直在扫描吗?扫描间隔呢?

wengo wu:

顶起来啊,,没人回答我啊。。

ghostyu:

你应该再仔细看下主从机的源码,有很多值得研究的地方,

主机Role Event Callback回调函数里GAP_DEVICE_INFO_EVENT里是告知主机接收到从机的Adv Data或者Scan Response,

pEvent->deviceInfo结构体成员里有很多重要的参数,其中就包括rssi值。大多数时候,别人比较关注他的:

uint8 *pEvtData;          //!< Data field of advertisement or SCAN_RSP

当然,也有你要的rssi

Joker Ly:

回复 ghostyu:

ghostyu的回答给了我很大的启发!我想请问如果不扫描,simpleBLEPeripheral#1是否可以读取到simpleBLEPeripheral#2的rssi值。

zouzou liang:

回复 ghostyu:

你好有相关的例程吗,可以发送一段怎么调用的具体程序给我吗?

Tao Dong:

回复 ghostyu:

在不连接的情况下,我读取的pEvent->deviceInfo结构体里的rssi一直是4,这正常嘛?另外, 应该怎么从uint8 *pEvtData;数据里找出rssi?

Joker Ly:

回复 Tao Dong:

    case GAP_DEVICE_INFO_EVENT:      {        simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType );        int8 rssiAver;        int8 newRSSI = -(pEvent->deviceInfo.rssi);

按照如上红色字体 方法读取RSSI,就可以了。

Tao Dong:

回复 Joker Ly:

谢谢,终于明白了。

先前我一直是在下面这个事件里找RSSI的,值始终不变。

case GAP_DEVICE_DISCOVERY_EVENT: { // discovery complete simpleBLEScanning = FALSE;

}

仔细看这个宏的定义才发现一个是扫描过程执行,一个是扫描完成后执行。

 

Dongxu Hu:

回复 Tao Dong:

十分感谢,ghostyu和Mr Tao ,想进一步问一下,现阶段测出点对点的rssi了,下一步您是如何推进的。谢谢了。

Tao Dong:

回复 Dongxu Hu:

Mr Hu,我现在只是调研阶段,还未运用到实际的应用中,不过,初步设想可以用这个rssi测距,进而达到定位的效果。

Dongxu Hu:

回复 Tao Dong:

十分感谢Mr Dong,我也在做室内定位,现在主要处于课题后期。关于rssi测距的精度建模上,还没有考虑。现在主要考虑节点的接入问题。

赞(0)
未经允许不得转载:TI中文支持网 » CC2540在扫描的时候能读取RSSI吗?
分享到: 更多 (0)