สัสชิน

Dependencies:   BEAR_Protocol_Edited_V22 BufferedSerial Debug MaxSonar PID Process QEI UI iSerial mbed

Fork of clean_V2 by Betago

Committer:
icyzkungz
Date:
Wed Jun 08 17:19:21 2016 +0000
Revision:
8:fc70c78a443b
Parent:
1:45f1573d65a1
??????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
palmdotax 1:45f1573d65a1 1 #ifndef __EEPROM__H_
palmdotax 1:45f1573d65a1 2 #define __EEPROM__H_
palmdotax 1:45f1573d65a1 3
palmdotax 1:45f1573d65a1 4 // Includes
palmdotax 1:45f1573d65a1 5 #include <string>
palmdotax 1:45f1573d65a1 6 #include "mbed.h"
palmdotax 1:45f1573d65a1 7
palmdotax 1:45f1573d65a1 8 // Defines
palmdotax 1:45f1573d65a1 9 #define EEPROM_Address 0xA0
palmdotax 1:45f1573d65a1 10
palmdotax 1:45f1573d65a1 11 #define EEPROM_NoError 0x00
palmdotax 1:45f1573d65a1 12 #define EEPROM_BadAddress 0x01
palmdotax 1:45f1573d65a1 13 #define EEPROM_I2cError 0x02
palmdotax 1:45f1573d65a1 14 #define EEPROM_ParamError 0x03
palmdotax 1:45f1573d65a1 15 #define EEPROM_OutOfRange 0x04
palmdotax 1:45f1573d65a1 16 #define EEPROM_MallocError 0x05
palmdotax 1:45f1573d65a1 17
palmdotax 1:45f1573d65a1 18 #define EEPROM_MaxError 6
palmdotax 1:45f1573d65a1 19
palmdotax 1:45f1573d65a1 20 static std::string _ErrorMessageEEPROM[EEPROM_MaxError] = { "",
palmdotax 1:45f1573d65a1 21 "Bad chip address",
palmdotax 1:45f1573d65a1 22 "I2C error (nack)",
palmdotax 1:45f1573d65a1 23 "Invalid parameter",
palmdotax 1:45f1573d65a1 24 "Data address out of range",
palmdotax 1:45f1573d65a1 25 "Memory allocation error"};
palmdotax 1:45f1573d65a1 26
palmdotax 1:45f1573d65a1 27 // Class
palmdotax 1:45f1573d65a1 28 class EEPROM
palmdotax 1:45f1573d65a1 29 {
palmdotax 1:45f1573d65a1 30 public:
palmdotax 1:45f1573d65a1 31 enum TypeEeprom {T24C01=128,T24C02=256,T24C04=512,T24C08=1024,T24C16=2048,
palmdotax 1:45f1573d65a1 32 T24C32=4096,T24C64=8192,T24C128=16384,T24C256=32768,
palmdotax 1:45f1573d65a1 33 T24C512=65536,T24C1024=131072,T24C1025=131073
palmdotax 1:45f1573d65a1 34 } Type;
palmdotax 1:45f1573d65a1 35
palmdotax 1:45f1573d65a1 36 /*
palmdotax 1:45f1573d65a1 37 * Constructor, initialize the eeprom on i2c interface.
palmdotax 1:45f1573d65a1 38 * @param sda : sda i2c pin (PinName)
palmdotax 1:45f1573d65a1 39 * @param scl : scl i2c pin (PinName)
palmdotax 1:45f1573d65a1 40 * @param address : eeprom address, according to eeprom type (uint8_t)
palmdotax 1:45f1573d65a1 41 * @param type : eeprom type (TypeEeprom)
palmdotax 1:45f1573d65a1 42 * @return none
palmdotax 1:45f1573d65a1 43 */
palmdotax 1:45f1573d65a1 44 EEPROM(PinName sda, PinName scl, uint8_t address, TypeEeprom type=T24C64);
palmdotax 1:45f1573d65a1 45
palmdotax 1:45f1573d65a1 46 /*
palmdotax 1:45f1573d65a1 47 * Random read byte
palmdotax 1:45f1573d65a1 48 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 49 * @param data : byte to read (int8_t&)
palmdotax 1:45f1573d65a1 50 * @return none
palmdotax 1:45f1573d65a1 51 */
palmdotax 1:45f1573d65a1 52 void read(uint16_t address, int8_t& data);
palmdotax 1:45f1573d65a1 53
palmdotax 1:45f1573d65a1 54 /*
palmdotax 1:45f1573d65a1 55 * Random read short
palmdotax 1:45f1573d65a1 56 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 57 * @param data : short to read (int16_t&)
palmdotax 1:45f1573d65a1 58 * @return none
palmdotax 1:45f1573d65a1 59 */
palmdotax 1:45f1573d65a1 60 void read(uint16_t address, int16_t& data);
palmdotax 1:45f1573d65a1 61
palmdotax 1:45f1573d65a1 62 /*
palmdotax 1:45f1573d65a1 63 * Random read long
palmdotax 1:45f1573d65a1 64 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 65 * @param data : long to read (int32_t&)
palmdotax 1:45f1573d65a1 66 * @return none
palmdotax 1:45f1573d65a1 67 */
palmdotax 1:45f1573d65a1 68 void read(uint16_t address, int32_t& data);
palmdotax 1:45f1573d65a1 69
palmdotax 1:45f1573d65a1 70 /*
palmdotax 1:45f1573d65a1 71 * Random read float
palmdotax 1:45f1573d65a1 72 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 73 * @param data : float to read (float&)
palmdotax 1:45f1573d65a1 74 * @return none
palmdotax 1:45f1573d65a1 75 */
palmdotax 1:45f1573d65a1 76 void read(uint16_t address, float& data);
palmdotax 1:45f1573d65a1 77
palmdotax 1:45f1573d65a1 78 /*
palmdotax 1:45f1573d65a1 79 * Random read anything
palmdotax 1:45f1573d65a1 80 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 81 * @param data : data to read (void *)
palmdotax 1:45f1573d65a1 82 * @param size : number of bytes to read (uint16_t)
palmdotax 1:45f1573d65a1 83 * @return none
palmdotax 1:45f1573d65a1 84 */
palmdotax 1:45f1573d65a1 85 void read(uint16_t address, void *data, uint16_t size);
palmdotax 1:45f1573d65a1 86
palmdotax 1:45f1573d65a1 87 /*
palmdotax 1:45f1573d65a1 88 * Current address read byte
palmdotax 1:45f1573d65a1 89 * @param data : byte to read (int8_t&)
palmdotax 1:45f1573d65a1 90 * @return none
palmdotax 1:45f1573d65a1 91 */
palmdotax 1:45f1573d65a1 92 void read(int8_t& data);
palmdotax 1:45f1573d65a1 93
palmdotax 1:45f1573d65a1 94 /*
palmdotax 1:45f1573d65a1 95 * Sequential read byte
palmdotax 1:45f1573d65a1 96 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 97 * @param data : bytes array to read (int8_t[]&)
palmdotax 1:45f1573d65a1 98 * @param size : number of bytes to read (uint16_t)
palmdotax 1:45f1573d65a1 99 * @return none
palmdotax 1:45f1573d65a1 100 */
palmdotax 1:45f1573d65a1 101 void read(uint16_t address, int8_t *data, uint16_t size);
palmdotax 1:45f1573d65a1 102
palmdotax 1:45f1573d65a1 103 /*
palmdotax 1:45f1573d65a1 104 * Write byte
palmdotax 1:45f1573d65a1 105 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 106 * @param data : byte to write (int8_t)
palmdotax 1:45f1573d65a1 107 * @return none
palmdotax 1:45f1573d65a1 108 */
palmdotax 1:45f1573d65a1 109 void write(uint16_t address, int8_t data);
palmdotax 1:45f1573d65a1 110
palmdotax 1:45f1573d65a1 111 /*
palmdotax 1:45f1573d65a1 112 * Write short
palmdotax 1:45f1573d65a1 113 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 114 * @param data : short to write (int16_t)
palmdotax 1:45f1573d65a1 115 * @return none
palmdotax 1:45f1573d65a1 116 */
palmdotax 1:45f1573d65a1 117 void write(uint16_t address, int16_t data);
palmdotax 1:45f1573d65a1 118
palmdotax 1:45f1573d65a1 119 /*
palmdotax 1:45f1573d65a1 120 * Write long
palmdotax 1:45f1573d65a1 121 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 122 * @param data : long to write (int32_t)
palmdotax 1:45f1573d65a1 123 * @return none
palmdotax 1:45f1573d65a1 124 */
palmdotax 1:45f1573d65a1 125 void write(uint16_t address, int32_t data);
palmdotax 1:45f1573d65a1 126
palmdotax 1:45f1573d65a1 127 /*
palmdotax 1:45f1573d65a1 128 * Write float
palmdotax 1:45f1573d65a1 129 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 130 * @param data : float to write (float)
palmdotax 1:45f1573d65a1 131 * @return error number if > 0 (uint8_t)
palmdotax 1:45f1573d65a1 132 */
palmdotax 1:45f1573d65a1 133 void write(uint16_t address, float data);
palmdotax 1:45f1573d65a1 134
palmdotax 1:45f1573d65a1 135 /*
palmdotax 1:45f1573d65a1 136 * Write anything
palmdotax 1:45f1573d65a1 137 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 138 * @param data : data to write (void *)
palmdotax 1:45f1573d65a1 139 * @param size : number of bytes to read (uint16_t)
palmdotax 1:45f1573d65a1 140 * @return none
palmdotax 1:45f1573d65a1 141 */
palmdotax 1:45f1573d65a1 142 void write(uint16_t address, void *data, uint16_t size);
palmdotax 1:45f1573d65a1 143
palmdotax 1:45f1573d65a1 144 /*
palmdotax 1:45f1573d65a1 145 * Write page
palmdotax 1:45f1573d65a1 146 * @param address : start address (uint16_t)
palmdotax 1:45f1573d65a1 147 * @param data : bytes array to write (int8_t[])
palmdotax 1:45f1573d65a1 148 * @param size : number of bytes to write (uint16_t)
palmdotax 1:45f1573d65a1 149 * @return none
palmdotax 1:45f1573d65a1 150 */
palmdotax 1:45f1573d65a1 151 void write(uint16_t address, int8_t data[], uint16_t size);
palmdotax 1:45f1573d65a1 152
palmdotax 1:45f1573d65a1 153 /*
palmdotax 1:45f1573d65a1 154 * Wait eeprom ready
palmdotax 1:45f1573d65a1 155 * @param : none
palmdotax 1:45f1573d65a1 156 * @return none
palmdotax 1:45f1573d65a1 157 */
palmdotax 1:45f1573d65a1 158 void ready(void);
palmdotax 1:45f1573d65a1 159
palmdotax 1:45f1573d65a1 160 /*
palmdotax 1:45f1573d65a1 161 * Get eeprom size in bytes
palmdotax 1:45f1573d65a1 162 * @param : none
palmdotax 1:45f1573d65a1 163 * @return size in bytes (uint16_t)
palmdotax 1:45f1573d65a1 164 */
palmdotax 1:45f1573d65a1 165 uint32_t getSize(void);
palmdotax 1:45f1573d65a1 166
palmdotax 1:45f1573d65a1 167 /*
palmdotax 1:45f1573d65a1 168 * Get the current error number (EEPROM_NoError if no error)
palmdotax 1:45f1573d65a1 169 * @param : none
palmdotax 1:45f1573d65a1 170 * @return current error number (uint8_t)
palmdotax 1:45f1573d65a1 171 */
palmdotax 1:45f1573d65a1 172 uint8_t getError(void);
palmdotax 1:45f1573d65a1 173
palmdotax 1:45f1573d65a1 174 /*
palmdotax 1:45f1573d65a1 175 * Get current error message
palmdotax 1:45f1573d65a1 176 * @param : none
palmdotax 1:45f1573d65a1 177 * @return current error message(std::string)
palmdotax 1:45f1573d65a1 178 */
palmdotax 1:45f1573d65a1 179 std::string getErrorMessage(void) {
palmdotax 1:45f1573d65a1 180 return(_ErrorMessageEEPROM[_errnum]);
palmdotax 1:45f1573d65a1 181 }
palmdotax 1:45f1573d65a1 182
palmdotax 1:45f1573d65a1 183 //---------- local variables ----------
palmdotax 1:45f1573d65a1 184 private:
palmdotax 1:45f1573d65a1 185 I2C _i2c; // Local i2c communication interface instance
palmdotax 1:45f1573d65a1 186 int _address; // Local ds1621 i2c address
palmdotax 1:45f1573d65a1 187 uint8_t _errnum; // Error number
palmdotax 1:45f1573d65a1 188 TypeEeprom _type; // EEPROM type
palmdotax 1:45f1573d65a1 189 uint8_t _page_write; // Page write size
palmdotax 1:45f1573d65a1 190 uint8_t _page_number; // Number of page
palmdotax 1:45f1573d65a1 191 uint32_t _size; // Size in bytes
palmdotax 1:45f1573d65a1 192 bool checkAddress(uint16_t address); // Check address range
palmdotax 1:45f1573d65a1 193 //-------------------------------------
palmdotax 1:45f1573d65a1 194 };
palmdotax 1:45f1573d65a1 195 #endif