0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C2530(zigbee)入门开发: 低功耗模式

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2022-05-28 13:29 次阅读

一、低功耗模式介绍

低功耗是现在便携式、消费类设备都要考虑的功能,特别是使用电池供电的设备,对功耗的把握非常重要,功耗直接影响待机时长。 比如:我们现在的手机、平板、商务笔记本电脑、无线耳机等消费类设备,还有智能井盖、智慧路灯、这些不插市电的物联网设备等。

CC2530支持配置低功耗模式,可以通过电源寄存器章节的介绍进行配置,下面就介绍CC2530的低功耗几个模式的配置,截图来至CC2530中文数据手册。

二、配置低功耗模式

低功耗运行是通过不同的运行模式(供电模式)使能的。各种运行模式指的是主动模式、空闲模式和供电。

模式1、 2和 3(PM1-PM3)。超低功耗运行的实现通过关闭电源模块以避免静态(泄露)功耗,还通过使用门控时钟和关闭振荡器来降低动态功耗。

image.pngimage.pngimage.pngimage.png

三、示例代码

3.1 示例代码1

/******************************************************************************
利用睡眠定时器,实现低功耗
******************************************************************************/
#include 

#define uint unsigned int
#define uchar unsigned char
#define CC2530_Delay 15000

#define RLED P1_0
#define YLED P1_1       //LED灯控制IO口定义

void CC2530_Delay(void);
void CC2530_Init_IO_AND_LED(void);
void CC2530_SysPowerMode(uchar sel);

/****************************************************************
    延时函数	
****************************************************************/
void CC2530_Delay(void)
{
	uint i;
	for(i = 0;i= 20)
		{
			count = 0;     
			RLED = 0;
			CC2530_SysPowerMode(3);
			//10次闪烁后进入睡眠状态PM3
		}
		//CC2530_Delay();
		CC2530_Delay();
		//延时函数无形参,只能通过改变系统时钟频率或DEALY的宏定义
		//来改变小灯的闪烁频率
	};
}
/*****************************************
    中断处理函数-系统唤醒
*****************************************/
#pragma vector = P0INT_VECTOR
 __interrupt void P0_ISR(void)
 {
	if(P0IFG>0)
	{
		P0IFG = 0;
	}
	P0IF = 0;
	CC2530_SysPowerMode(4);
 }
复制代码;i++);>

3.2 示例代码2

/******************************************************************************
利用睡眠定时器实现低功耗
******************************************************************************/
#include 

/*****************************************
//定义类型
*****************************************/
#define uchar unsigned char
#define uint unsigned int

#define RLED P1_0
#define GLED P1_1
#define CRYSTAL 0
#define RC 1

typedef unsigned char       UINT8;
typedef unsigned char       INT8U;
typedef unsigned short      UINT16;
typedef unsigned short      INT16U;
typedef unsigned long       UINT32;
typedef unsigned long       INT32U;

void CC2530_Set_ST_Period(uint sec);
void CC2530_Init_SLEEP_TIMER(void);
void CC2530_Delay(uint n);
void CC2530_LedGlint(void);

char LEDBLINK;

void CC2530_InitLEDIO(void)
{
    P1DIR |= 0x03;  //P10、P11定义为输出
    RLED = 0;
    GLED = 0;//LED灯初始化为关   
}

/*****************************************
设定系统主时钟函数
*****************************************/
void  SET_MAIN_CLOCK(source) 
{                                  
	if(source)
	{                            
		CLKCONCMD |= 0x40;          /*RC*/               
		while(!(CLKCONSTA &0X40));  /*待稳*/       
	}                                       
	else
	{                       
		CLKCONCMD &= ~0x47;        /*晶振*/             
		while((CLKCONSTA &0X40));  /*待稳*/  
	}                                       
}

/*****************************************
设定系统低速时钟函数
*****************************************/
void SET_LOW_CLOCK(source)                                
{                                                   
	(source==RC)?(CLKCONCMD |= 0X80):(CLKCONCMD &= ~0X80); 
}

/*********************************************************************
//主函数
*********************************************************************/
void main(void)
{
  SET_MAIN_CLOCK(CRYSTAL);
  SET_LOW_CLOCK(CRYSTAL);
  CC2530_InitLEDIO();
  LEDBLINK = 0;
  RLED = 1;
  GLED = 0;
  CC2530_Init_SLEEP_TIMER();
  CC2530_LedGlint();
  CC2530_Set_ST_Period(8);
  while(1)
  {
    if(LEDBLINK)
    {
      CC2530_LedGlint();
      CC2530_Set_ST_Period(8);
      GLED = !GLED;
      LEDBLINK = 0;
    }
    CC2530_Delay(100);
  }
}

/*****************************************
//初始化Sleep Timer
*****************************************/
void CC2530_Init_SLEEP_TIMER(void)
{
  ST2 = 0X00;
  ST1 = 0X0F;
  ST0 = 0X0F;
  EA = 1;  //开中断
  STIE = 1;
  STIF = 0;
}



/*****************************************
//延时函数
*****************************************/
void CC2530_Delay(uint n)
{
  uint jj;
  for(jj=0;jj> 16);
   ST1 = (UINT8)(sleepTimer >> 8);
   ST0 = (UINT8) sleepTimer;
}

#pragma vector = ST_VECTOR
__interrupt void ST_ISR(void)
{
	STIF = 0;
	LEDBLINK = 1;
};jj++);>


作者:DS小龙哥
链接:https://juejin.cn/post/7021694551660167175
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ZigBee
    +关注

    关注

    158

    文章

    2269

    浏览量

    242518
  • 低功耗
    +关注

    关注

    10

    文章

    2362

    浏览量

    103586
  • CC2530
    +关注

    关注

    19

    文章

    221

    浏览量

    57936
收藏 人收藏

    评论

    相关推荐

    STR-CC2530-DK ZIGBEE专业开发系统

    -97dBm。 RX:24mA。 TX:29mA。 低功耗:0.4uA 功能特点: 1、具有USB 高速下载、支持IAR集成开发环境;2、具有在线下载、调试、仿真功能;3、提供ZigBee
    发表于 07-26 15:03

    C51RF-CC2530专业开发系统

    成都无线龙通信科技有限公司陈先生QQ :1091202304产品简介: 无线龙ZigBee无线网络专业开发系统C51RF-CC2530-PK是CC2530/CC2531的专业
    发表于 10-16 11:07

    CC2530开发平台——使用说明

    能,业界标准的增强型8051 CPU、 8KB RAM 、256K闪存。模具有不同的低功耗运行模式,使得它尤其适应超低功耗要求的系统,且模式切换时间极短。.
    发表于 03-08 11:10

    CC2530进入低功耗PM2模式后要多久才醒一次呢?

    CC2530进入低功耗PM2模式后要多久才醒一次呢?CC2530用Zstack,进入低功耗PM2模式
    发表于 03-28 10:36

    低功耗蓝牙芯片

    适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低能源消耗。CC2530F256 结合了德州仪器的业界领先的黄金单元ZigBee 协议栈(Z-Stack™),提供了一个强大
    发表于 04-19 09:55

    Zigbee低功耗管脚怎么设置

    ZigBee低功耗除了要设置低功耗模式和使用halsheep函数外,还需要把用不到的管脚配置成什么模式呢,仿真下载管脚是否也配置呢?
    发表于 04-26 14:15

    ZigBee组网方案

    F32/64/128/256,分别具有32/64/128/256KB 的闪存。CC2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低
    发表于 09-15 15:59

    Zigbee2.4G无线射频RFID芯片CC2530芯片低功耗资料分享

    具有32/64/128/256KB 的闪存。CC2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低能源消耗。CC
    发表于 07-09 15:02

    【技术精选】嵌入式STM32原创征文活动精选文章

    CC2530(zigbee)入门开发: 看门狗C2530(zigbee)入门开发:
    发表于 07-27 18:26

    CC2530软件运行示例的详细使用数据手册免费下载

    文描述了用于IEEE的C2530系统片上解决方案的软件例子。802.15.4/ZigBee。它还描述了必要的硬件和软件运行的例子,以及如何开始。软件实例设计运行在C2530EM上SMARTF05EB。
    发表于 07-25 11:39 2次下载

    C语言入门开发板实验指导电子版下载

    C语言入门开发板实验指导电子版下载
    发表于 03-24 17:23 0次下载
    <b class='flag-5'>C</b>语言<b class='flag-5'>入门开发</b>板实验指导电子版下载

    STM32入门开发: 采用IIC硬件时序读写AT24C08(EEPROM)

    STM32入门开发: 采用IIC硬件时序读写AT24C08(EEPROM)
    发表于 11-21 13:51 47次下载
    STM32<b class='flag-5'>入门开发</b>: 采用IIC硬件时序读写AT24<b class='flag-5'>C</b>08(EEPROM)

    ZigBee-CC2530单片机 - 低功耗运行

    ZigBee-CC2530单片机 - 低功耗运行程序源码#include "ioCC2530.h"#define LED1 P1_0 // P1_0定义为
    发表于 11-29 14:21 11次下载
    <b class='flag-5'>ZigBee-CC2530</b>单片机 - <b class='flag-5'>低功耗</b>运行

    Zigbee(二):低功耗

    因为在好多zigbee应用中都会涉及低功耗,所以把低功耗单独拿出来说。
    发表于 12-31 19:04 9次下载
    <b class='flag-5'>Zigbee</b>(二):<b class='flag-5'>低功耗</b>

    CC2530(zigbee)入门开发: 安装IAR开发环境

    CC2530本身是一个51单片机内核,开发过51的搞起来非常容易,也就是多了一个无线射频部分;如果不使用无线射频功能,那么就和一个正常的51单片机一样。要进行CC2530的软件开发,需
    的头像 发表于 05-28 13:38 1.2w次阅读
    CC<b class='flag-5'>2530</b>(<b class='flag-5'>zigbee</b>)<b class='flag-5'>入门开发</b>: 安装IAR<b class='flag-5'>开发</b>环境