PSoCR 6 SMIF を使用して CY8CKIT-062-BLE 上の外部 Quad-Flash の消去と書込みを行う - KBA224071 - Community Translated (JA)

Version 1

    Community Translated by  Motoo Tanaka Expert        Version: **

     

    Translation - English: External Quad-Flash Erase and Write on CY8CKIT-062-BLE through PSoC® 6 SMIF – KBA224071

     

    質問:

    S25FL512SAGMFI011 の外部フラッシュメモリは PSoCR 6 の SMIF インターフェースを通して読み書きができます。ストレージの容量を余すところなく使用するために正しく消去して書込みを行うのにはどうしたら良いでしょうか?

     

    回答:

    S25FL512SAGMFI011 の各フラッシュセクタは書込みを行う前に消去する必要があります。しかし消去されるセクタ範囲と毎回書込みを行われる範囲の大きさは異なるため、意図せずに先に書込まれたデータを消去してしまう可能性があります。使用に際しては下記の S25FL512SAGMFI011 の消去/書込みメカニズムを理解しておく必要があります。

     

    • extMemAddress
      このデータ配列は外部フラッシュのアドレスバイトが入っています。S25FL512SAGMFI011 では、3バイトの大きさです。extMemAddress[0] にはアドレスの A23:A16 ビットが入っています。

     

    • sector erase 
      S25FL512SAGMFI011 の仕様にも記載されているように、sector erase コマンドは実行される度に 256 KB のセクタを消去します。各セクタは 256 (2 * 16KB アラインド) のため、24-bit アドレス中の 0xFC0000 はマスクされています。これは sector erase コマンドが発行されたときに、セクタアドレスのビット A17:A0 は無視されるという意味になります。

     

    現在のセクタは毎回書込みの前に消去されるため、extMemAddress[0] の A17:A16 は sector erase コマンドに無視されます。extMemAddress[0]++ が実行される度に 64-kB のデータがスキップされます、4回の連続的なインクリメントの間、現在のセクタは変化しません。4回目のインクリメントが完了した後に、次のセクタに移ります;これは、先の 3回の書込みのデータは消去され続けることになります。そして 4回目の書込みだけが、消去対象が次のセクタに移動するため消されずに残ります。

     

    セクタの消去はこれに合うように行う必要があります。実際のコードで、4回の連続的書込み中にセクタを消去する必要があるのは初回書込み前の一度だけであるということです。