Basic functions is OK. Lack interrupts function.
Diff: AK09970.h
- Revision:
- 0:4f87d5af61b1
- Child:
- 1:4eefcf1d7351
diff -r 000000000000 -r 4f87d5af61b1 AK09970.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/AK09970.h Thu Jan 26 03:08:15 2017 +0000 @@ -0,0 +1,38 @@ +#ifndef AK09970_H +#define AK09970_H + +#include "mbed.h" + + +#define AK09970_SLAVE_ADDR 0x18 // 0001_1000b + + +class AK09970 { +public: + struct Data { + float x; // uT/LSB + float y; + float z; + }; + + static const uint8_t DEVICE_ID = 0xC0; + + AK09970(I2C &i2c, PinName int1 = NC); + + void ConfigDevice(); + void GetDeviceID(uint8_t *id); + void GetData(Data *data); + +private: + I2C &_i2c; + InterruptIn _int1; + + float ConvertAdcToMagnetic(int16_t adc); + + void RegWrite(char reg, char val); + void RegWrite(char reg, char *val, int len); + void RegRead (char reg, char *val, int len); + void RegReadModifyWrite(char reg, char clr_mask, char set_mask); +}; + +#endif \ No newline at end of file