关于BLE最大最小连接间隔的疑问?
两三年前,我在网搜索到说ios的连接参数需要满足下列要求,但是我现在实测iPhone5、6、7,最小间隔设置为6,最大间隔设置为9,把我们公司所以andriod和iPhone手机都试过一遍,没有发现什么问题,完全可以用呀。
我的问题是:
1. 是不是ios以前是那样规定的,现在发现不合理又改掉了?
2. 我把最小间隔设置为6,最大间隔设置为9有没有什么风险?
interval Max*(slave latency+1)<=2s
interval min>=20ms
interval min+20ms<=interval max
slve latency<=4
connsupervisiontimeout <= 6s
interval max*(slave latency+1)*3 < connsupervisiontimeout
我现在的设置是这样的
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 6 //最小连接间隔7.25ms
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 9 //最大连接间隔11.25ms
#define SEND_PACK_PERIOD 25//每25 ms 发送4个包的间隔时间
#define DEFAULT_DESIRED_SLAVE_LATENCY 1 //Rang:0-499 越小通信速度越快,功耗越高;越大速度越慢,功耗越低越不易掉线
你抓包看了连接间隔确实变了吗?
很可能的情况是:设备请求更改连接参数,主机(手机)认为不符合参数要求,拒绝更改,然后选择的是默认连接参数。只是这个默认参数你也能用而已。
我用SmartRF Packet Sniffer抓包看,弄了很久都抓不到,可能是我不会用。
抓到的全部是绿色的Advertising Packet,怎么也抓不到黄色的L2CAP Packet
37,38,39不同的通道都试过了,怎么这么难抓到,是不是因为我的连接间隔太短发是数据量太多,它不容易抓到
还有SmartRF Packet Sniffer的过滤只能用等号,不能用大小于号,不好把离自己远一点的其它设备过滤,不好用
终于抓到了,这个是连andriod手机的数据,一个notification包全部是0x80的是我的CC2540发的握手包。
786行cc2540从机申请连接参数8,16,1
794行andriod告诉cc2540我们执行连接间隔=16延迟=1
这个IPHONE5连接我的CC2540从机的空中抓包图
72行cc2540从机申请连接参数8,16,1
77行ios告诉cc2540我们执行连接间隔=16延迟=1
看这个抓包图,我从机设置的最小连接间隔6,最大9根本就没有在空间传输过,这是怎么回事?
原来是个乌龙!我上午调试时把最小连接间隔8,最大16
我已经把它改成6和9了
这个附件是我的CC2540从机连接iphone5的空中抓包图,麻烦TI工程师帮我看看,ios同意了6和9这两个参数了没有,最终是按什么连接间隔在工作?谢谢!
2821.CC2540连iPhone5空中抓包文件.psd
高手指点一下嘛,第一次用Sniffer,我下图这个备注对不对呀?
没有高手给我一个明确的答复呀,基于风险考虑,我还是把它改回8,16吧。
连手机就8,16了。
连PC的时候,可以通过下发命令将连接间隔改为6和9,以实现更稳定的无线传输。
这个是什么抓包工具?可以看出是主机发给从机的还是从机发给主机的,可以很明显的看出他们最终执行的间隔是0x19,比Sniffer好用呢