W25Q, GD25Q (Flash)

(2021.1.11 作成)

 このページではSPI接続のWinbond製NORフラッシュメモリ(W25Qシリーズ)と同じくGigaDevice社製フラッシュ(GD25Qシリーズ)について紹介しようと思います。実際のICとしてはそれぞれ後ろに容量を表す数字が入るのでW25Q64とかGD25Q64などが型番になります。

 この両者の違いですが、おそらくどちらかが正規版で一方がクローンだと思います。GigaDevice社はSTM32のクローンをGD32として販売しているのでGD25QもW25Qのクローンだと思ってますが、違うかもしれません。いずれにせよ多少の違いはあるもののほぼ同じように使用することができます。

 なお管理人が作成した読み書きを行うクラスはこちらのページからダウンロードしていただくことができます。

特徴

 他のFlashをよく知りませんが、以下のような特徴があると思います。

  • SPIだけでなく、Dual SPIやQPIなど高速な通信が可能です。
  • 多彩な保護オプションがあり、書き込んだデータを守ることができます。
  • Security regisiterという本来の記憶領域に加えて独立した記憶域を持っています。さらにこの領域は一度書き込んだら二度と変更できなくすることもできます。

 ぐらいでしょうか?あまり突拍子もない機能はないような気がします。

使い方

 保護などを考えなければ使い方はよくあるFlashだと思います。

読み込み

 読み込みコマンド(03H)に続いてアドレスを送り、後は必要なバイト数をSPIで読むだけです。

書き込み

 Flashなので書き込みは面倒です。

まず書き込みはページ(256Byte)単位で行われ、ページ境界を超えるとページの先頭に戻るのでページ境界を意識する必要があります。

 また初期値や消去後はすべてのデータが0xFFになり、ここから書き込み動作を行うと0にしたいビットだけ書き込み動作が行われます。このためデータを書き込む際はまず領域を一旦消去する必要があります。しかし消去はページ単位ではなく、最小でセクタ(4kByte)単位です。

 よって書きたいデータがある場合は一度4kByteをメモリに読み込み、編集後初期化して書き込むという動作が必要になります。

 さらに書き込む前にはWriteEnableを行う必要があるため、結局書き込みを行う際は

  1. 書き込みたい領域のデータを読み込む
  2. メモリ上で値を編集する
  3. Write Enable (06H)を送る
  4. 書き込む領域をセクタ消去(20H)する。
  5. ステータスレジスタのBUSY(W25Q), WIP(Write In Process:GD25Q)ビットが0になるまで待つ
  6. Write Enableをまた送る
  7. ページ単位で順次データを書き込む
  8. ページごとにステータスレジスタのBUSYフラグが0になるまで待つ

というややこしい手続きを踏む必要があります。しかし面倒ですがFlashやEEPROMを使う限り避けては通れない手続きですね。

W25QとGD25Qの違い

 普通に書いて読む分は同じように使用できますが、微妙に違っているところはあります。

  • 当たり前ですが、Manufacture IDが違います。Winbond(0xEF), GigaDevice(0xC8)です。
  • Securityレジスタの量がW25Qが3ページに対してGD25Qは4ページあります。しかしアクセス方法が両者で微妙に違います。
  • パワーダウン、保護機能、UUIDや高速モードの有無など細かい所が違っています

などなどあります。

Aliexpressでのトラブル

 さて、ここまでは技術的な内容だったのですがここからは管理人が遭遇したトラブル?です。

 まずショップから購入した時には右の様にただの袋に入った状態で送られてきました。この時点でかなり怪しいです。

 5個セットを買ったのですが、写真の様に一つはピンが曲がっていてもう一つははんだボールが付いた状態でした。もうめちゃくちゃ怪しいです。

 実際にアクセスしてみるとデータがすでに書き込まれた状態でした。しかもご丁寧に書き込み保護までしてありました。明らかに何かの基板から外した中古を販売していたようです。

 送り返すほどの金額の商品でもないので諦めて泣き寝入りです。。。

コメント: 0