微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于CC2540工作模式(Power Mode)问题

关于CC2540工作模式(Power Mode)问题

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

大家好:

        根据CC2540的datasheet,CC2540共有Active/idle Mode、PM1、PM2、PM3等4中工作模式,通过看datasheet,结合我自己的应用场景,主要有以下几个问题:

        1.在硬件设计中,通过在P2.1、P2.2管脚上接一个32.768kHz的晶振,硬件是否就能否支持CC2540在这几个模式之间的切换?

        2.CC2540处于PM1、PM2和PM3等低功耗模式下,RF是否正常工作?是否能够正常保持与手机端(iphone)的通信连接?当CC2540由Active/idle Mode转为低功耗模式时,CC2540与Iphone之间的无线连接是怎么样变化的?什么时候能够恢复连接?

        3.CC2540处于PM1、PM2和PM3等低功耗模式下,内部的计数器Timer1能否正常使用?在我的具体应用中,想让计数器Timer1一直运行。

        4.CC2540处于PM1、PM2和PM3等低功耗模式下,能否保持某一个管脚一直处于高电平,能够点亮一个LED灯。

       5. BLE 4.0 stack中是否已经做好了低耗功的工作,模式之间的切换是由BLE Stack完成,还是由用户自己完成?

        6. TI关于模式切换的资料不是很多啊,是否有专门介绍这方面内容的文件?

多谢!

回复第2个:PM3模式下RF不工作。

回复第3个:PM3模式下Timer1应该停止工作。

回复第4个:估计电平保持原来的状态!

 

十分感谢   大秦正声!

请问在PM1和PM2模式下,RF和Timer1都正常工作吗?

1. 是的,例程中可以使用POWER_SAVING宏定义,你可以简单测试确认

2. RF在PM1下可以工作,PM2和PM3不能正常工作。通讯连接只有在RF工作是可以。蓝牙从机几个状态:待机,广播,连接;如果在连接状态,有几个参数:潜伏周期、连接间隔、连接超时时间,如果在潜伏周期*(连接间隔-1)的时间内,两设备有数据交互,那么认为连接正常。如果不正当的转入低功耗状态,一是协议栈不允许,另一方面也不能恢复连接的,我不知道你问的是这个意思吗/

3. PM2下,定时器是可以工作的,但你一定要做好计数初值在高频和低频晶振下的值切换,赋值不同,否则出BUG。PM3就别想了

4. PM3模式下,无法维持高电平

5. 做好了低功耗的工作。这个是低功耗BLE的特点,你说呢? 协议栈完成,只要用户在宏定义中对了POWER_SAVING即可

6. 你可以在例程中慢慢消化,其实切换很简单,函数是开放的

 

请问用3.2V,5mA的电源驱动CC2541能使其工作吗?如果能工作,他的定时器Time3以及ADC,中断等都还可以用吗?求大神解答

补充: BLE 协议栈里面还有一个关32MHz clock地方,需要透过下面API 去开关。

默认会在协议栈里面关闭32MHz,你的uart,timer1,3,4都可能间歇工作不正常.

调试PWM 信号的时候示波器出来总是不对。

Thx

// Enable clock divide on halt
// This reduces active current while radio is active and CC254x MCU
// is halted
HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_ENABLE_CLK_divIDE_ON_HALT );

可以

TI 同事,我的作为从机的CC2540进入PM2(osal_pwrmgr_device( PWRMGR_BATTERY ;))后如何再返回到PM1即正常工作模式?从机可以被手机蓝牙找到并连接成功,但就是不能接收到手机发送过来的信号/或者接收到了信号但不能对某些管脚操作,估计是没回到PM1 模式。如何回到呢?请指示!

我的邮箱:tech@stb-tech.com。

谢谢!

一旦被唤醒就进入正常工作模式,“从机可以被手机蓝牙找到并连接成功”这句说明已经进入activity模式了,连接过程肯定是有RF传输的。至于收不到手机信号,最好拿抓包软件看下数据包

TI同事好,

今天的实验结果是:

从机CC2540收到了手机发送过来的命令,但不能强有力地驱动I/O口(本来接I/O口要常亮的LED变成闪烁了,而且亮度不够)。所以怀疑是32MHZ还没稳定就在控制I/O口了。

 

于是在接收到手机命令后执行了一个“osal_pwrmgr_device( PWRMGR_ALWAYS_ON );”命令,将从机从PM2省电模式唤醒到PM1正常工作模式 。此时再添加了一个定时中断,一定时间后再执行“osal_pwrmgr_device( PWRMGR_BATTERY ); ”命令,从机进入PM2省电模式。

目前看起来这个方法是可以的,但不知道是否最佳解决方法。

 

上午因为这个问题重新发了一个贴。你们只回复一个就行了。

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

网站地图

Top