1. 程式人生 > >【BLE】-CC2541低功耗測試實驗-晶片驗證篇

【BLE】-CC2541低功耗測試實驗-晶片驗證篇

實驗介紹

通過檢視晶片手冊cc2541的電氣特性表,cc2541低功耗(LowPower)有三種狀態:PowerMode1(簡稱:PM1)、PowerMode2(簡稱:PM2)、PowerMode3(簡稱:PM3)。

描述

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

它們分別對應功耗的典型值(單位:μA)如下表:

LowPowerState Typical value
PM1 270μA
PM2 1μA
PM3 0.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 1 PowerMode 2 PowerMode 3
上拉 254.2μA 1.2μA 0.4μA
下拉 254.4μA 1.2μA 0.37μA
高阻 601.3μA 182.4μA 398.9μA

實驗結論

  • 在PIN腳沒有外設的情況下,應該把PIN腳配置成確定的狀態,非確定的狀態(高阻狀態)會帶來高功耗的電流。
  • PIN腳有外設連線的情況下,需要根據實際的情況作出相應的配置,以達到最低功耗的效果。

相關推薦

BLE-CC2541功耗測試實驗晶片驗證

實驗介紹 通過檢視晶片手冊cc2541的電氣特性表,cc2541低功耗(LowPower)有三種狀態:PowerMode1(簡稱:PM1)、PowerMode2(簡稱:PM2)、PowerMode3(簡稱:PM3)。 描述: PM1:

BLECC2541功耗測試-系統執行

1.osal_pwrmgr_powerconserve 描述: osal_pwrmgr_powerconserve()函式低功耗具體的處理函式,可以發現要想支援此功能,必須首先包含POWER_SAVI

BLECC2541獲取裝置的MAC地址實驗

安卓除錯工具掃描時直接顯示就是MAC地址。 蘋果裝置是以UUID的方式顯示。 所以我們直接用安卓裝置來測試。 我們連線時可以知道主機的地址。 變數是gapRole_ConnectedDevAddr,可以在peripherial.c裡搜尋GAP_LINK_

BLECC2541之主機端讀取特征值

roi repl void 定時 store val star content else if 本篇博文最後改動時間:2017年01月06日,11:06。

BLECC2541之連線引數

轉載自: https://blog.csdn.net/feilusia/article/details/46909723 一、簡介 本文介紹CC2541的連線引數。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2 硬體平臺:S

BLECC2541之電池電量服務

本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何新增一個電池電量服務。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體: IAR 8.20.2 硬體平臺: Smar

BLECC2541之通訊協議

本篇博文最後修改時間:2016年12月12日,10:51。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何在一個可讀、可寫、可通知、20位元組長的特徵值char6基礎上,新增一個香瓜自定義的通訊協議,並用app傳送指令實現P11口上的LE

BLECC2541之新增特徵值

本篇博文最後修改時間:2017年03月21日,15:32。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何新增一個可讀、可寫、可通知、20位元組長的特徵值char6,並用app實現資料的收發。 二、實驗平臺 協議棧版本:BLE-CC254

BLECC2541之32.768kHZ外部晶振

本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文介紹外部的32.768K晶振對於CC2541的作用。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2 硬體平臺:Smart RF(主晶片CC2

BLECC2541之解析協議棧的晶振初始化過程

本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLEPeripheral為例,解析協議棧的晶振初始化過程。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2 硬體平臺:Smart

BLECC2541實時更新廣播包advertData內容

advertData[]是廣播包資料。 實時更新廣播包的API: extern bStatus_t GAP_UpdateAdvertisingData( uint8 taskID, uint8 ad

BLECC2541之發現服務與特徵值

本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLECentral工程為例,解析CC2541作為主機時是如何發現從機的服務和特徵值的。二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2

BLECC2541之indicate

本篇博文最後修改時間:2017年08月31日,17:00。 一、簡介 本文以SimpleBLEPeripheral為例,講述如何通過按五項按鍵的“center”鍵傳送indicate資料給btool,用PC的串列埠工具打印出“indicate”的“發資料”和“應答”的過程

BLECC2541之回撥函式

本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLECentral工程中simpleBLECentralEventCB函式,來簡要說明回撥函式的定義和呼叫過程。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編

BLECC2541之開啟廣播過程

本篇博文最後修改時間:2016年11月11日,09:31。 一、簡介 本文介紹在應用層如何開啟廣播,且解析協議棧在此操作後做了什麼。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2 硬體平臺:Amart RF開發板(主晶

BLECC2541之主機端獲取notify資料

本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLECentral工程和SimpleBLEPeripheral工程為例,介紹CC2541作為主機時是如何獲取從機char4通道的notify資料。 二、實驗平臺 協議棧版

BLECC2541之通過RSSI測距

本篇博文最後修改時間:2016年11月11日,09:21。 一、簡介 本文介紹如何在SimpleBLEPeripheral工程中,通過RSSI粗略測距。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2 硬體平臺:

Visual Studio單元測試小應用-測執行時間

line Language cat parse esc net 技術分享 javascrip huang 【轉】Visual Studio單元測試小應用-測執行時間 Visual Studio的單元測試會記錄每一個測試的執行時間,如果有幾個Method要測效能,以前我會用

NodejsBrowsersync同步瀏覽器測試

配置 pan sync itl 環境變量 html rsync blog npm 說明文檔:http://www.browsersync.cn/docs/ 安裝命令: ①全局安裝 npm install -g browser-sync ②局部/本地安裝 npm in

201803112018北京集訓測試賽(二)

char 開始 n) source 數組 區間 但是 多次 pan Problem A: 遊戲 題解&反思 模型轉化挺簡單的,但是轉化成“查詢區間內是否有若幹個數組成的集合xor和為0”問題的時候,突然發現不會做……最後只打了20暴力真是涼涼。 其實線性基這個東