TI HDC1000 Temperature and Humidity Sensor

Dependents:   test_HDC1000

Committer:
Rhyme
Date:
Mon Apr 17 02:49:07 2017 +0000
Revision:
0:1db0d0071723
Child:
1:f2c04c5b28ab
First working version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:1db0d0071723 1 #include "mbed.h"
Rhyme 0:1db0d0071723 2 #include "HDC1000.h"
Rhyme 0:1db0d0071723 3
Rhyme 0:1db0d0071723 4 #define REG_TEMPERATURE 0x00
Rhyme 0:1db0d0071723 5 #define REG_HUMIDITY 0x01
Rhyme 0:1db0d0071723 6 #define REG_CONFIGURATION 0x02
Rhyme 0:1db0d0071723 7 #define REG_ID_FIRST_WORD 0xFB
Rhyme 0:1db0d0071723 8 #define REG_ID_SECOND_WORD 0xFC
Rhyme 0:1db0d0071723 9 #define REG_ID_LAST_BYTE 0xFD
Rhyme 0:1db0d0071723 10 #define REG_MANUFACTURE_ID 0xFE
Rhyme 0:1db0d0071723 11 #define REG_DEVICE_ID 0xFF
Rhyme 0:1db0d0071723 12
Rhyme 0:1db0d0071723 13 /* Bit field of Configuration register */
Rhyme 0:1db0d0071723 14 /* bit[15] RST Sowtware Rest Bit 0: Normal 1: Reset
Rhyme 0:1db0d0071723 15 * bit[14:13] (Reserved) must be 00
Rhyme 0:1db0d0071723 16 * bit[12] MODE 0:Aquire Temp/Hum separately(16bit each) 1:Aquire both Temp/Hum same time (32bit)
Rhyme 0:1db0d0071723 17 * bit[11] BTST Battery Test(?) 0:VDD > 2.8V 1:VDD < 2.8V
Rhyme 0:1db0d0071723 18 * bit[10] TRES Temperature Resolution 0:14bit 1:11bit
Rhyme 0:1db0d0071723 19 * bit[9:8] HRES Humidity Resolution 00:14bit 01:11bit 10:8bit
Rhyme 0:1db0d0071723 20 * bit[7:0] (Reserved) must be 00000000
Rhyme 0:1db0d0071723 21 */
Rhyme 0:1db0d0071723 22 #define BIT_RESET 0x8000
Rhyme 0:1db0d0071723 23 #define BIT_MODE 0x1000
Rhyme 0:1db0d0071723 24 #define BIT_BTST 0x0800
Rhyme 0:1db0d0071723 25 #define BIT_TRES 0x0400
Rhyme 0:1db0d0071723 26 #define BIT_HRES14 0x0000
Rhyme 0:1db0d0071723 27 #define BIT_HRES11 0x0100
Rhyme 0:1db0d0071723 28 #define BIT_HRES08 0x0200
Rhyme 0:1db0d0071723 29
Rhyme 0:1db0d0071723 30 HDC1000::HDC1000(PinName sda, PinName scl, PinName rdy, int addr) : m_i2c(sda, scl), m_rdy(rdy), m_addr(addr<<1) {
Rhyme 0:1db0d0071723 31 // HDC1000::HDC1000(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr<<1) {
Rhyme 0:1db0d0071723 32 // activate the peripheral
Rhyme 0:1db0d0071723 33
Rhyme 0:1db0d0071723 34 }
Rhyme 0:1db0d0071723 35
Rhyme 0:1db0d0071723 36 HDC1000::~HDC1000(void)
Rhyme 0:1db0d0071723 37 {
Rhyme 0:1db0d0071723 38 }
Rhyme 0:1db0d0071723 39
Rhyme 0:1db0d0071723 40 void HDC1000::reset(void)
Rhyme 0:1db0d0071723 41 {
Rhyme 0:1db0d0071723 42 uint16_t conf = 0x8000 ;
Rhyme 0:1db0d0071723 43 setConfig(conf) ;
Rhyme 0:1db0d0071723 44 }
Rhyme 0:1db0d0071723 45
Rhyme 0:1db0d0071723 46 float HDC1000::readTemperature(void)
Rhyme 0:1db0d0071723 47 {
Rhyme 0:1db0d0071723 48 uint16_t utemp, uhum ;
Rhyme 0:1db0d0071723 49 int32_t ltemp ;
Rhyme 0:1db0d0071723 50 int mode ;
Rhyme 0:1db0d0071723 51 float ftemp ;
Rhyme 0:1db0d0071723 52
Rhyme 0:1db0d0071723 53 mode = getMode() ;
Rhyme 0:1db0d0071723 54 switch(mode) {
Rhyme 0:1db0d0071723 55 case 0: /* temp or hum can be acquired */
Rhyme 0:1db0d0071723 56 utemp = getTemperature() ;
Rhyme 0:1db0d0071723 57 break ;
Rhyme 0:1db0d0071723 58 case 1: /* temp and hum can be acquired */
Rhyme 0:1db0d0071723 59 getData(&utemp, &uhum) ;
Rhyme 0:1db0d0071723 60 break ;
Rhyme 0:1db0d0071723 61 default:
Rhyme 0:1db0d0071723 62 printf("Error: unexpected mode %d\n",mode) ;
Rhyme 0:1db0d0071723 63 break ;
Rhyme 0:1db0d0071723 64 }
Rhyme 0:1db0d0071723 65 // note: the data sheet suggests to use 0x10000 for denominator
Rhyme 0:1db0d0071723 66 // but to allow 100% I chose 0xFFFF instead, I may be wrong
Rhyme 0:1db0d0071723 67 printf("utemp = 0x%04X ", utemp) ;
Rhyme 0:1db0d0071723 68 ltemp = (utemp >> 2) & 0x3FFF ;
Rhyme 0:1db0d0071723 69
Rhyme 0:1db0d0071723 70 ftemp = ((float)(ltemp)/ (float)0x3FFF)*165.0 - 40.0 ;
Rhyme 0:1db0d0071723 71 return( ftemp ) ;
Rhyme 0:1db0d0071723 72 }
Rhyme 0:1db0d0071723 73
Rhyme 0:1db0d0071723 74 float HDC1000::readHumidity(void)
Rhyme 0:1db0d0071723 75 {
Rhyme 0:1db0d0071723 76 uint16_t utemp, uhume ;
Rhyme 0:1db0d0071723 77 int mode ;
Rhyme 0:1db0d0071723 78 int32_t lhume ;
Rhyme 0:1db0d0071723 79 float fhum ;
Rhyme 0:1db0d0071723 80
Rhyme 0:1db0d0071723 81 mode = getMode() ;
Rhyme 0:1db0d0071723 82 switch(mode) {
Rhyme 0:1db0d0071723 83 case 0: /* temp or hum can be acquired */
Rhyme 0:1db0d0071723 84 uhume = getHumidity() ;
Rhyme 0:1db0d0071723 85 break ;
Rhyme 0:1db0d0071723 86 case 1: /* temp and hum can be acquired */
Rhyme 0:1db0d0071723 87 getData(&utemp, &uhume) ;
Rhyme 0:1db0d0071723 88 break ;
Rhyme 0:1db0d0071723 89 default:
Rhyme 0:1db0d0071723 90 printf("Error: unexpected mode %d\n",mode) ;
Rhyme 0:1db0d0071723 91 break ;
Rhyme 0:1db0d0071723 92 }
Rhyme 0:1db0d0071723 93 // note: the data sheet suggests to use 0x10000 for denominator
Rhyme 0:1db0d0071723 94 // but to allow 100% I chose 0xFFFF instead, I may be wrong
Rhyme 0:1db0d0071723 95 printf("uhume = 0x%04X\n", uhume) ;
Rhyme 0:1db0d0071723 96 lhume = (uhume>>2) & 0x3FFF ;
Rhyme 0:1db0d0071723 97
Rhyme 0:1db0d0071723 98 fhum = ((float)(lhume) / (float)0x3FFF) * 100.0 ;
Rhyme 0:1db0d0071723 99 return( fhum ) ;
Rhyme 0:1db0d0071723 100 }
Rhyme 0:1db0d0071723 101
Rhyme 0:1db0d0071723 102 void HDC1000::readData(float *ftemp, float *fhume)
Rhyme 0:1db0d0071723 103 {
Rhyme 0:1db0d0071723 104 uint16_t utemp, uhume ;
Rhyme 0:1db0d0071723 105 getData(&utemp, &uhume) ;
Rhyme 0:1db0d0071723 106 printf("utemp: 0x%04X, uhume: 0x%04X\n", utemp, uhume) ;
Rhyme 0:1db0d0071723 107 utemp = (utemp >> 2) & 0x3FFF ;
Rhyme 0:1db0d0071723 108 uhume = (uhume >> 2) & 0x3FFF ;
Rhyme 0:1db0d0071723 109 *ftemp = ((float)(utemp)/ (float)0x3FFF)*165.0 - 40.0 ;
Rhyme 0:1db0d0071723 110 *fhume = ((float)(uhume) / (float)0x3FFF) * 100.0 ;
Rhyme 0:1db0d0071723 111 }
Rhyme 0:1db0d0071723 112 /* for mode 0 */
Rhyme 0:1db0d0071723 113 uint16_t HDC1000::getTemperature(void)
Rhyme 0:1db0d0071723 114 {
Rhyme 0:1db0d0071723 115 uint16_t temp ;
Rhyme 0:1db0d0071723 116 uint8_t data[2] ;
Rhyme 0:1db0d0071723 117 float delay ;
Rhyme 0:1db0d0071723 118 data[0] = REG_TEMPERATURE ;
Rhyme 0:1db0d0071723 119 data[1] = (m_addr << 1) | 0x01 ;
Rhyme 0:1db0d0071723 120 m_i2c.write(m_addr, (const char*)data, 2, true);
Rhyme 0:1db0d0071723 121 while(m_rdy == 1) { } /* wait for rdy */
Rhyme 0:1db0d0071723 122
Rhyme 0:1db0d0071723 123 // delay = getTDelay() ;
Rhyme 0:1db0d0071723 124 // wait_us(1000 * delay) ;
Rhyme 0:1db0d0071723 125
Rhyme 0:1db0d0071723 126 m_i2c.read(m_addr, (char *)data, 2);
Rhyme 0:1db0d0071723 127 temp = (data[0] << 8) | data[1] ;
Rhyme 0:1db0d0071723 128 return( temp ) ;
Rhyme 0:1db0d0071723 129 }
Rhyme 0:1db0d0071723 130
Rhyme 0:1db0d0071723 131 uint16_t HDC1000::getHumidity(void)
Rhyme 0:1db0d0071723 132 {
Rhyme 0:1db0d0071723 133 uint16_t hume ;
Rhyme 0:1db0d0071723 134 uint8_t data[2] ;
Rhyme 0:1db0d0071723 135 float delay ;
Rhyme 0:1db0d0071723 136 // readRegs(REG_HUMIDITY, data, 2) ;
Rhyme 0:1db0d0071723 137 data[0] = REG_HUMIDITY ;
Rhyme 0:1db0d0071723 138 data[1] = (m_addr << 1) | 0x01 ;
Rhyme 0:1db0d0071723 139 m_i2c.write(m_addr, (const char*)data, 2, true);
Rhyme 0:1db0d0071723 140
Rhyme 0:1db0d0071723 141 while(m_rdy == 1) { } /* wait for rdy */
Rhyme 0:1db0d0071723 142 // delay = getHDelay() ;
Rhyme 0:1db0d0071723 143 // wait_us(1000 * delay) ;
Rhyme 0:1db0d0071723 144 // wait(0.1) ;
Rhyme 0:1db0d0071723 145
Rhyme 0:1db0d0071723 146 m_i2c.read(m_addr, (char *)data, 2);
Rhyme 0:1db0d0071723 147 hume = (data[0] << 8) | data[1] ;
Rhyme 0:1db0d0071723 148 return( hume ) ;
Rhyme 0:1db0d0071723 149 }
Rhyme 0:1db0d0071723 150
Rhyme 0:1db0d0071723 151 /* for mode 1 */
Rhyme 0:1db0d0071723 152 void HDC1000::getData(uint16_t *temp, uint16_t *hume)
Rhyme 0:1db0d0071723 153 {
Rhyme 0:1db0d0071723 154 float delay ;
Rhyme 0:1db0d0071723 155 uint8_t data[4] = { 0, 0, 0, 0 } ;
Rhyme 0:1db0d0071723 156 int mode ;
Rhyme 0:1db0d0071723 157
Rhyme 0:1db0d0071723 158 mode = getMode() ;
Rhyme 0:1db0d0071723 159 if (mode == 0) {
Rhyme 0:1db0d0071723 160 *temp = getTemperature() ;
Rhyme 0:1db0d0071723 161 *hume = getHumidity() ;
Rhyme 0:1db0d0071723 162 } else { /* mode == 1 */
Rhyme 0:1db0d0071723 163 data[0] = REG_TEMPERATURE ;
Rhyme 0:1db0d0071723 164 data[1] = (m_addr << 1) | 0x01 ;
Rhyme 0:1db0d0071723 165 m_i2c.write(m_addr,(const char *)data, 2, false);
Rhyme 0:1db0d0071723 166
Rhyme 0:1db0d0071723 167 while(m_rdy == 1) { } /* wait for rdy */
Rhyme 0:1db0d0071723 168 // delay = getTDelay() + getHDelay() ;
Rhyme 0:1db0d0071723 169 // wait_us(1000 * delay) ;
Rhyme 0:1db0d0071723 170
Rhyme 0:1db0d0071723 171 // m_i2c.write(m_addr,(const char *)data, 1, true);
Rhyme 0:1db0d0071723 172 // while(m_rdy == 1) { } /* wait for rdy */
Rhyme 0:1db0d0071723 173 m_i2c.read(m_addr, (char *)data, 4);
Rhyme 0:1db0d0071723 174 *temp = (data[0] << 8) | data[1] ;
Rhyme 0:1db0d0071723 175 *hume = (data[2] << 8) | data[3] ;
Rhyme 0:1db0d0071723 176 }
Rhyme 0:1db0d0071723 177 }
Rhyme 0:1db0d0071723 178
Rhyme 0:1db0d0071723 179 void HDC1000::setConfig(uint16_t conf)
Rhyme 0:1db0d0071723 180 {
Rhyme 0:1db0d0071723 181 uint8_t data[3] ;
Rhyme 0:1db0d0071723 182 data[0] = REG_CONFIGURATION ;
Rhyme 0:1db0d0071723 183 data[1] = (conf >> 8) & 0xFF ;
Rhyme 0:1db0d0071723 184 data[2] = conf & 0xFF ;
Rhyme 0:1db0d0071723 185 writeRegs(data, 3) ;
Rhyme 0:1db0d0071723 186 }
Rhyme 0:1db0d0071723 187
Rhyme 0:1db0d0071723 188 uint16_t HDC1000::getConfig(void)
Rhyme 0:1db0d0071723 189 {
Rhyme 0:1db0d0071723 190 uint8_t data[2] ;
Rhyme 0:1db0d0071723 191 uint16_t conf ;
Rhyme 0:1db0d0071723 192 readRegs(REG_CONFIGURATION, data, 2) ;
Rhyme 0:1db0d0071723 193 conf = (data[0] << 8) | data[1] ;
Rhyme 0:1db0d0071723 194 return( conf ) ;
Rhyme 0:1db0d0071723 195 }
Rhyme 0:1db0d0071723 196
Rhyme 0:1db0d0071723 197 void HDC1000::setMode(int mode)
Rhyme 0:1db0d0071723 198 {
Rhyme 0:1db0d0071723 199 uint16_t conf ;
Rhyme 0:1db0d0071723 200 conf = getConfig() ;
Rhyme 0:1db0d0071723 201 if (mode) {
Rhyme 0:1db0d0071723 202 conf |= BIT_MODE ;
Rhyme 0:1db0d0071723 203 } else {
Rhyme 0:1db0d0071723 204 conf ^= BIT_MODE ;
Rhyme 0:1db0d0071723 205 }
Rhyme 0:1db0d0071723 206 setConfig( conf ) ;
Rhyme 0:1db0d0071723 207 }
Rhyme 0:1db0d0071723 208
Rhyme 0:1db0d0071723 209 int HDC1000::getMode(void)
Rhyme 0:1db0d0071723 210 {
Rhyme 0:1db0d0071723 211 uint16_t conf ;
Rhyme 0:1db0d0071723 212 int mode ;
Rhyme 0:1db0d0071723 213 conf = getConfig() ;
Rhyme 0:1db0d0071723 214 if (conf & BIT_MODE) {
Rhyme 0:1db0d0071723 215 mode = 1 ;
Rhyme 0:1db0d0071723 216 } else {
Rhyme 0:1db0d0071723 217 mode = 0 ;
Rhyme 0:1db0d0071723 218 }
Rhyme 0:1db0d0071723 219 return( mode ) ;
Rhyme 0:1db0d0071723 220 }
Rhyme 0:1db0d0071723 221
Rhyme 0:1db0d0071723 222 void HDC1000::setTres(int tres)
Rhyme 0:1db0d0071723 223 {
Rhyme 0:1db0d0071723 224 uint16_t conf ;
Rhyme 0:1db0d0071723 225 conf = getConfig() ;
Rhyme 0:1db0d0071723 226 if (tres) {
Rhyme 0:1db0d0071723 227 conf |= BIT_TRES ;
Rhyme 0:1db0d0071723 228 } else {
Rhyme 0:1db0d0071723 229 conf ^= BIT_TRES ;
Rhyme 0:1db0d0071723 230 }
Rhyme 0:1db0d0071723 231 }
Rhyme 0:1db0d0071723 232
Rhyme 0:1db0d0071723 233 int HDC1000::getTres(void)
Rhyme 0:1db0d0071723 234 {
Rhyme 0:1db0d0071723 235 uint16_t conf ;
Rhyme 0:1db0d0071723 236 int tres ;
Rhyme 0:1db0d0071723 237 conf = getConfig() ;
Rhyme 0:1db0d0071723 238 if (conf & BIT_TRES) {
Rhyme 0:1db0d0071723 239 tres = 1 ;
Rhyme 0:1db0d0071723 240 } else {
Rhyme 0:1db0d0071723 241 tres = 0 ;
Rhyme 0:1db0d0071723 242 }
Rhyme 0:1db0d0071723 243 return( tres ) ;
Rhyme 0:1db0d0071723 244 }
Rhyme 0:1db0d0071723 245
Rhyme 0:1db0d0071723 246 void HDC1000::setHres(int hres)
Rhyme 0:1db0d0071723 247 {
Rhyme 0:1db0d0071723 248 uint16_t conf ;
Rhyme 0:1db0d0071723 249 conf = getConfig() ;
Rhyme 0:1db0d0071723 250 conf ^= (BIT_HRES11 | BIT_HRES08) ;
Rhyme 0:1db0d0071723 251 conf |= ((hres & 0x03) << 8) ;
Rhyme 0:1db0d0071723 252 }
Rhyme 0:1db0d0071723 253
Rhyme 0:1db0d0071723 254 int HDC1000::getHres(void)
Rhyme 0:1db0d0071723 255 {
Rhyme 0:1db0d0071723 256 uint16_t conf ;
Rhyme 0:1db0d0071723 257 int hres ;
Rhyme 0:1db0d0071723 258 conf = getConfig() ;
Rhyme 0:1db0d0071723 259 hres = (conf >> 8)&0x03 ;
Rhyme 0:1db0d0071723 260 return( hres ) ;
Rhyme 0:1db0d0071723 261 }
Rhyme 0:1db0d0071723 262
Rhyme 0:1db0d0071723 263 void HDC1000::getSerialID(uint8_t data[])
Rhyme 0:1db0d0071723 264 {
Rhyme 0:1db0d0071723 265 uint8_t udata[2] ;
Rhyme 0:1db0d0071723 266 readRegs(REG_ID_FIRST_WORD, &data[0], 2) ;
Rhyme 0:1db0d0071723 267 readRegs(REG_ID_SECOND_WORD, &data[2], 2) ;
Rhyme 0:1db0d0071723 268 readRegs(REG_ID_LAST_BYTE, udata, 2) ;
Rhyme 0:1db0d0071723 269 data[4] = udata[0] ;
Rhyme 0:1db0d0071723 270 }
Rhyme 0:1db0d0071723 271
Rhyme 0:1db0d0071723 272 uint16_t HDC1000::getManufactureID(void) /* 0x5449 : Texas Instruments */
Rhyme 0:1db0d0071723 273 {
Rhyme 0:1db0d0071723 274 uint8_t data[2] ;
Rhyme 0:1db0d0071723 275 uint16_t id ;
Rhyme 0:1db0d0071723 276 readRegs(REG_MANUFACTURE_ID, data, 2) ;
Rhyme 0:1db0d0071723 277 id = (data[0] << 8) | data[1] ;
Rhyme 0:1db0d0071723 278 return( id ) ;
Rhyme 0:1db0d0071723 279 }
Rhyme 0:1db0d0071723 280
Rhyme 0:1db0d0071723 281 uint16_t HDC1000::getDeviceID(void) /* 0x1000 */
Rhyme 0:1db0d0071723 282 {
Rhyme 0:1db0d0071723 283 uint8_t data[2] ;
Rhyme 0:1db0d0071723 284 uint16_t id ;
Rhyme 0:1db0d0071723 285 readRegs(REG_DEVICE_ID, data, 2) ;
Rhyme 0:1db0d0071723 286 id = (data[0] << 8) | data[1] ;
Rhyme 0:1db0d0071723 287 return( id ) ;
Rhyme 0:1db0d0071723 288 }
Rhyme 0:1db0d0071723 289
Rhyme 0:1db0d0071723 290 float HDC1000::getTDelay(void)
Rhyme 0:1db0d0071723 291 {
Rhyme 0:1db0d0071723 292 int tres ;
Rhyme 0:1db0d0071723 293 float tdelay ;
Rhyme 0:1db0d0071723 294
Rhyme 0:1db0d0071723 295 tres = getTres() ;
Rhyme 0:1db0d0071723 296 switch(tres) {
Rhyme 0:1db0d0071723 297 case 0: /* 14bit */
Rhyme 0:1db0d0071723 298 tdelay = 6.35 ;
Rhyme 0:1db0d0071723 299 break ;
Rhyme 0:1db0d0071723 300 case 1: /* 11bit */
Rhyme 0:1db0d0071723 301 tdelay = 3.65 ;
Rhyme 0:1db0d0071723 302 break ;
Rhyme 0:1db0d0071723 303 default:
Rhyme 0:1db0d0071723 304 tdelay = 6.35 ;
Rhyme 0:1db0d0071723 305 break ;
Rhyme 0:1db0d0071723 306 }
Rhyme 0:1db0d0071723 307 return(tdelay) ;
Rhyme 0:1db0d0071723 308 }
Rhyme 0:1db0d0071723 309
Rhyme 0:1db0d0071723 310 float HDC1000::getHDelay(void)
Rhyme 0:1db0d0071723 311 {
Rhyme 0:1db0d0071723 312 int hres ;
Rhyme 0:1db0d0071723 313 float hdelay ;
Rhyme 0:1db0d0071723 314
Rhyme 0:1db0d0071723 315 hres = getHres() ;
Rhyme 0:1db0d0071723 316 switch(hres) {
Rhyme 0:1db0d0071723 317 case 0: /* 14bit */
Rhyme 0:1db0d0071723 318 hdelay = 6.5 ;
Rhyme 0:1db0d0071723 319 break ;
Rhyme 0:1db0d0071723 320 case 1: /* 11bit */
Rhyme 0:1db0d0071723 321 hdelay = 3.85 ;
Rhyme 0:1db0d0071723 322 break ;
Rhyme 0:1db0d0071723 323 case 2: /* 8bit */
Rhyme 0:1db0d0071723 324 hdelay = 2.5 ;
Rhyme 0:1db0d0071723 325 break ;
Rhyme 0:1db0d0071723 326 default:
Rhyme 0:1db0d0071723 327 hdelay = 6.5 ; /* let's use the longest value */
Rhyme 0:1db0d0071723 328 break ;
Rhyme 0:1db0d0071723 329 }
Rhyme 0:1db0d0071723 330 return(hdelay) ;
Rhyme 0:1db0d0071723 331 }
Rhyme 0:1db0d0071723 332
Rhyme 0:1db0d0071723 333 float HDC1000::getDelay(void)
Rhyme 0:1db0d0071723 334 {
Rhyme 0:1db0d0071723 335 float tdelay, hdelay ;
Rhyme 0:1db0d0071723 336 tdelay = getTDelay() ;
Rhyme 0:1db0d0071723 337 hdelay = getHDelay() ;
Rhyme 0:1db0d0071723 338 return( tdelay + hdelay ) ;
Rhyme 0:1db0d0071723 339 }
Rhyme 0:1db0d0071723 340
Rhyme 0:1db0d0071723 341 void HDC1000::readRegs(int addr, uint8_t * data, int len) {
Rhyme 0:1db0d0071723 342 char t[1] = {addr};
Rhyme 0:1db0d0071723 343 m_i2c.write(m_addr, t, 1, true);
Rhyme 0:1db0d0071723 344 m_i2c.read(m_addr, (char *)data, len) ;
Rhyme 0:1db0d0071723 345 }
Rhyme 0:1db0d0071723 346
Rhyme 0:1db0d0071723 347 void HDC1000::writeRegs(uint8_t * data, int len) {
Rhyme 0:1db0d0071723 348 m_i2c.write(m_addr, (char *)data, len);
Rhyme 0:1db0d0071723 349 }