【概要】
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();
【使用例】
目次に戻る