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

cc2640修改哪些参数可以降低连接后的功耗?

cc2640我使用  simple_peripheral 例子    修改的程序,待机功耗1.7uA,但是BLE ON 连接后,功耗0.3mA。

我试着将下面参数修改,但发现没有效果 。如果 定义了 Original , 采用simple_peripheral 例子默认的参数

#ifdef Original
#define DEFAULT_ADVERTISING_INTERVAL 160
#else
#define DEFAULT_ADVERTISING_INTERVAL 1032             // 1032 * 0.625            
#endif

#ifdef Original
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 80
#else
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 240     // 240*1.25=300ms
#endif

#define DEFAULT_DESIRED_MAX_CONN_INTERVAL     800    //units of 1.25ms, 800=1000ms

// Slave latency to use if automatic parameter update request is enabled
#ifdef Original
#define DEFAULT_DESIRED_SLAVE_LATENCY 0
#else
#define DEFAULT_DESIRED_SLAVE_LATENCY 4
#endif

#ifdef Original
#define DEFAULT_DESIRED_CONN_TIMEOUT 1000         //(units of 10ms, 1000=10s)
#else
#define DEFAULT_DESIRED_CONN_TIMEOUT 600
#endif

实验结果,定义Original , 和未定义的 的电流都是0.3mA左右,

请问我还需要修改那些参数?

cai jingliang:

按道理修改这个参数据, 应该能降低电流的,#define DEFAULT_DESIRED_MIN_CONN_INTERVAL     240       // 240*1.25=300ms

Susan Yang:

回复 cai jingliang:

苹果对connection interval的要求, 其实还有其他的连接参数要求, 比如slave latency, supervision timeout, 如果不满足这些, IOS设备会拒绝.

The connection parameter request may be rejected if it does not comply with all of these rules:Interval Max * (Slave Latency + 1) ≤ 2 secondsInterval Min ≥ 20 msInterval Min + 20 ms ≤ Interval MaxSlave Latency ≤ 4connSupervisionTimeout ≤ 6 secondsInterval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout

cai jingliang:

回复 Susan Yang:

甜甜大香瓜,Susan Yang,两位好!

 我看了你们回复后,对参数进行了修改,如下

#define DEFAULT_DESIRED_MIN_CONN_INTERVAL     120

#define DEFAULT_DESIRED_MAX_CONN_INTERVAL    320

#define DEFAULT_DESIRED_SLAVE_LATENCY                4

#define DEFAULT_DESIRED_CONN_TIMEOUT                  600

这个参数,我算过了,是符合标准的,经过实验是可以降低功耗的,大约在2.1uA-80uA-120uA之间,

但改了个参数后,发现通信时(接收或发送)会实出现连接断开的情况,这样根本无法通信的。

请问这是怎么回事? 

能不能提供一个你们测试OK的参数? 

cai jingliang:

回复 cai jingliang:

经过进一步实验发现,接收来自IPHONE的数据是没有问题的,问题出面CC2640传送数据给IPHONE,会出断开连接。

IPHONE也收不到任何数据 !我的发送程序如下:

/******************************************************************************函数名称:输入:输出:描述: 直接发送数据函数******************************************************************************/void SendData_Notify(uint8_t *Buffer, uint8_t len){ attHandleValueNoti_t noti; uint16_t connHandle; uint16 value;

//获取Connection Handle GAPRole_GetParameter(GAPROLE_CONNHANDLE, &connHandle);

//读出CCC value = GATTServApp_ReadCharCfg(connHandle, simpleProfileChar4Config);

//判断CCC是否被打开 if ( value & GATT_CLIENT_CFG_NOTIFY ) { //分配发送数据缓冲区 noti.pValue = GATT_bm_alloc(connHandle, ATT_HANDLE_VALUE_NOTI, len, NULL);

//分配成功,则发送数据 if(noti.pValue != NULL) { //填充数据 noti.handle = simpleProfileAttrTbl[11].handle; noti.len = len; memcpy(noti.pValue, Buffer, len);

//发送数据 if(GATT_Notification(connHandle, &noti, FALSE) != SUCCESS) { GATT_bm_free((gattMsg_t *)&noti, ATT_HANDLE_VALUE_NOTI); } } }}

这个发送函数在未修改任何参数的情况下是没有问题,跟IPHONE通信没有问题。 

麻烦了,各位,就差电流最后一步,就可以提供给客户测试了。

赞(0)
未经允许不得转载:TI中文支持网 » cc2640修改哪些参数可以降低连接后的功耗?
分享到: 更多 (0)