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