FRAMは日本語では強誘電体メモリと言います。
「RAM」とついていますが、不揮発性メモリの一種です。
FeRAMと呼ぶのが一般的らしいですが、FRAMなどとも呼ばれます。(サイプレスの商標です)
EEPROMよりも圧倒的に書き換え可能回数が多く、書き込み速度も速いのが特徴です。
そんなFRAMをArduinoで使ってみました。
スポンサーリンク
EEPROMは一般的に書き込み寿命は約10万回と言われています。
1秒毎に同じアドレスに書き込みするとなると1日ちょっとで寿命がきてしまいます。
それに対してFRAMの書き込み寿命は100兆回です。
とてもつもない回数ですよね。
ただし、FRAMの仕組上読み出しでもデータが消えます。
ユーザ側はそれに対して別に制御する必要はないですが、読み出しでも書き込みを行うことになります。
それでもちょっとやそっとでは100兆回を超えないと思うので安心ですね。
今回使うFRAMはFM24C16BというFRAMです。
RSオンラインで買いました。
スポンサーリンク
といってもI2CのEEPOMと制御に互換性があるのでそんなに苦労することはありません。
使ったFRAMは「24C16」というEEPROMと同等です。
#define DEVICE_ADDR 0x50 void fram_write(int address, byte data) { byte devaddr = DEVICE_ADDR | ((address >> 8) & 0x07); byte addr = address; Wire.beginTransmission(devaddr); Wire.write(int(addr)); Wire.write(int(data)); Wire.endTransmission(); } int fram_read(unsigned address) { byte rdata = -1; byte devaddr = DEVICE_ADDR | ((address >> 8) & 0x07); byte addr = address; Wire.beginTransmission(devaddr); Wire.write(int(addr)); Wire.endTransmission(); Wire.requestFrom(int(devaddr), 1); if (Wire.available()) { rdata = Wire.read(); } return rdata; }
容量の大きさで制御が微妙に変わってくるので、それに気をつけるくらいですかね。
EEPROMと同じなので、ほとんど苦労せず使えることができました。
ArduinoでFRAMを使ってみる
スポンサーリンク
Leave a Comment