text export

Dependencies:   X_NUCLEO_IKS01A3

Committer:
gpmbed
Date:
Wed May 19 15:54:08 2021 +0000
Revision:
9:8c7774aca512
test export

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gpmbed 9:8c7774aca512 1 /*
gpmbed 9:8c7774aca512 2 * ======== INA237.c ========
gpmbed 9:8c7774aca512 3 * INA237 APIs for initialization and use of the INA237 peripheral
gpmbed 9:8c7774aca512 4 *
gpmbed 9:8c7774aca512 5 * DO NOT EDIT - This file is generated by the SysConfig tool for
gpmbed 9:8c7774aca512 6 * the TI Sensors in this application.
gpmbed 9:8c7774aca512 7 */
gpmbed 9:8c7774aca512 8
gpmbed 9:8c7774aca512 9 #include <stddef.h>
gpmbed 9:8c7774aca512 10 #include <stdint.h>
gpmbed 9:8c7774aca512 11
gpmbed 9:8c7774aca512 12 #include "INA237.h"
gpmbed 9:8c7774aca512 13 //#include "mcu.h"
gpmbed 9:8c7774aca512 14
gpmbed 9:8c7774aca512 15
gpmbed 9:8c7774aca512 16 #define INA237_0_config_register_VALUE (INA237_config_register_rst_NormalOperation | \
gpmbed 9:8c7774aca512 17 0x0000U | \
gpmbed 9:8c7774aca512 18 INA237_config_register_tempcomp_Shunttemperaturecompensationdisabled | \
gpmbed 9:8c7774aca512 19 INA237_config_register_adcrange_16384mV)
gpmbed 9:8c7774aca512 20 #define INA237_0_adc_config_register_VALUE (INA237_adc_config_register_mode_Continuousbusvoltageshuntvoltageandtemperature | \
gpmbed 9:8c7774aca512 21 INA237_adc_config_register_vbusct_1052us | \
gpmbed 9:8c7774aca512 22 INA237_adc_config_register_vshct_1052us | \
gpmbed 9:8c7774aca512 23 INA237_adc_config_register_vtct_1052us | \
gpmbed 9:8c7774aca512 24 INA237_adc_config_register_avg_1)
gpmbed 9:8c7774aca512 25 #define INA237_0_shunt_cal_register_VALUE 0x0000U
gpmbed 9:8c7774aca512 26 #define INA237_0_diag_alrt_register_VALUE (INA237_diag_alrt_register_alrlen_Transparent | \
gpmbed 9:8c7774aca512 27 INA237_diag_alrt_register_cnvr_DisableconversionreadyflagonALERTpin | \
gpmbed 9:8c7774aca512 28 INA237_diag_alrt_register_slwalrt_ALERTcomparisononnonaveragedADCvalue | \
gpmbed 9:8c7774aca512 29 INA237_diag_alrt_register_apol_Normalactivelowopendrain)
gpmbed 9:8c7774aca512 30 #define INA237_0_sovl_register_VALUE 0x7FFFU
gpmbed 9:8c7774aca512 31 #define INA237_0_suvl_register_VALUE 0x8000U
gpmbed 9:8c7774aca512 32 #define INA237_0_bovl_register_VALUE 0x7FFFU
gpmbed 9:8c7774aca512 33 #define INA237_0_buvl_register_VALUE 0x0000U
gpmbed 9:8c7774aca512 34 #define INA237_0_temp_limit_register_VALUE 0x7FF0U
gpmbed 9:8c7774aca512 35 #define INA237_0_pwr_limit_register_VALUE 0xFFFFU
gpmbed 9:8c7774aca512 36
gpmbed 9:8c7774aca512 37 static INA237_State INA237_0_state = {
gpmbed 9:8c7774aca512 38 /* Configuration and Settings */
gpmbed 9:8c7774aca512 39 .config = INA237_0_config_register_VALUE,
gpmbed 9:8c7774aca512 40 .adcconfig = INA237_0_adc_config_register_VALUE,
gpmbed 9:8c7774aca512 41 .shuntcal = INA237_0_shunt_cal_register_VALUE,
gpmbed 9:8c7774aca512 42 .diagalrt = INA237_0_diag_alrt_register_VALUE,
gpmbed 9:8c7774aca512 43 .sovl = INA237_0_sovl_register_VALUE,
gpmbed 9:8c7774aca512 44 .suvl = INA237_0_suvl_register_VALUE,
gpmbed 9:8c7774aca512 45 .bovl = INA237_0_bovl_register_VALUE,
gpmbed 9:8c7774aca512 46 .buvl = INA237_0_buvl_register_VALUE,
gpmbed 9:8c7774aca512 47 .templimit = INA237_0_temp_limit_register_VALUE,
gpmbed 9:8c7774aca512 48 .pwrlimit = INA237_0_pwr_limit_register_VALUE,
gpmbed 9:8c7774aca512 49
gpmbed 9:8c7774aca512 50 .adcrange = INA237_0_config_register_VALUE & INA237_config_register_adcrange_4096mV,
gpmbed 9:8c7774aca512 51 .currentlsb = 0,
gpmbed 9:8c7774aca512 52
gpmbed 9:8c7774aca512 53 /* Sensor's I2C bus ID and address */
gpmbed 9:8c7774aca512 54 .busId = 0,
gpmbed 9:8c7774aca512 55 .devAddr = 0x40U,
gpmbed 9:8c7774aca512 56
gpmbed 9:8c7774aca512 57 };
gpmbed 9:8c7774aca512 58 const INA237_Handle INA237_0 = &INA237_0_state;
gpmbed 9:8c7774aca512 59
gpmbed 9:8c7774aca512 60
gpmbed 9:8c7774aca512 61
gpmbed 9:8c7774aca512 62 #define MSB(u16) (((u16) & 0xFF00U) >> 8)
gpmbed 9:8c7774aca512 63 #define LSB(u16) ((u16) & 0xFFU)
gpmbed 9:8c7774aca512 64
gpmbed 9:8c7774aca512 65 #define maxRegAddress 0x3F
gpmbed 9:8c7774aca512 66
gpmbed 9:8c7774aca512 67 // Register size in bytes
gpmbed 9:8c7774aca512 68 const uint8_t INA237_regSize[maxRegAddress+1] = {
gpmbed 9:8c7774aca512 69 2,2,2,2,2,2,2,2,\
gpmbed 9:8c7774aca512 70 3,2,2,2,2,2,2,2,\
gpmbed 9:8c7774aca512 71 2,2,0,0,0,0,0,0,\
gpmbed 9:8c7774aca512 72 0,0,0,0,0,0,0,0,\
gpmbed 9:8c7774aca512 73 0,0,0,0,0,0,0,0,\
gpmbed 9:8c7774aca512 74 0,0,0,0,0,0,0,0,\
gpmbed 9:8c7774aca512 75 0,0,0,0,0,0,0,0,\
gpmbed 9:8c7774aca512 76 0,0,0,0,0,0,2,2
gpmbed 9:8c7774aca512 77 };
gpmbed 9:8c7774aca512 78
gpmbed 9:8c7774aca512 79 void mcu_i2cInit(uint8_t busId);
gpmbed 9:8c7774aca512 80 int8_t mcu_i2cTransfer(uint8_t busId, uint8_t sensorAddress,
gpmbed 9:8c7774aca512 81 uint8_t *dataToWrite, uint8_t writeLength,
gpmbed 9:8c7774aca512 82 uint8_t *dataToRead, uint8_t readLength);
gpmbed 9:8c7774aca512 83 void mcu_msWait(unsigned long msWait);
gpmbed 9:8c7774aca512 84
gpmbed 9:8c7774aca512 85 /*
gpmbed 9:8c7774aca512 86 * ======== INA237_writeReg ========
gpmbed 9:8c7774aca512 87 * Write register
gpmbed 9:8c7774aca512 88 */
gpmbed 9:8c7774aca512 89 void INA237_writeReg(INA237_Handle sensor, uint8_t regAddr, uint16_t value)
gpmbed 9:8c7774aca512 90 {
gpmbed 9:8c7774aca512 91 uint8_t txBuf[3] = {0}; //All writable registers are 2 bytes
gpmbed 9:8c7774aca512 92
gpmbed 9:8c7774aca512 93 txBuf[0] = regAddr;
gpmbed 9:8c7774aca512 94 txBuf[1] = MSB(value);
gpmbed 9:8c7774aca512 95 txBuf[2] = LSB(value);
gpmbed 9:8c7774aca512 96 mcu_i2cTransfer(sensor->busId, sensor->devAddr, txBuf, 3, NULL, 0);
gpmbed 9:8c7774aca512 97
gpmbed 9:8c7774aca512 98 //check for change in ADCRANGE
gpmbed 9:8c7774aca512 99 if(regAddr == INA237_vshunt_register)
gpmbed 9:8c7774aca512 100 {
gpmbed 9:8c7774aca512 101 sensor->adcrange = value & INA237_config_register_adcrange_4096mV;
gpmbed 9:8c7774aca512 102 }
gpmbed 9:8c7774aca512 103 }
gpmbed 9:8c7774aca512 104
gpmbed 9:8c7774aca512 105 /*
gpmbed 9:8c7774aca512 106 * ======== INA237_config ========
gpmbed 9:8c7774aca512 107 * Configure device with current settings.
gpmbed 9:8c7774aca512 108 */
gpmbed 9:8c7774aca512 109 void INA237_config(INA237_Handle sensor)
gpmbed 9:8c7774aca512 110 {
gpmbed 9:8c7774aca512 111 //Initialize the bus containing this sensor
gpmbed 9:8c7774aca512 112 mcu_i2cInit(sensor->busId);
gpmbed 9:8c7774aca512 113
gpmbed 9:8c7774aca512 114 //Write sensor Configuration Register
gpmbed 9:8c7774aca512 115 INA237_writeReg(sensor, INA237_config_register, sensor->config);
gpmbed 9:8c7774aca512 116 INA237_writeReg(sensor, INA237_adc_config_register, sensor->adcconfig);
gpmbed 9:8c7774aca512 117 INA237_writeReg(sensor, INA237_shunt_cal_register, sensor->shuntcal);
gpmbed 9:8c7774aca512 118 INA237_writeReg(sensor, INA237_diag_alrt_register, sensor->diagalrt);
gpmbed 9:8c7774aca512 119 INA237_writeReg(sensor, INA237_sovl_register, sensor->sovl);
gpmbed 9:8c7774aca512 120 INA237_writeReg(sensor, INA237_suvl_register, sensor->suvl);
gpmbed 9:8c7774aca512 121 INA237_writeReg(sensor, INA237_bovl_register, sensor->bovl);
gpmbed 9:8c7774aca512 122 INA237_writeReg(sensor, INA237_buvl_register, sensor->buvl);
gpmbed 9:8c7774aca512 123 INA237_writeReg(sensor, INA237_temp_limit_register, sensor->templimit);
gpmbed 9:8c7774aca512 124 INA237_writeReg(sensor, INA237_pwr_limit_register, sensor->pwrlimit);
gpmbed 9:8c7774aca512 125 }
gpmbed 9:8c7774aca512 126
gpmbed 9:8c7774aca512 127 /*
gpmbed 9:8c7774aca512 128 * ======== INA237_setCURRENT_LSB ========
gpmbed 9:8c7774aca512 129 * Set the CURRENT_LSB value used for calculations
gpmbed 9:8c7774aca512 130 */
gpmbed 9:8c7774aca512 131 void INA237_setCURRENT_LSB(INA237_Handle sensor, float CURRENT_LSB)
gpmbed 9:8c7774aca512 132 {
gpmbed 9:8c7774aca512 133 sensor->currentlsb = CURRENT_LSB;
gpmbed 9:8c7774aca512 134 }
gpmbed 9:8c7774aca512 135
gpmbed 9:8c7774aca512 136 /*
gpmbed 9:8c7774aca512 137 * ======== INA237_readReg ========
gpmbed 9:8c7774aca512 138 * Read register
gpmbed 9:8c7774aca512 139 */
gpmbed 9:8c7774aca512 140 uint64_t INA237_readReg(INA237_Handle sensor, uint8_t regAddr)
gpmbed 9:8c7774aca512 141 {
gpmbed 9:8c7774aca512 142 uint64_t value;
gpmbed 9:8c7774aca512 143 int i;
gpmbed 9:8c7774aca512 144
gpmbed 9:8c7774aca512 145 uint8_t txBuf[1] = {0};
gpmbed 9:8c7774aca512 146 uint8_t rxBuf[5] = {0}; //max buffer size
gpmbed 9:8c7774aca512 147
gpmbed 9:8c7774aca512 148 txBuf[0] = regAddr;
gpmbed 9:8c7774aca512 149
gpmbed 9:8c7774aca512 150 //Read register
gpmbed 9:8c7774aca512 151 mcu_i2cTransfer(sensor->busId, sensor->devAddr, txBuf, 1, rxBuf, INA237_regSize[regAddr]);
gpmbed 9:8c7774aca512 152
gpmbed 9:8c7774aca512 153 //Combine bytes
gpmbed 9:8c7774aca512 154 value = rxBuf[0];
gpmbed 9:8c7774aca512 155 for(i = 1; i < INA237_regSize[regAddr]; i++)
gpmbed 9:8c7774aca512 156 {
gpmbed 9:8c7774aca512 157 value = (value << 8) | rxBuf[i];
gpmbed 9:8c7774aca512 158 }
gpmbed 9:8c7774aca512 159
gpmbed 9:8c7774aca512 160 return value;
gpmbed 9:8c7774aca512 161 }
gpmbed 9:8c7774aca512 162
gpmbed 9:8c7774aca512 163 /*
gpmbed 9:8c7774aca512 164 * ======== INA237_getVSHUNT_mV ========
gpmbed 9:8c7774aca512 165 * Get VSHUNT value (mV)
gpmbed 9:8c7774aca512 166 */
gpmbed 9:8c7774aca512 167 float INA237_getVSHUNT_mV(INA237_Handle sensor)
gpmbed 9:8c7774aca512 168 {
gpmbed 9:8c7774aca512 169 uint64_t value = INA237_readReg(sensor, INA237_vshunt_register);
gpmbed 9:8c7774aca512 170 float data;
gpmbed 9:8c7774aca512 171
gpmbed 9:8c7774aca512 172 //Convert for 2's compliment and signed value
gpmbed 9:8c7774aca512 173 if(value > 0x7FFF)
gpmbed 9:8c7774aca512 174 {
gpmbed 9:8c7774aca512 175 data = (float)value - 0x10000;
gpmbed 9:8c7774aca512 176 }
gpmbed 9:8c7774aca512 177 else
gpmbed 9:8c7774aca512 178 {
gpmbed 9:8c7774aca512 179 data = (float)value;
gpmbed 9:8c7774aca512 180 }
gpmbed 9:8c7774aca512 181
gpmbed 9:8c7774aca512 182 //Convert to mV
gpmbed 9:8c7774aca512 183
gpmbed 9:8c7774aca512 184 if(sensor->adcrange == INA237_config_register_adcrange_4096mV)
gpmbed 9:8c7774aca512 185 {
gpmbed 9:8c7774aca512 186 data = (data * 1.25) / 1000;
gpmbed 9:8c7774aca512 187 }
gpmbed 9:8c7774aca512 188 else
gpmbed 9:8c7774aca512 189 {
gpmbed 9:8c7774aca512 190 data = (data * 5) / 1000;
gpmbed 9:8c7774aca512 191 }
gpmbed 9:8c7774aca512 192
gpmbed 9:8c7774aca512 193 return data;
gpmbed 9:8c7774aca512 194 }
gpmbed 9:8c7774aca512 195
gpmbed 9:8c7774aca512 196 /*
gpmbed 9:8c7774aca512 197 * ======== INA237_getVBUS_V ========
gpmbed 9:8c7774aca512 198 * Get VBUS value (V)
gpmbed 9:8c7774aca512 199 */
gpmbed 9:8c7774aca512 200 float INA237_getVBUS_V(INA237_Handle sensor)
gpmbed 9:8c7774aca512 201 {
gpmbed 9:8c7774aca512 202 uint64_t value = INA237_readReg(sensor, INA237_vbus_register);
gpmbed 9:8c7774aca512 203 float data;
gpmbed 9:8c7774aca512 204
gpmbed 9:8c7774aca512 205 //Convert for 2's compliment and signed value (though always positive)
gpmbed 9:8c7774aca512 206 if(value > 0x7FFF)
gpmbed 9:8c7774aca512 207 {
gpmbed 9:8c7774aca512 208 data = (float)value - 0x10000; //left for redundancy and error checking, should never get used
gpmbed 9:8c7774aca512 209 }
gpmbed 9:8c7774aca512 210 else
gpmbed 9:8c7774aca512 211 {
gpmbed 9:8c7774aca512 212 data = (float)value;
gpmbed 9:8c7774aca512 213 }
gpmbed 9:8c7774aca512 214
gpmbed 9:8c7774aca512 215 //Convert to V
gpmbed 9:8c7774aca512 216 data = (data * 3.125) / 1000;
gpmbed 9:8c7774aca512 217
gpmbed 9:8c7774aca512 218 return data;
gpmbed 9:8c7774aca512 219 }
gpmbed 9:8c7774aca512 220
gpmbed 9:8c7774aca512 221 /*
gpmbed 9:8c7774aca512 222 * ======== INA237_getDIETEMP_C ========
gpmbed 9:8c7774aca512 223 * Get DIETMEP value (C)
gpmbed 9:8c7774aca512 224 */
gpmbed 9:8c7774aca512 225 float INA237_getDIETEMP_C(INA237_Handle sensor)
gpmbed 9:8c7774aca512 226 {
gpmbed 9:8c7774aca512 227 uint64_t value = INA237_readReg(sensor, INA237_dietemp_register);
gpmbed 9:8c7774aca512 228 float data;
gpmbed 9:8c7774aca512 229
gpmbed 9:8c7774aca512 230 //Remove reserved bits
gpmbed 9:8c7774aca512 231 value = value >> 4;
gpmbed 9:8c7774aca512 232
gpmbed 9:8c7774aca512 233 //Convert for 2's compliment and signed value
gpmbed 9:8c7774aca512 234 if(value > 0x7FF)
gpmbed 9:8c7774aca512 235 {
gpmbed 9:8c7774aca512 236 data = (float)value - 0x1000;
gpmbed 9:8c7774aca512 237 }
gpmbed 9:8c7774aca512 238 else
gpmbed 9:8c7774aca512 239 {
gpmbed 9:8c7774aca512 240 data = (float)value;
gpmbed 9:8c7774aca512 241 }
gpmbed 9:8c7774aca512 242
gpmbed 9:8c7774aca512 243 //Convert to C
gpmbed 9:8c7774aca512 244 data = (data * 125) / 1000;
gpmbed 9:8c7774aca512 245
gpmbed 9:8c7774aca512 246 return data;
gpmbed 9:8c7774aca512 247 }
gpmbed 9:8c7774aca512 248
gpmbed 9:8c7774aca512 249 /*
gpmbed 9:8c7774aca512 250 * ======== INA237_getDIETEMP_F ========
gpmbed 9:8c7774aca512 251 * Get DIETMEP value (F)
gpmbed 9:8c7774aca512 252 */
gpmbed 9:8c7774aca512 253 float INA237_getDIETEMP_F(INA237_Handle sensor)
gpmbed 9:8c7774aca512 254 {
gpmbed 9:8c7774aca512 255 float data = INA237_getDIETEMP_C(sensor);
gpmbed 9:8c7774aca512 256
gpmbed 9:8c7774aca512 257 //Convert to F
gpmbed 9:8c7774aca512 258 data = (data * (9/5)) + 32;
gpmbed 9:8c7774aca512 259
gpmbed 9:8c7774aca512 260 return data;
gpmbed 9:8c7774aca512 261 }
gpmbed 9:8c7774aca512 262
gpmbed 9:8c7774aca512 263 /*
gpmbed 9:8c7774aca512 264 * ======== INA237_getCURRENT_signedLSB ========
gpmbed 9:8c7774aca512 265 * Get CURRENT value (signed value in LSBs)
gpmbed 9:8c7774aca512 266 */
gpmbed 9:8c7774aca512 267 float INA237_getCURRENT_signedLSB(INA237_Handle sensor)
gpmbed 9:8c7774aca512 268 {
gpmbed 9:8c7774aca512 269 uint64_t value = INA237_readReg(sensor, INA237_current_register);
gpmbed 9:8c7774aca512 270 float data;
gpmbed 9:8c7774aca512 271
gpmbed 9:8c7774aca512 272 //Convert for 2's compliment and signed value
gpmbed 9:8c7774aca512 273 if(value > 0x7FFF)
gpmbed 9:8c7774aca512 274 {
gpmbed 9:8c7774aca512 275 data = (float)value - 0x10000;
gpmbed 9:8c7774aca512 276 }
gpmbed 9:8c7774aca512 277 else
gpmbed 9:8c7774aca512 278 {
gpmbed 9:8c7774aca512 279 data = (float)value;
gpmbed 9:8c7774aca512 280 }
gpmbed 9:8c7774aca512 281
gpmbed 9:8c7774aca512 282 return data;
gpmbed 9:8c7774aca512 283 }
gpmbed 9:8c7774aca512 284
gpmbed 9:8c7774aca512 285 /*
gpmbed 9:8c7774aca512 286 * ======== INA237_getCURRENT_A ========
gpmbed 9:8c7774aca512 287 * Get CURRENT value (A)
gpmbed 9:8c7774aca512 288 */
gpmbed 9:8c7774aca512 289 float INA237_getCURRENT_A(INA237_Handle sensor)
gpmbed 9:8c7774aca512 290 {
gpmbed 9:8c7774aca512 291 float data = INA237_getCURRENT_signedLSB(sensor);
gpmbed 9:8c7774aca512 292
gpmbed 9:8c7774aca512 293 data = data * sensor->currentlsb;
gpmbed 9:8c7774aca512 294
gpmbed 9:8c7774aca512 295 return data;
gpmbed 9:8c7774aca512 296 }
gpmbed 9:8c7774aca512 297
gpmbed 9:8c7774aca512 298 /*
gpmbed 9:8c7774aca512 299 * ======== INA237_getPOWER_signedLSB ========
gpmbed 9:8c7774aca512 300 * Get POWER value (signed value in LSBs)
gpmbed 9:8c7774aca512 301 */
gpmbed 9:8c7774aca512 302 float INA237_getPOWER_signedLSB(INA237_Handle sensor)
gpmbed 9:8c7774aca512 303 {
gpmbed 9:8c7774aca512 304 uint64_t value = INA237_readReg(sensor, INA237_power_register);
gpmbed 9:8c7774aca512 305 float data;
gpmbed 9:8c7774aca512 306
gpmbed 9:8c7774aca512 307 data = (float)value;
gpmbed 9:8c7774aca512 308
gpmbed 9:8c7774aca512 309 return data;
gpmbed 9:8c7774aca512 310 }
gpmbed 9:8c7774aca512 311
gpmbed 9:8c7774aca512 312 /*
gpmbed 9:8c7774aca512 313 * ======== INA237_getPOWER_W ========
gpmbed 9:8c7774aca512 314 * Get POWER value (W)
gpmbed 9:8c7774aca512 315 */
gpmbed 9:8c7774aca512 316 float INA237_getPOWER_W(INA237_Handle sensor)
gpmbed 9:8c7774aca512 317 {
gpmbed 9:8c7774aca512 318 float data = INA237_getPOWER_signedLSB(sensor);
gpmbed 9:8c7774aca512 319
gpmbed 9:8c7774aca512 320 data = data * sensor->currentlsb * 0.2;
gpmbed 9:8c7774aca512 321
gpmbed 9:8c7774aca512 322 return data;
gpmbed 9:8c7774aca512 323 }
gpmbed 9:8c7774aca512 324
gpmbed 9:8c7774aca512 325 void mcu_i2cInit(uint8_t busId)
gpmbed 9:8c7774aca512 326 {
gpmbed 9:8c7774aca512 327 /* Add MCU specific init necessary for I2C to be used */
gpmbed 9:8c7774aca512 328 }
gpmbed 9:8c7774aca512 329
gpmbed 9:8c7774aca512 330 int8_t mcu_i2cTransfer( uint8_t busId, uint8_t i2cAddr,
gpmbed 9:8c7774aca512 331 uint8_t *dataToWrite, uint8_t writeLength,
gpmbed 9:8c7774aca512 332 uint8_t *dataToRead, uint8_t readLength)
gpmbed 9:8c7774aca512 333 {
gpmbed 9:8c7774aca512 334 /*
gpmbed 9:8c7774aca512 335 * Add MCU specific I2C read/write code here.
gpmbed 9:8c7774aca512 336 */
gpmbed 9:8c7774aca512 337
gpmbed 9:8c7774aca512 338 /*
gpmbed 9:8c7774aca512 339 * Add MCU specific return code for error handling
gpmbed 9:8c7774aca512 340 */
gpmbed 9:8c7774aca512 341
gpmbed 9:8c7774aca512 342 return (0);
gpmbed 9:8c7774aca512 343 }
gpmbed 9:8c7774aca512 344 /********* MCU SPECIFIC I2C CODE ENDS HERE**********/
gpmbed 9:8c7774aca512 345
gpmbed 9:8c7774aca512 346
gpmbed 9:8c7774aca512 347
gpmbed 9:8c7774aca512 348
gpmbed 9:8c7774aca512 349 /********* MCU SPECIFIC DELAY CODE STARTS HERE************/
gpmbed 9:8c7774aca512 350 void mcu_msWait(unsigned long msWait)
gpmbed 9:8c7774aca512 351 {
gpmbed 9:8c7774aca512 352 /*
gpmbed 9:8c7774aca512 353 * Add MCU specific wait loop for msWait. The unit is in milli-seconds
gpmbed 9:8c7774aca512 354 */
gpmbed 9:8c7774aca512 355 }