フォト
2018年11月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
無料ブログはココログ

« Arduino STM32 リファレンスマニュアル 日本語版 | トップページ | micro:bitはじめました »

2017年10月22日 (日)

次はSTM32ボードを積極的に使ていきたい(20) BKPの利用

このシリーズのパート20、今回はBKP(Backup register)の利用についてです。

Blue Pill(STM32F103C8T6)では、バックアップ・ドメイン領域と呼ばれる領域に、
ユーザーが自由に利用出来る20バイトのメモリがあります。

このメモリがBKP(Backup register)です。
このBKPは、ボード上のリセットボタンを押してもデータは消えません。
さらに、VBATにボタン電池等での電源バックアップがあれば、ボードの電源を落としても
データは保持されます。

具体的な使い方は次のようなスケッチとなります。
//
// stm32_BKP_exsample.ino (for Arduino STM32)
// BKP利用サンプルプログラム by たま吉さん
// バックアップドメインのメモリ10ワード(20バイト)を利用するデモです.
// バックアップドメインのメモリの性質
//  1)リセットしてもデータは保持される
//  2)さらにバッテリーバックアップ有りの場合、電源OFFでのデータが保持される
//  

#include <libmaple/bkp.h>

void setup() {
  Serial.begin(115200);
  while (!Serial.isConnected())
    delay(100);
  bkp_init();   // BKPの初期化  
  Serial.println("[Menu] 1:Write 2:Read");
}

void loop() {
  uint8_t InputChar;
  if (Serial. available()) {
    switch(Serial.read()) {
    case '1':
      Serial.println("Write data.");
      bkp_enable_writes();    // 書込み可能にする
      for (uint16_t reg=1; reg <= BKP_NR_DATA_REGS; reg++) {
      bkp_write(reg, reg-1);  // データの書込み
      Serial.print("DR"); 
      Serial.print(reg,DEC);
      Serial.print("=");
      Serial.println(reg-1,DEC);
     }
     bkp_disable_writes();  // 書込み禁止にする    
     break;
    case '2':
      Serial.println("Read data.");
     for (uint16_t reg=1; reg <= BKP_NR_DATA_REGS; reg++) {
      Serial.print("DR");
      Serial.print(reg,DEC);
      Serial.print("=");
      Serial.println(bkp_read(reg),DEC); // データの読み込み
     }   
     break;
    }
  }
}

上記のスケッチはメニュー選択で、テストデータを書いたり読んだりしています。
書込み後、リセットボタンを押して再度スケッチを起動してデータを読むと
その内容が保持されていることが確認出来ます。

03

さらに電池によるバックアップをして、電源を切ってみてもデータが
保持されていることが確認できると思います。

01

ボタン電池を使ったバックアップ回路

02

保存出来るデータ量は少ないですが、
EEPROMエミュレーションライブラリを使うよりもお手軽です。
システム設定の保持やゲームのハイスコアの保持等に使えるでしょう。

BKPの利用方法の詳細については、下記にまとめました。
Backup register (BKP) suport (bkp.h) バックアップ・レジスタの利用



« Arduino STM32 リファレンスマニュアル 日本語版 | トップページ | micro:bitはじめました »

arduino」カテゴリの記事

ARM」カテゴリの記事

STM32」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/65948571

この記事へのトラックバック一覧です: 次はSTM32ボードを積極的に使ていきたい(20) BKPの利用:

« Arduino STM32 リファレンスマニュアル 日本語版 | トップページ | micro:bitはじめました »