Funktionen der Libraries MyFRAM_I2C und MyFRAM_SPI

Nachfolgende Aufstellung beinhaltet die Funktionen für beide Libraries. Funktionen, die nur für eine der beiden Varianten verwendbar sind oder sich in der Funktionalität unterscheiden, sind jeweils durch Angabe der Schnittstelle gekennzeichnet!!


MyFRAM_I2C MyFRAM_I2C

Funktion: Erzeugt eine neue Instanz für FRAM mit I2C-Schnittstelle

Parameter: keine

Bemerkung: Verwendung, z.B. wenn bei der Erzeugung der Instanz die Speichergröße noch nicht feststeht Die Speichergröße muss im Nachhinein mit der Funktion "setSize()" angegeben werden!

Beispiel:

MyFRAM_I2C FramI2C;

void setup() {

  FramI2C.setSize(256); //FRAM-Speichergröße 256 kBit

  FramI2C.init(0x50);

}


MyFRAM_I2C MyFRAM_I2C(uint16_t size)

Funktion: Erzeugt eine neue Instanz für FRAM mit I2C-Schnittstelle

Parameter: size: Speichergröße des Chips in kBit (size = 4, 16, 64, 128, 256 oder 512 kBit)

Bemerkung: Die Speichergröße kann im Nachhinein mit der Funktion "setSize()" geändert werden!


MyFRAM_SPI MyFRAM_SPI

Funktion: Erzeugt eine neue Instanz für FRAM mit SPI-Schnittstelle

Parameter: keine

Bemerkung: Von diversen FRAM-Chips mit SPI-Schnittstelle kann die FRAM-Speichergröße aus dem Chip ausgelesen werden (Beispiele siehe: FRAM Speicher)


MyFRAM_SPI MyFRAM_SPI(uint16_t size)

Funktion: Erzeugt eine neue Instanz mit der SPI-Schnittstelle

Parameter: size: Speichergröße des Chips in kBit (size = 64, 128, 256 oder 512 kBit)

Beispiel:

MyFRAM_SPI FramSPI(64); //FRAM-Speichergröße 64 kBit

Bemerkung: Verwendung, wenn die FRAM-Speichergröße nicht aus dem Chip ausgelesen werden kann. Die Speichergröße kann im Nachhinein mit der Funktion "setSize()" angegeben bzw. geändert werden!


void init(byte i2cAdd)

Funktion: Initialisierung der Library mit I2C-Schnittstelle

Parameter: i2cAdd: I2C-Adresse des FRAMs

Rückgabe: keine


void init(byte cs)

Funktion: Initialisierung der Library mit SPI-Schnittstelle

Parameter: cs: CS-Pin (Chip Select-Pin) des FRAMs

Rückgabe: keine


void setSize(uint16_t size)

Funktion: Angabe der Speichergröße des FRAMs

Parameter: size: Speichergröße in kByte (size = 4, 16, 64, 128, 256 oder 512 kBit)

Rückgabe: keine

Bemerkung: Wenn bei der Erzeugung der Instanz die Speichergröße noch nicht feststeht oder das FRAM während der Programmlaufzeit getauscht wird, muss bzw. kann so die Speichergröße des FRAMs angegeben werden.


void setWriteEnable(bool enable)

Funktion: Setzen/Rücksetzten des Schreibfreigabe bei FRAM mit SPI-Schnittstelle

Parameter: enable: 0: kein Schreiben möglich (Schreibschutz gesetzt)

                              1: Schreiben möglich

Rückgabe: keine


bool getWriteEnable(void)

Funktion: Abfrage, ob die Schreibfreigabe bei FRAM mit SPI-Schnittstelle gesetzt ist

Parameter: keine

Rückgabe: TRUE, wenn Schreibfreigabe , sonst FALSE (Schreibschutz)


bool isReady(void)

Funktion: Überprüft, ob das FRAM über I2C-Schnittstelle ansprechbar ist

Parameter: keine

Rückgabe:  TRUE, wenn FRAM ansprechbar ist, sonst FALSE


void setStartAddress32Bit(uint32_t add)

Funktion: Setzen der Startadresse für Integer- (im long-Format) oder Float-Zahlen im FRAM-Speicher

Parameter: add: Startadresse (0 <= add <= Speichergröße [Byte])

Rückgabe: keine

Bemerkung: Wird die Startadresse mit dieser Funktion nicht definiert, ist die Startadresse im FRAM-Speicher mit Adresse 0 festgelegt.


byte readByte(uint32_t add)

Funktion: Lesen eines Bytes aus dem FRAM

Parameter: add: Adresse (0 <= add <= Speichergröße [Byte])

Rückgabe: Zahl, die auf "Adresse" gespeichert ist


void readBuffer(uint32_t add, byte* buf, byte anz, bool overRun)

Funktion: I2C-Schnittstelle: Liest max.30 Bytes aus dem FRAM und speichert sie in ein Buffer-Array

               SPI-Schnittstelle: Liest Bytes aus dem FRAM und speichert sie in ein Buffer-Array

Parameter: add: Adresse (0 <= add <= Speichergröße [Byte])

                 buf: Pointer auf ein Buffer-Array (maximal 30 Werte bei I2C-Schnittstelle)

                 anz: Anzahl der Bytes, die gelesen werden sollen

                 overRun: FRAM_OVERRUN: Speicherüberlauf möglich (siehe Bemerkung)

                                FRAM_NO_OVERRUN: Kein Speicherüberlauf möglich

Rückgabe: keine

Beispiel:

Fram.readBuffer(1024, buffer, sizeof(buffer), FRAM_NO_OVERRUN);

Bemerkung:

Speicherüberlauf möglich: Wird das Ende des Speichers erreicht, wird ab Speicherstelle 0 weiter geschrieben.

Kein Speicherüberlauf möglich: Wird das Ende des Speichers erreicht, werden die im Buffer-Array noch anstehenden Bytes nicht geschrieben.


long readLong(byte id)

Funktion: Lesen einer Integer-Zahl im long-Format (4 Byte) aus dem FRAM

Parameter: id: Identifier der Zahl (1 <= id <= 255)

Rückgabe: Integer-Zahl

Beispiel:

Fram.readLong(laenge);

Bemerkung: Es können bis zu 255 Integer- oder Float-Zahlen (siehe "readFloat") aus dem FRAM-Speicher gelesen werden, die vorher mit den Funktionen "writeLong" oder "writeFloat" gespeichert wurden.


float readFloat(byte id)

Funktion: Lesen einer Float-Zahl (4 Byte) aus dem FRAM

Parameter: id: Identifier der Zahl (1 <= id <= 255)

Rückgabe: Float-Zahl

Beispiel:

Fram.readFloat(laenge);

Bemerkung: Es können bis zu 255 Float- oder Integer-Zahlen (siehe "readLong") aus dem FRAM-Speicher gelesen werden, die vorher mit den Funktionen "writeFloat" oder "writeLong" gespeichert wurden.


void writeByte(uint32_t add, byte zahl)

Funktion: Schreiben eines Bytes in das FRAM

Parameter: add: Adresse (0 <= add <= Speichergröße [Byte])

                 zahl: Zahl, die gespeichert werden soll (0 <= zahl <= 255)

Rückgabe: keine


void writeBuffer(uint32_t add, byte* buf, byte anz, bool overRun)

Funktion: I2C-Schnittstelle: Schreibt max.30 Bytes aus einem Buffer-Array in das FRAM

               SPI-Schnittstelle: Schreibt Bytes aus einem Buffer-Array in das FRAM

Parameter: add: Adresse (0 <= add <= Speichergröße [Byte])

                 buf: Pointer auf ein Buffer-Array (maximal 30 Werte bei I2C-Schnittstelle)

                 anz: Anzahl der Bytes, die geschrieben werden sollen

                 overRun: FRAM_OVERRUN: Speicherüberlauf möglich (siehe Bemerkung)

                                FRAM_NO_OVERRUN: Kein Speicherüberlauf möglich

Rückgabe: keine

Beispiel:

Fram.writeBuffer(256, buffer, sizeof(buffer), FRAM_NO_OVERRUN);

Bemerkung:

Speicherüberlauf möglich: Wird das Ende des Speichers erreicht, wird ab Speicherstelle 0 weiter geschrieben.

Kein Speicherüberlauf möglich: Wird das Ende des Speichers erreicht, werden die im Buffer-Array noch anstehenden Bytes nicht geschrieben.


bool verifyBuffer(uint32_t add, byte* buf, byte anz, bool overRun)

Funktion: I2C-Schnittstelle: Vergleicht max.30 Bytes aus einem Buffer-Array mit dem FRAM

               SPI-Schnittstelle: Vergleicht Bytes aus einem Buffer-Array mit dem FRAM

Parameter: add: Adresse (0 <= add <= Speichergröße [Byte])

                 buf: Pointer auf ein Buffer-Array (maximal 30 Werte bei I2C-Schnittstelle)

                 anz: Anzahl der Bytes, die verglichen werden sollen

                 overRun: FRAM_OVERRUN: Speicherüberlauf möglich (siehe Bemerkung)

                                FRAM_NO_OVERRUN: Kein Speicherüberlauf möglich

Rückgabe: TRUE, wenn alle Bytes identisch sind, sonst FALSE

Beispiel:

bool test = Fram.verifyBuffer(256, buffer, sizeof(buffer), FRAM_NO_OVERRUN);

Bemerkung:

Speicherüberlauf möglich: Wird das Ende des Speichers erreicht, wird ab Speicherstelle 0 weiter verglichen.

Kein Speicherüberlauf möglich: Wird das Ende des Speichers erreicht, werden die im Buffer-Array noch anstehenden Bytes nicht verglichen.


void writeLong(byte id, long val)

Funktion: Schreiben einer Integer-Zahl im long-Format (4 Byte) in das FRAM

Parameter: id: Identifier der Zahl (1 <= id <= 255)

                 val: Wert der Integer-Zahl

Rückgabe: keine

Beispiel:

#define laenge 1

#define breite 2

Fram.writeLong(laenge, 37);

Fram.writeLong(breite, 26);

Bemerkung: Es können bis zu 255 Integer- oder Float-Zahlen (siehe "writeFloat") ab FRAM-Speicheradresse 0 oder ab der mit der Funktion "setStartAddress32Bit" festgelegten FRAM-Speicheradresse definiert und gespeichert werden.


void writeFloat(byte id, float val)

Funktion: Schreiben einer Float-Zahl (4 Byte) in das FRAM

Parameter: id: Identifier der Zahl (1 <= id <= 255)

                 val: Wert der Float-Zahl

Rückgabe: keine

Beispiel:

#define laenge 128

#define breite 129

Fram.writeFloat(laenge, 37.43);

Fram.writeFloat(breite, -4.81);

Bemerkung: Es können bis zu 255 Float- oder Integer-Zahlen (siehe "writeLong") ab FRAM-Speicheradresse 0 oder ab der mit der Funktion "setStartAddress32Bit" festgelegten FRAM-Speicheradresse definiert und gespeichert werden.


void clearAll()

Funktion: Löschen des gesamten FRAMs

Parameter: keine

Rückgabe: keine


void clear(uint32_t add)

Funktion: Löschen eines einzelnen Bytes

Parameter: add: Adresse (0 <= add <= Speichergröße [Byte])

Rückgabe: keine


void clear(uint32_t add, uint32_t addEnd)

Funktion: Löschen eines Speicherbereichs

Parameter: add: von Adresse (0 <= add <= Speichergröße [Byte])

                 addEnd: bis Adresse (0 <= add <= Speichergröße [Byte])

Rückgabe: keine



Variable:


uint16_t framSize

Enthält die FRAM-Speichergröße in Byte



Zur Library FRAM Speicher