A ferroelectric random access memory or F-RAM is nonvolatile and performs reads and writes similar to a RAM.
FM24V10.h@1:b9f6d029c760, 2016-03-08 (annotated)
- 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?
User | Revision | Line number | New 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 |