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

cc2540的功耗测量

请问cc2540的功耗如何确定?如果用外接电源(如锂电池等)供电,应选择多大容量的电源同时时间可以用得比较长久?

Susan Yang:

建议参考帖子 http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/59904.aspx

及官方文档 http://www.ti.com.cn/cn/lit/an/swra347a/swra347a.pdf

Yan:

dcg,

关于功耗测试,请参考这个文件:http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=swra347&fileType=pdf

选择多大电源,得根据你实际产品的具体应用的实际功耗来决定。

waiting:

回复 Susan Yang:

没有任何外围器件,就是单单一个cc2540,仅完成发送功能,一个纽扣电池能连续工作一年以上或者几个月以上,确实吗?

Yan:

回复 waiting:

dcg,

如果仅发送,不建立连接的话,是可以达到你的要求的。

waiting:

回复 Yan:

hi,我的意思是:作为从机,主机(如通过lightblue作为主机)搜到到从机进行连接,接着从机不定时通过notification向主机发送数据,这样的功耗大吗?还有就是想问问,主从机建立连接后,如果两者之间在不进行通信时,从机或者主机会自动进入低功耗或者sleep状态,到要发送数据时才变为active状态吗?

Yan:

回复 waiting:

dcg,

是的,从机在没有数据进行通信的时候,可以进入低功耗状态。

你可以通过设置connection interval 和 slave latency 来达到让你的从机有更长时间的低功耗状态,从而达到降低功耗的目的。这样目的也是为了维持连接的存在,问你随时要发数据做准备。

当你的从机处于低功耗模式的时候,一旦你有数据要发送,从机就可以立即醒过来,通过notification 发送数据给主机。

waiting:

回复 Yan:

connection interval 和 slave latency一般如何设置才可以更大地降低功耗,而不会影响蓝牙主从机的基本的通讯?还想问问,在任务事件处理函数中中,加一个延时函数,蓝牙会自动断开,这是为什么啊?

Yan:

回复 waiting:

dcg,

怎么设置参数来降低功耗,看你自己的具体应用了。 connection interval 的范围是从7.5ms 到 4s, slave latency 从 0 到 499,配合调节。

延时函数,你是怎么延时的?由于OSAL系统并不是真正的操作系统,如果你里面有循环之类的卡住了,会占用8051资源无法释放,导致没法同步连接,连接断开。

waiting:

回复 Yan:

我这个基本没有什么外设,就是利用cc2540作为从机发送数据,还有,我想问问,先看下方从机处理程序中任务处理事件函数的其中一部分

if ( events & SBP_PERIODIC_EVT ) { // Restart timer if ( SBP_PERIODIC_EVT_PERIOD ) { osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD ); } if(P0_0==0) { Sendchartask(); } else { if(P0_0==1||flag2==1) { flag2=1; Sendchartask(); if(n>=3) { while(n++<=4000&&flag3==0)  { if(P0_0==0) {performPeriodicTask('b');SerialPrintString("b");SerialPrintString(" "); flag3=1;} } if(flag3==0){ performPeriodicTask('a');SerialPrintString("a"); SerialPrintString(" ");} n=0;flag1=0;flag2=0;flag3=0; } } else if(P0_0==0&&flag2!=1) { Sendchartask(); if(n>5) { performPeriodicTask('d');SerialPrintString("d"); SerialPrintString(" "); m=0;n=0;flag1=0;flag2=0; } } } else {/*performPeriodicTask('c');*/SerialPrintString("c");SerialPrintString(" ");if(P0_0!=0){flag=0;}}

return (events ^ SBP_PERIODIC_EVT); }

红色字体部分,我是每隔一段时间(这里设置成0.02秒)进入一次SBP_PERIODIC_EVT,查询是否需要发送字符数据,我想知道,这样重复查询,如果不需要发送数据,从机还会是处于低功耗状态来查询吗?如果查询到需要发送字符数据,从机会被激活,发送数据完后会重新进入低功耗状态吗?我说加入延时会断开,就是在上述函数内加一个delay()函数,就会断开!

HG:

回复 Yan:

Hi Yan,

   弱弱问下,这个Notification是跟主/从机有关么,我怎么觉得是ATT层和Server/Client有关的。。。。。。

Regards,

Holly

赞(0)
未经允许不得转载:TI中文支持网 » cc2540的功耗测量
分享到: 更多 (0)