2349454_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2349454_ja-JP

2349454_ja-JP

lpc4078 EEPROMページ消去に関する説明が必要

私はLPC4078とMCUXpressoを使用して、EEPROMに値を保存する実験を行っています。

ページ全体を消去せずに、ページの中央に数バイトのデータを書き込みたい。

データシートを見ると、ページレジスタに書き込むデータを書き込んだ後、さらに不揮発性メモリにプログラムする必要があり、それは消去/プログラム操作によって行われると記載されている。

消去/プログラム操作は、ページ全体を消去するのか、それとも新しいデータが格納されているページ領域だけを消去するのか、また、どのようにしてそれを判断するのか?- 消去/プログラム用のアドレス設定では、6 つの lsb が無視されるため、ページのみが認識されます。

UM10562.pdfには、このマターについて明確な記載はありません。

よろしくお願いします。

アレックス

Re: lpc4078 eeprom page erase clarification required

該当プロジェクトを含むワークスペースを添付します。LPC4078上でlpc-link2デバッガを使って実行しました。
(セミホスティングを動作させるのが面倒だったので、ブレークポイントを使ってデータを検査しました。)

Re: lpc4078 eeprom page erase clarification required

こんにちは、 @alex_conway さん。

LPC4078 EEPROMの場合、最小消去/書き込み単位は1ページ(64バイト)です。したがって、消去/プログラム操作を行うたびに、ページ全体が消去されます。数バイトだけ書き込みたい場合は、まずページ全体を読み込み、次に必要なバイトを変更し、最後にページに対して消去/書き込み操作を実行してください。そちら側でもテストしてみてください。
 
よろしくお願いします。
 
BR
アリス
Re: lpc4078 eeprom page erase clarification required

こんにちは、アリスさん。

私の実験結果はそれとは異なることを示している。

まずは手始めに、lpc_board_ea_devkin_4088ライブラリとperiph_eepromデモプロジェクトを使って小さなプログラムを作成しました。

EEPROMの1ページを消去して、それを読み戻します。驚いたことに、結果は0xFFではなくすべて'\0'だった。

次に、そのページのアドレス0に「ABCDEFG\0」を書き込み、ページを読み戻します。「ABCDEFG\0」を受け取ります

次に、そのページのアドレス7に「ABCDEFG\0」を書き込み、ページを読み戻します。「ABCDEFGABCDEFG\0」を受け取ります

これはすべて予想通りだったが、2点だけ例外があった。

1. EEPROMを消去した後、0を読み取る

2. Chip_EEPROM_Write() の実装を見ると、読み出し-変更-消去-書き込みのシーケンスがないように見えます。Chip_EEPROM_WritePageRegister と Chip_EEPROM_EraseProgramPag があるだけです。

だから私はこの質問をしたのです。

よろしくお願いします。

アレックス

Re: lpc4078 eeprom page erase clarification required

printf文字列にすべて改行を追加したら、セミホスティングがうまく動作するようになりました!また、私が言ったことすべてをより明確に裏付ける証拠もあります。
消去するとEEPROMが0x00に設定されます
このコードは、読み取り→変更→消去→書き込みのシーケンスを実行せず、消去→書き込みのみを実行します。
LPC4078は、消去時に書き込みが行われた場所のみを消去するようです。

この点について、ぜひとも明確な説明をいただきたいです。

よろしくお願いします。

アレックス

Re: lpc4078 eeprom page erase clarification required

「エスカレーション」という言葉が何を意味するにせよ、NXPからはこれに関してそれ以上の回答は得られていない。
まだ確認が必要です。

Tags (1)
No ratings
Version history
Last update:
Friday
Updated by: