微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541作为Peripheral设备进入低功耗PM3问题

CC2541作为Peripheral设备进入低功耗PM3问题

时间:10-02 整理:3721RD 点击:

hi,TI工程师:

       我项目中将CC2541作为Peripheral广播数据,手机App作为Central接收数据

       1,在CC2541没有App连接的情况,CC2541可以进入PM3,功耗在2.2uA

       2,在CC2541有App连接的情况,CC2541主动断开App的连接,然后进入PM3,功耗在242uA左右

             调用GAPRole_TerminateConnection()

             调用{uint8 enable=FALSE;GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &enable );}

             删除定时器,确认进入PM3

       3,在CC2541有App连接的情况,但是App主动断开连接,之后CC2541主动进入PM3,功耗在2.2uA

        请问情况2跟情况3有什么区别,我该如何设置让情况2的功耗也在2.2uA?

你的问题2说得有点不太明白。你是说你必须调用了GAPRole_TerminateConnection()和{uint8 enable=FALSE;GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &enable );} ,删除了定时器,才能进入PM3?

还是说已经做了上述操作,并进入了PM3,但功耗是242uA?

我调用了GAPRole_TerminateConnection()和{uint8 enable=FALSE;GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &enable );} ,删除了定时器;已经单步调试确认进入了PM3,但是功耗是242uA

检查下是否还有其他外设开启,比如串口?PM3能进去,激活是靠是靠按键吗?

不是外设问题吧;如题,第一种情况和第三种情况进入PM3都能达到2.2uA,可见不是外设问题;只有第二种不能达到,问题应该是在CC2541(从机)主动断开连接和安卓APP(主机)断开连接上吧?@TI兄弟们

确认没有开启其他外设!

情况1和情况3已经能够达到PM3低功耗,说明外设设置已经最优!

情况2与情况3,差别仅仅是,“CC2541主动断开了一个App的GAPP连接”  or  “App主动断开GAPP连接”

情况2与情况1,差别是,手机App连接了,且CC2541主动断开连接

----------------------

我想要的效果是,在手机App通过BLE连接到CC2541时,CC2541主动断开GAPP连接,且能进入PM3低功耗(2.2uA)

目前我采取的操作显然没有到达效果,但是因为BLE协议栈不开源,我不知道该情况2和情况3,协议栈里面有哪些不同操作

我采取哪些措施可以得到2.2uA的低功耗

确认激活是用按键激活

你在断开前的操作顺寻改改。如下是bloodpressure的例子。

你断开先启动一个定时器,delay一下,再做关advirsting和disconnect的操作。

1.     osal_start_timerEx( bloodPressureTaskId, BP_DISCONNECT_EVT, BP_DISCONNECT_PERIOD );

2.

// Disconnect after sending measurement
if ( events & BP_DISCONNECT_EVT )
{

uint8 advEnable = FALSE;

//disable advertising on disconnect
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &advEnable );

HalLedSet ( HAL_LED_1, HAL_LED_MODE_ON );

// Terminate Connection
GAPRole_TerminateConnection();

return (events ^ BP_DISCONNECT_EVT);
}

已测,不成功!

1,按照你的方法,功耗还是242uA

2,方法2,先GAPRole_TerminateConnection();然后延时500,再关闭广播,也失败,功耗仍是242uA

你的方法进行过测试吗?

我暂时环境可测功耗,你如果方便测,可用默认simpleperipherial 例子按上述方法试试,看是否仍然有这样的现象。

如果默认工程经过你测试,仍存在这个现象,我们可以与产品线沟通这一问题。

bloodpressure的例子我看过了,您给出的方法在里面应该是可用的;但是那是在没有APP连接的情况,如同楼主的第一种情况一样,可以实现低功耗目标:2.2uA;
但是,这种方法修改后,楼主的第二种问题并没有解决哦。 

1,我的项目工程就是simpleBLEPeripheral改过来的,修改了performPeriodicTask函数发送我的业务数据

2,我仔细看了simpleBLEPeripheral原工程,没有CC2541主动断开GAPP连接然后进入PM3的流程吧,都需要自己修改

3,我单步调试发现:

4,手机App主动断开连接会调用gapRole_ProcessGAPMsg函数,处理GAP_LINK_TERMINATED_EVENT事件,这样的流程会进入2.2uA低功耗

5,而CC2541主动断开连接GAPRole_TerminateConnection函数,并不会导致系统调用gapRole_ProcessGAPMsg处理GAP_LINK_TERMINATED_EVENT事件,这个流程就导致242uA的功耗

6,疑问:有没有那个函数是模拟手机App的断开连接呢?

我验证了,调用GAPRole_TerminateConnection,会调用GAP_LINK_TERMINATED_EVENT事件,我只是没法测电流

我的调用


if ( events & SBP_PERIODIC_EVT )
{

// Perform periodic application task
//performPeriodicTask();
if ( gapProfileState == GAPROLE_CONNECTED )
{
uint8 adv_enabled = FALSE;

// Disconnect
GAPRole_TerminateConnection();
// stop advertising
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &adv_enabled );
}

return (events ^ SBP_PERIODIC_EVT);
}

请问一下这个功耗是怎么测出来的的啊,测得哪里的电流啊,刚接触不太懂。

上一篇:获取特征值失败
下一篇:蓝牙连接问题

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top