M5Paper と EEPROM

無線 LAN への接続のユーザー名をパスワードをハードコードしているのですが、これがちょっとやだなあと思っています。
いつ、うっかりコミットしちゃうかわからないし…

M5Paper_FactoryTest で無線APのリストアップとパスワード入力できてるんだから、その設定を保存するようにすればいいじゃん!と思うのですが、M5Paper は USB を挿さずにバッテリーが無くなってしまうとすべての設定がパーになってしまうので、毎回無線設定をしないといけなくなります。

いろいろ調べていると、M5Paper には FM24C02 という EEPROM がついていて、 4096 バイトまで保存できるらしいです。
ただなぜか M5EPD 内に API がないらしいので、I2C でアクセスできるらしいので頑張ってライブラリを作ろうと思い立つのでした。

SHT3x は M5Paper の商品情報でデータシート(チップの使い方の説明書っぽい)があったのに、なぜか FM24C02 のデータシートはありません。
ググると出てくるのですが、なんかソフトウェアの再配布サイトみたいな感じでデータシートを再配布しているサイトで、これって安全なのか…と思いながらも、まあ、他にないので仕方ないかと参照することに。

I2C のライブラリレベルでのアクセス方法が知りたいのに、電気信号的な情報が載っていてつらいです。わからん。
何よりわからないのはアドレスが

1 0 1 0 A0 A1 A2 R/W

と 8bit なのですが、I2C でチップをスキャンしてアドレスを探しても 0x50, 0x51 とかしか出てこなくて、どう考えても 0xA? なんてアドレスは出てこないんだよな…

M5EPD の実装を見ていると 0x51 が BM8563 というチップのアドレスで、BM8563 のデータシートもやっぱり 1 0 1 0 0 0 1 RW という記載になっているので、なんか末尾のビットは無視して上位7ビットだけでいいらしい。
どうやら I2C のアドレスは(ライブラリとしては?)7ビットの指定で、末尾の R/W はライブラリ側で適宜つけてくれるものらしい。

あとデータシート読んでると、書き込み後は一定時間次の時間の書き込みできないよ、書き込みできるようになってから ACK を返すからね、って言っているけれど、多分ライブラリとしては ACK が返ってくるまでブロックするから、この辺の手当ては必要なさそうだなあと。


なんとなく仕様も分かったので作ってみようとしたところで
EEPROM.h
というファイルが既にライブラリ内にあることが判明。なんじゃこりゃ。


見ると「nvs を EEPROM っぽく使うためのライブラリ」みたいなことが書いてあるのだけれど、 nvs って何だろう。

調べて判明したこと:

* ESP32 にはチップ上に不揮発 Flash 領域がある。 (4MB くらいあるらしい)
* プログラムを書き込むのに使うところだけれども、一部領域をプログラムからアクセスする領域にできる。
* ひとつが nvs で、 Flash 領域に Key-Value を保存できる。
* 他に SPIFFS があって、階層構造のないファイルシステムとして使える。

SPIFFS は知ってたけれども、リードオンリーなものだと思ってた。読み書きできるんだ…
そうすると、FM24C02 ってなんのためにあるんだろう…


ググったところ、同じ疑問を持っている方がいたのだけれど、明確な結論は分からず。
(nvs は時々値がおかしくなることがある…という話もあったけれど、FM24C02 のほうがマシという話もあるわけでもなく)


ともあれ、何もしなくても欲しい物があることが判明した。
神がかってない?

このブログ記事について

このページは、イケダムが2021年5月 8日 16:38に書いたブログ記事です。

ひとつ前のブログ記事は「M5Paper とライセンス」です。

次のブログ記事は「M5Paper と TrueType フォント」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.04