NVM制御関数


【概要】

NVM(Non Volatile Memory)つまりフラッシュメモリの読み書きを制御する関数群
があらかじめ用意されています。
フラッシュメモリを仮想メモリアドレス領域として扱いますので、全空間を指定できます。

《ページの概念》
PIC32MXのフラッシュメモリは、512バイトが1つの書き込み列となっており、同時に
8列 つまり4kバイト単位で消去ができるようになっています。
これを1ページと呼んでいます。

《プログラミング仕様》
 書き込みの単位は、1列ごとつまり512バイト単位か、1ワードつまり32ビット単位の
いずれかとなっています。
 書き込み中はCPUはストール状態となり、命令実行は不可となります。

 書き込み時電圧  : Min 3.0V
 書き込み時間    : Max 40usec(ワード書き込み)
               Typ 4.5msec(列書き込み)
 消去時間      : Max 40msec(ページ消去、チップ全体)
 書き込み可能回数 : Min 1000回

【NVM制御関数一覧】

主なNVM制御関数には下記のようなものが含まれます。

関数、マクロ名 機能内容
NVMProgram 指定バッファのデータを指定アドレス領域に指定サイズだけ書き込む
《書式》
  unsigned int NVMProgram(void* address, const void* data, unsigend int size,
                  void* pagebuff);
   address  :書き込み先のフラッシュメモリの開始アドレス
   data    :書き込むデータの開始アドレス
   size     :書き込みバイト数
   pagebuff  :作業用RAMページ指定
   戻り値   :0=正常完了
《使用例》
  NVMProgram((void*) 0xBD000000, (const void*)0xA0000000, 1024,
                   (void*)0xA0002000);
  //KSEG1領域のRAMからフラッシュへ1kバイトコピーする
NVMErasePage フラッシュメモリjの1ページ分を消去する
《書式》
  unsigned int NVMErasePage(void* address);
   address :対象ページの開始アドレス
   戻り値  :0=正常完了
《使用例》
  NVMErasePage((void*) 0xBD000000);  //KSEG1のフラッシュを消去
NVMWriteRow 1列書き込み
《書式》
  unsigned int NXMWriteRow(void* address, void* data);
   address :書き込み先の仮想メモリアドレス
   data   :書き込みデータの開始アドレス
   戻り値  :0=正常完了
《使用例》
  NVMWriteRow((void*)0xBD000000, (void*)0xA0000000); RAMからフラッシュへ
NVMWriteWord 1ワード書き込み
《書式》
  unisgned int NVMWriteWord(void* address, unsigned int data);
    address :書き込み先の仮想メモリアドレス
    data   :書き込みデータ
《使用例》
   NVMWriteWord((void*)0xBD000000, 0x12345678);
NVMClearError エラーフラグのクリアとフラッシュコントローラのリセット
《書式》
  unsigned int NVMClearError(void);
NVMIsError エラーフラグのチェック
《書式》
   unsigned int NVMIsError(void);
    戻り値: 0=エラーなし
《使用例》
   if(NVMIsError())
     NVMClearError();



【使用例】








目次に戻る