【BLE】-CC2541低功耗测试实验-芯片验证篇

实验介绍

通过查看芯片手册cc2541的电气特性表,cc2541低功耗(LowPower)有三种状态:PowerMode1(简称:PM1)、PowerMode2(简称:PM2)、PowerMode3(简称:PM3)。

描述

  • PM1: 4-μs Wake-up
  • PM2: Sleep Timer On
  • PM3: External Interrupts

它们分别对应功耗的典型值(单位:μA)如下表:

LowPowerStateTypical value
PM1270μA
PM21μA
PM30.5μA

实验条件

  • 硬件:CC2541调试的电路板(保证电路板所有的外设都是处于断开状态)、CCDebugger调试仿真器、电流表。
  • 软件:IAR IDE。

实验说明

本实验是要验证CC2541芯片在三种不同的状态下负载电流值大小,所以说,我会在系统上电后直接配置完所有PIN脚状态以及相应的模式,然后,观察电流表电流值的变化。

伪代码实现

  1. /*配置PIN脚的状态*/
  2. /*配置LowPowerMode状态*/
  3. /*直接进入while状态*/

注意事项:
1. 因为配置完直接就进入了while(1)循环,调试的时候一定要把看门狗去掉,剔除宏WDT_USED。
2. 烧录完代码后,切记一定要拔掉CCDebugger仿真器,仿真器本身也消耗电流。

实验过程


实验一

描述:

  • 配置所有的管脚为general IO;
  • 配置所有的管脚方向为输入;
  • 配置所有的管脚配置为上拉状态(P1.0 和 P1.1没有上拉下电阻,除外,详情见datasheet);
  • 配置寄存器进入Power Mode 1(PM1)状态

代码实现:

P0SEL=0x00;
P1SEL=0x00;
P2SEL=0x00;

P0DIR=0x00;
P1DIR=0x00;
P2DIR=0x00;

P0INP=0x00;
P1INP=0x00;
P2INP=0x00;

SLEEPCMD &= ~ BV(0);
SLEEPCMD &= ~ BV(1);
SLEEPCMD |= BV(0);
PCON = 1;
while(1);


实验二

描述:

  • 配置所有的管脚为general IO;
  • 配置所有的管脚方向为输入;
  • 配置所有的管脚配置为上拉状态(P1.0 和 P1.1没有上拉下电阻,除外,详情见datasheet);
  • 配置寄存器进入Power Mode 2(PM2)状态

代码实现:

P0SEL=0x00;
P1SEL=0x00;
P2SEL= 0x00;

P0DIR=0x00;
P1DIR=0x00;
P2DIR=0x00;

P0INP=0x00;
P1INP=0x00;
P2INP=0x00;

SLEEPCMD &= ~ BV(0);
SLEEPCMD &= ~ BV(1);
SLEEPCMD |= BV(1);
PCON = 1;


实验三

描述:

  • 配置所有的管脚为general IO;
  • 配置所有的管脚方向为输入;
  • 配置所有的管脚配置为上拉状态(P1.0 和 P1.1没有上拉下电阻,除外,详情见datasheet);
  • 配置寄存器进入Power Mode 3(PM3)状态

代码实现:

P0SEL = 0x00;
P1SEL = 0x00;
P2SEL = 0x00;

P0DIR = 0x00;
P1DIR = 0x00;
P2DIR = 0x00;

P0INP = 0x00;
P1INP = 0x00;
P2INP = 0x00;

SLEEPCMD &= ~ BV(0);
SLEEPCMD &= ~ BV(1);
SLEEPCMD |= BV(1);
SLEEPCMD |= BV(0);
PCON = 1;


实验四

描述:

  • 配置所有的管脚为general IO;
  • 配置所有的管脚方向为输入;
  • 配置所有的管脚配置为下拉状态(P1.0 和 P1.1没有上拉下电阻,除外,详情见datasheet);
  • 配置寄存器进入Power Mode 1(PM1)状态

代码实现:

P0SEL=0x00;
P1SEL=0x00;
P2SEL=0x00;

P0DIR=0x00;
P1DIR=0x00;
P2DIR=0x00;

P0INP=0x00;
P1INP=0x00;
P2INP=0x00;
P2INP |=BV(5);
P2INP |=BV(6);
P2INP |=BV(7);

SLEEPCMD &= ~BV(0);
SLEEPCMD &= ~BV(1);
SLEEPCMD |= BV(0);
PCON = 1;
while(1)


实验五

描述:

  • 配置所有的管脚为general IO;
  • 配置所有的管脚方向为输入;
  • 配置所有的管脚配置为下拉状态(P1.0 和 P1.1没有上拉下电阻,除外,详情见datasheet);
  • 配置寄存器进入Power Mode 2(PM2)状态

代码实现:

P0SEL = 0x00;
P1SEL = 0x00;
P2SEL = 0x00;

P0DIR = 0x00;
P1DIR = 0x00;
P2DIR = 0x00;

P0INP = 0x00;
P1INP = 0x00;
P2INP = 0x00;
P2INP |= BV(5);
P2INP |= BV(6);
P2INP |= BV(7);

SLEEPCMD &= ~ BV(0);
SLEEPCMD &= ~ BV(1);
SLEEPCMD |= BV(1);
PCON = 1;
while(1);


实验六

描述:

  • 配置所有的管脚为general IO;
  • 配置所有的管脚方向为输入;
  • 配置所有的管脚配置为下拉状态(P1.0 和 P1.1没有上拉下电阻,除外,详情见datasheet);
  • 配置寄存器进入Power Mode 2(PM2)状态

代码实现:

P0SEL = 0x00;
P1SEL = 0x00;
P2SEL = 0x00;

P0DIR = 0x00;
P1DIR = 0x00;
P2DIR = 0x00;

P0INP = 0x00;
P1INP = 0x00;
P2INP = 0x00;
P2INP |= BV(5);
P2INP |= BV(6);
P2INP |= BV(7);

SLEEPCMD &= ~ BV(0);
SLEEPCMD &= ~ BV(1);
SLEEPCMD |= BV(1);
SLEEPCMD |= BV(0);
PCON = 1;
while(1);


实验七

描述:

  • 配置所有的管脚为general IO;
  • 配置所有的管脚方向为输入;
  • 配置所有的管脚配置为高阻状态(P1.0 和 P1.1没有上拉下电阻,除外,详情见datasheet);
  • 配置寄存器进入Power Mode 1(PM1)状态

代码实现:

P0SEL = 0x00;
P1SEL = 0x00;
P2SEL = 0x00;

P0DIR = 0x00;
P1DIR = 0x00;
P2DIR = 0x00;

P0INP = 0xFF;
P1INP = 0xFC;

SLEEPCMD &= ~ BV(0);
SLEEPCMD &= ~ BV(1);
SLEEPCMD |= BV(0);
PCON = 1;
while(1);


实验八

描述:

  • 配置所有的管脚为general IO;
  • 配置所有的管脚方向为输入;
  • 配置所有的管脚配置为高阻状态(P1.0 和 P1.1没有上拉下电阻,除外,详情见datasheet);
  • 配置寄存器进入Power Mode 2(PM2)状态

代码实现:

P0SEL = 0x00;
P1SEL = 0x00;
P2SEL = 0x00;

P0DIR = 0x00;
P1DIR = 0x00;
P2DIR = 0x00;

P0INP = 0xFF;
P1INP = 0xFC;

SLEEPCMD &= ~ BV(0);
SLEEPCMD &= ~ BV(1);
SLEEPCMD |= BV(1);
PCON = 1;
while(1);


实验九

描述:

  • 配置所有的管脚为general IO;
  • 配置所有的管脚方向为输入;
  • 配置所有的管脚配置为高阻状态(P1.0 和 P1.1没有上拉下电阻,除外,详情见datasheet);
  • 配置寄存器进入Power Mode 3(PM3)状态

代码实现:

P0SEL = 0x00;
P1SEL = 0x00;
P2SEL = 0x00;

P0DIR = 0x00;
P1DIR = 0x00;
P2DIR = 0x00;

P0INP = 0xFF;
P1INP = 0xFC;

SLEEPCMD &= ~ BV(0);
SLEEPCMD &= ~ BV(1);
SLEEPCMD |= BV(0);
SLEEPCMD |= BV(1);
PCON = 1;
while(1);

实验结果

电阻状态\模式PowerMode 1PowerMode 2PowerMode 3
上拉254.2μA1.2μA0.4μA
下拉254.4μA1.2μA0.37μA
高阻601.3μA182.4μA398.9μA

实验结论

  • 在PIN脚没有外设的情况下,应该把PIN脚配置成确定的状态,非确定的状态(高阻状态)会带来高功耗的电流。
  • PIN脚有外设连接的情况下,需要根据实际的情况作出相应的配置,以达到最低功耗的效果。
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值