【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腳狀態以及相應的模式,然後,觀察電流表電流值的變化。
虛擬碼實現:
- /*配置PIN腳的狀態*/
- /*配置LowPowerMode狀態*/
- /*直接進入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:
【BLE】CC2541低功耗測試-系統執行篇
1.osal_pwrmgr_powerconserve 描述: osal_pwrmgr_powerconserve()函式低功耗具體的處理函式,可以發現要想支援此功能,必須首先包含POWER_SAVI
【BLE】CC2541獲取裝置的MAC地址實驗
安卓除錯工具掃描時直接顯示就是MAC地址。 蘋果裝置是以UUID的方式顯示。 所以我們直接用安卓裝置來測試。 我們連線時可以知道主機的地址。 變數是gapRole_ConnectedDevAddr,可以在peripherial.c裡搜尋GAP_LINK_
【BLE】CC2541之主機端讀取特征值
roi repl void 定時 store val star content else if 本篇博文最後改動時間:2017年01月06日,11:06。
【BLE】CC2541之連線引數
轉載自: https://blog.csdn.net/feilusia/article/details/46909723 一、簡介 本文介紹CC2541的連線引數。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2 硬體平臺:S
【BLE】CC2541之電池電量服務
本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何新增一個電池電量服務。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體: IAR 8.20.2 硬體平臺: Smar
【BLE】CC2541之通訊協議
本篇博文最後修改時間:2016年12月12日,10:51。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何在一個可讀、可寫、可通知、20位元組長的特徵值char6基礎上,新增一個香瓜自定義的通訊協議,並用app傳送指令實現P11口上的LE
【BLE】CC2541之新增特徵值
本篇博文最後修改時間:2017年03月21日,15:32。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何新增一個可讀、可寫、可通知、20位元組長的特徵值char6,並用app實現資料的收發。 二、實驗平臺 協議棧版本:BLE-CC254
【BLE】CC2541之32.768kHZ外部晶振
本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文介紹外部的32.768K晶振對於CC2541的作用。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2 硬體平臺:Smart RF(主晶片CC2
【BLE】CC2541之解析協議棧的晶振初始化過程
本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLEPeripheral為例,解析協議棧的晶振初始化過程。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2 硬體平臺:Smart
【BLE】CC2541實時更新廣播包advertData內容
advertData[]是廣播包資料。 實時更新廣播包的API: extern bStatus_t GAP_UpdateAdvertisingData( uint8 taskID, uint8 ad
【BLE】CC2541之發現服務與特徵值
本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLECentral工程為例,解析CC2541作為主機時是如何發現從機的服務和特徵值的。二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2
【BLE】CC2541之indicate
本篇博文最後修改時間:2017年08月31日,17:00。 一、簡介 本文以SimpleBLEPeripheral為例,講述如何通過按五項按鍵的“center”鍵傳送indicate資料給btool,用PC的串列埠工具打印出“indicate”的“發資料”和“應答”的過程
【BLE】CC2541之回撥函式
本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLECentral工程中simpleBLECentralEventCB函式,來簡要說明回撥函式的定義和呼叫過程。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編
【BLE】CC2541之開啟廣播過程
本篇博文最後修改時間:2016年11月11日,09:31。 一、簡介 本文介紹在應用層如何開啟廣播,且解析協議棧在此操作後做了什麼。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體:IAR 8.20.2 硬體平臺:Amart RF開發板(主晶
【BLE】CC2541之主機端獲取notify資料
本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLECentral工程和SimpleBLEPeripheral工程為例,介紹CC2541作為主機時是如何獲取從機char4通道的notify資料。 二、實驗平臺 協議棧版
【BLE】CC2541之通過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要測效能,以前我會用
【Nodejs】Browsersync同步瀏覽器測試
配置 pan sync itl 環境變量 html rsync blog npm 說明文檔:http://www.browsersync.cn/docs/ 安裝命令: ①全局安裝 npm install -g browser-sync ②局部/本地安裝 npm in
【20180311】2018北京集訓測試賽(二)
char 開始 n) source 數組 區間 但是 多次 pan Problem A: 遊戲 題解&反思 模型轉化挺簡單的,但是轉化成“查詢區間內是否有若幹個數組成的集合xor和為0”問題的時候,突然發現不會做……最後只打了20暴力真是涼涼。 其實線性基這個東