A ferroelectric random access memory or F-RAM is nonvolatile and performs reads and writes similar to a RAM.

Dependents:   Memoria

Committer:
yangcq88517
Date:
Tue Mar 08 22:59:15 2016 +0000
Revision:
1:b9f6d029c760
Parent:
0:e4b7a2f63736
16 bit value only

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yangcq88517 0:e4b7a2f63736 1 #ifndef UK_AC_HERTS_SMARTLAB_FM24V10
yangcq88517 0:e4b7a2f63736 2 #define UK_AC_HERTS_SMARTLAB_FM24V10
yangcq88517 0:e4b7a2f63736 3
yangcq88517 0:e4b7a2f63736 4 #include "mbed.h"
yangcq88517 0:e4b7a2f63736 5
yangcq88517 0:e4b7a2f63736 6 class FM24V10
yangcq88517 0:e4b7a2f63736 7 {
yangcq88517 0:e4b7a2f63736 8 public :
yangcq88517 1:b9f6d029c760 9 /*
yangcq88517 1:b9f6d029c760 10 *The speed grades (standard mode: 100 kbit/s, full speed: 400 kbit/s, fast mode: 1 mbit/s, high speed: 3,2 Mbit/s) are maximum ratings. Compliant hardware guaranties that it can handle transmission speed up to the maximum clock rate specified by the mode.
yangcq88517 1:b9f6d029c760 11 */
yangcq88517 0:e4b7a2f63736 12 enum SPEED_MODE {
yangcq88517 0:e4b7a2f63736 13 STANDARD,FULL,FAST,HIGH
yangcq88517 0:e4b7a2f63736 14 };
yangcq88517 0:e4b7a2f63736 15
yangcq88517 1:b9f6d029c760 16 FM24V10(PinName sda, PinName scl, bool A1, bool A2, SPEED_MODE speed = FULL);
yangcq88517 0:e4b7a2f63736 17
yangcq88517 1:b9f6d029c760 18 void WriteShort(int position, int value, bool Hs_mode = false);
yangcq88517 0:e4b7a2f63736 19
yangcq88517 1:b9f6d029c760 20 void WriteShort(int position, int * value, int size, bool Hs_mode = false);
yangcq88517 0:e4b7a2f63736 21
yangcq88517 1:b9f6d029c760 22 void ReadShort(int position, int * value, int size, bool Hs_mode = false);
yangcq88517 1:b9f6d029c760 23
yangcq88517 1:b9f6d029c760 24 int ReadShort(int position, bool Hs_mode = false);
yangcq88517 1:b9f6d029c760 25
yangcq88517 0:e4b7a2f63736 26 private :
yangcq88517 0:e4b7a2f63736 27 static const int HS_COMMAND = 0x09;
yangcq88517 0:e4b7a2f63736 28
yangcq88517 0:e4b7a2f63736 29 static const int FREQUENCY_STANDARD = 100000;
yangcq88517 0:e4b7a2f63736 30 static const int FREQUENCY_FULL = 400000;
yangcq88517 0:e4b7a2f63736 31 static const int FREQUENCY_FAST = 1000000;
yangcq88517 0:e4b7a2f63736 32 static const int FREQUENCY_HIGH = 3200000;
yangcq88517 0:e4b7a2f63736 33
yangcq88517 0:e4b7a2f63736 34 I2C _i2c_bus;
yangcq88517 0:e4b7a2f63736 35 int _speed;
yangcq88517 0:e4b7a2f63736 36 int _addr;
yangcq88517 1:b9f6d029c760 37
yangcq88517 0:e4b7a2f63736 38 int result;
yangcq88517 0:e4b7a2f63736 39
yangcq88517 0:e4b7a2f63736 40 void Init(bool A1, bool A2);
yangcq88517 0:e4b7a2f63736 41
yangcq88517 0:e4b7a2f63736 42 void GetSlaveAddress(int position);
yangcq88517 0:e4b7a2f63736 43
yangcq88517 0:e4b7a2f63736 44 void StartHS();
yangcq88517 0:e4b7a2f63736 45
yangcq88517 0:e4b7a2f63736 46 void StopHS();
yangcq88517 0:e4b7a2f63736 47 };
yangcq88517 0:e4b7a2f63736 48
yangcq88517 0:e4b7a2f63736 49 #endif