CC2540与上位机最小连接间隔设置的问题
CC2540的程序中设置如下
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 80(100ms)
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 800(1s)
#define DEFAULT_DESIRED_SLAVE_LATENCY 0
#define DEFAULT_DESIRED_CONN_TIMEOUT 1000(10s)
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE
测试连接事件发生的频率,方法是参考TI 官网给出的功耗测试文档,正电源输入串联10欧姆,示波器抓10欧姆上的电压波形进行分析。
与CC2540 USB DONGLE连接时,可以测到1s中会有一次上下位机的连接事件发生,和CC2540程序设置的是一致的。
但是与我们自己的iphone手机app连接时,发现一旦连接,上下位机的连接事情周期变为30ms,非常耗电。
不知如何解决该问题,有两个问题请教一下。
1. CC2540能否不被上位机修改连接设置。
2.如果1无法做到,上位机,即APP中如何设置为1s。
谢谢
Hi Frank
1. 从机本身是无法直接设置连接间隔的,只有主机才能直接设置连接间隔。从机这里设置的其实只是给主机提供一个数值范围,由主机在这个范围内选择合适的参数更新到连接参数中。
不过你从机已经说明了最小间隔是100ms,而你测到的是30ms,我觉的你测到的数值应该是连接更新之前的数值。
2. 你可以尝试在从机中设置的连接间隔的最大和最小值都为1s:
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 800(1s)
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 800(1s)
Hi shaokai Lin
谢谢你的指导。请问一下,上位机是如何在范围内选择合适的参数,更新到连接参数中,上位机有相应的API函数吗?具体的调用的函数是?
1. 连接设置 由主机决定,两者连接之后,主机端的连接参数起作用。但是你这个问题还可以有第三种解决方法:
从机可以向主机发送连接参数更新请求,来请求主机的连接参数 更新到与从机一致。方法是:(参考simpleBLEperipheral.c)
// Whether to enable automatic parameter update request when a connection is formed
#define DEFAULT_ENABLE_UPDATE_REQUEST TRUE
uint8 enable_update_request = DEFAULT_ENABLE_UPDATE_REQUEST;
GAPRole_SetParameter( GAPROLE_PARAM_UPDATE_ENABLE, sizeof( uint8 ), &enable_update_request );
更改这3句代码,来使能或禁止,从机向主机发送连接参数更新请求,只要发送之后 主机就允许 然后连接参数就会变成你 从机端设定的参数 了
谢谢,之前一直是完全按照您说的设置的。但是上位机APP一旦连接,还是30ms。上位机调用的建立连接函数是connectPeripheral。不知问题何在?
你好 你的问题解决了吗 我也遇到了这个问题。你怎么侧脸的他的连接间隔时间是30ms
主要是ios对连接参数有限制,ios限定连接超时最大是6s,你给了10s,不符合他的规范,所以ios不接受你的参数更新请求,还是按照默认的连接参数进行连接,把10s改成6s应该就好了,有个文档专门介绍 ios 的 BLE 规范