Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #pragma systemFile
00032
00033 #ifndef __COMMON_H__
00034 #include "common.h"
00035 #endif
00036
00037 #define EEPROM_I2C_ADDR 0xA0
00038
00039
00040 #define EEPROM_PAGE_SIZE 128
00041
00042 tByteArray EEPROM_I2CRequest;
00043 tByteArray EEPROM_I2CReply;
00044
00045
00046
00047
00048 bool EEPROMreadBytes(tSensors link, long address, tByteArray &data, int numbytes);
00049 bool EEPROMwriteBytes(tSensors link, long address, tByteArray &data, int numbytes);
00050 bool _EEPROMwriteDummy(tSensors link, long address);
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 bool EEPROMreadBytes(tSensors link, long address, tByteArray &data, int numbytes) {
00062 if (!_EEPROMwriteDummy(link, address))
00063 return false;
00064
00065 memset(EEPROM_I2CRequest, 0, sizeof(tByteArray));
00066
00067 EEPROM_I2CRequest[0] = 1;
00068 EEPROM_I2CRequest[1] = EEPROM_I2C_ADDR;
00069
00070 if (!writeI2C(link, EEPROM_I2CRequest, numbytes))
00071 return false;
00072
00073 if (!readI2C(link, EEPROM_I2CReply, numbytes))
00074 return false;
00075
00076 memcpy(data, EEPROM_I2CReply, sizeof(tByteArray));
00077 return true;
00078 }
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089 bool _EEPROMwriteDummy(tSensors link, long address) {
00090 memset(EEPROM_I2CRequest, 0, sizeof(tByteArray));
00091
00092 EEPROM_I2CRequest[0] = 3;
00093 EEPROM_I2CRequest[1] = EEPROM_I2C_ADDR;
00094 EEPROM_I2CRequest[2] = (byte)((address >> 8) & 0xFF);
00095 EEPROM_I2CRequest[3] = (byte)(address & 0xFF);
00096
00097 return writeI2C(link, EEPROM_I2CRequest, 0);
00098 }
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 bool EEPROMwriteBytes(tSensors link, long address, tByteArray &data, int numbytes) {
00110 memset(EEPROM_I2CRequest, 0, sizeof(tByteArray));
00111
00112 EEPROM_I2CRequest[0] = 3 + numbytes;
00113 EEPROM_I2CRequest[1] = EEPROM_I2C_ADDR;
00114 EEPROM_I2CRequest[2] = (byte)((address >> 8) & 0xFF);
00115 EEPROM_I2CRequest[3] = (byte)(address & 0xFF);
00116
00117 if (numbytes > 13)
00118 numbytes = 13;
00119
00120 if (numbytes < 0)
00121 numbytes = 0;
00122
00123 memcpy(EEPROM_I2CRequest[4], data[0], numbytes);
00124 return writeI2C(link, EEPROM_I2CRequest, 0);
00125 }
00126
00127
00128
00129
00130
00131