AKM AK9752 Ultra-small IR Sensor IC with I2C I/F

Committer:
Rhyme
Date:
Wed Dec 27 06:26:33 2017 +0000
Revision:
0:d177a32f8f36
First working version, no documents in place

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:d177a32f8f36 1 /*************************************
Rhyme 0:d177a32f8f36 2 * AK9752
Rhyme 0:d177a32f8f36 3 * AKM Ultra-small IR Sensor IC with I2C I/F
Rhyme 0:d177a32f8f36 4 **/
Rhyme 0:d177a32f8f36 5 #ifndef _AK9752_H_
Rhyme 0:d177a32f8f36 6 #define _AK9752_H_
Rhyme 0:d177a32f8f36 7 #include "mbed.h"
Rhyme 0:d177a32f8f36 8
Rhyme 0:d177a32f8f36 9 class AK9752
Rhyme 0:d177a32f8f36 10 {
Rhyme 0:d177a32f8f36 11 public:
Rhyme 0:d177a32f8f36 12 /**
Rhyme 0:d177a32f8f36 13 * AK9752 constructor
Rhyme 0:d177a32f8f36 14 *
Rhyme 0:d177a32f8f36 15 * @param sda SDA pin
Rhyme 0:d177a32f8f36 16 * @param sdl SCL pin
Rhyme 0:d177a32f8f36 17 * @param addr addr of the I2C peripheral
Rhyme 0:d177a32f8f36 18 */
Rhyme 0:d177a32f8f36 19 AK9752(PinName sda, PinName scl, int addr);
Rhyme 0:d177a32f8f36 20
Rhyme 0:d177a32f8f36 21 /**
Rhyme 0:d177a32f8f36 22 * AK9752 destructor
Rhyme 0:d177a32f8f36 23 */
Rhyme 0:d177a32f8f36 24 ~AK9752();
Rhyme 0:d177a32f8f36 25
Rhyme 0:d177a32f8f36 26 uint8_t getCompanyCode(void) ; /* 0x48 expected */
Rhyme 0:d177a32f8f36 27 uint8_t getDeviceID(void) ; /* 0x14 expected */
Rhyme 0:d177a32f8f36 28 bool dataReady(void) ; /* returns ST1[0], read ST2 to clear */
Rhyme 0:d177a32f8f36 29 uint8_t getIntcause(void) ; /* get REG_INTCAUSE (0x05) */
Rhyme 0:d177a32f8f36 30 int16_t getRawIR(void) ; /* raw data, must be mulitplied by 0.4578 for pA */
Rhyme 0:d177a32f8f36 31 float getIR(void) ;
Rhyme 0:d177a32f8f36 32 int16_t getRawTMP(void) ; /* raw data, must be multiplied by 0.0019837 and + 25 */
Rhyme 0:d177a32f8f36 33 float getTMP(void) ;
Rhyme 0:d177a32f8f36 34 bool dataOverRun(void) ; /* check data over run and clear data ready */
Rhyme 0:d177a32f8f36 35 void getTHIR(int16_t *high, int16_t *low) ;
Rhyme 0:d177a32f8f36 36 void setTHIR(int16_t high, int16_t low) ;
Rhyme 0:d177a32f8f36 37 void getTHTMP(int16_t *high, int16_t *low) ;
Rhyme 0:d177a32f8f36 38 void setTHTMP(int16_t high, int16_t low) ;
Rhyme 0:d177a32f8f36 39 uint8_t getINTEN(void) ;
Rhyme 0:d177a32f8f36 40 void setINTEN(uint8_t value) ;
Rhyme 0:d177a32f8f36 41 uint8_t getCNTL1(void) ;
Rhyme 0:d177a32f8f36 42 void setCNTL1(uint8_t value) ;
Rhyme 0:d177a32f8f36 43 uint8_t getCNTL2(void) ;
Rhyme 0:d177a32f8f36 44 void setCNTL2(uint8_t value) ;
Rhyme 0:d177a32f8f36 45 void software_reset(void) ;
Rhyme 0:d177a32f8f36 46
Rhyme 0:d177a32f8f36 47 private:
Rhyme 0:d177a32f8f36 48 I2C m_i2c;
Rhyme 0:d177a32f8f36 49 int m_addr;
Rhyme 0:d177a32f8f36 50 int readRegs(int addr, uint8_t * data, int len);
Rhyme 0:d177a32f8f36 51 int writeRegs(uint8_t * data, int len);
Rhyme 0:d177a32f8f36 52 };
Rhyme 0:d177a32f8f36 53
Rhyme 0:d177a32f8f36 54 #endif /* _AK9752_H_ */