Basic functions is OK. Lack interrupts function.

Dependents:   Mt05_MtSense07

Committer:
bcc6
Date:
Tue Mar 07 09:48:40 2017 +0000
Revision:
2:afb035feac6c
Parent:
1:4eefcf1d7351
Added config mode parameters

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcc6 1:4eefcf1d7351 1 /* Copyright (c) 2016 MtM Technology Corporation, MIT License
bcc6 1:4eefcf1d7351 2 *
bcc6 1:4eefcf1d7351 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
bcc6 1:4eefcf1d7351 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
bcc6 1:4eefcf1d7351 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
bcc6 1:4eefcf1d7351 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
bcc6 1:4eefcf1d7351 7 * furnished to do so, subject to the following conditions:
bcc6 1:4eefcf1d7351 8 *
bcc6 1:4eefcf1d7351 9 * The above copyright notice and this permission notice shall be included in all copies or
bcc6 1:4eefcf1d7351 10 * substantial portions of the Software.
bcc6 1:4eefcf1d7351 11 *
bcc6 1:4eefcf1d7351 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
bcc6 1:4eefcf1d7351 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
bcc6 1:4eefcf1d7351 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
bcc6 1:4eefcf1d7351 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
bcc6 1:4eefcf1d7351 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
bcc6 1:4eefcf1d7351 17 */
bcc6 0:4f87d5af61b1 18 #ifndef AK09970_H
bcc6 0:4f87d5af61b1 19 #define AK09970_H
bcc6 0:4f87d5af61b1 20
bcc6 0:4f87d5af61b1 21 #include "mbed.h"
bcc6 0:4f87d5af61b1 22
bcc6 0:4f87d5af61b1 23
bcc6 0:4f87d5af61b1 24 #define AK09970_SLAVE_ADDR 0x18 // 0001_1000b
bcc6 0:4f87d5af61b1 25
bcc6 0:4f87d5af61b1 26
bcc6 0:4f87d5af61b1 27 class AK09970 {
bcc6 0:4f87d5af61b1 28 public:
bcc6 2:afb035feac6c 29 enum SMR {
bcc6 2:afb035feac6c 30 SMR_HighSens = (0<<5),
bcc6 2:afb035feac6c 31 SMR_WideRange = (1<<5),
bcc6 2:afb035feac6c 32 };
bcc6 2:afb035feac6c 33
bcc6 2:afb035feac6c 34 enum SDR {
bcc6 2:afb035feac6c 35 SDR_LowNoise = (0<<4),
bcc6 2:afb035feac6c 36 SDR_LowPower = (1<<4),
bcc6 2:afb035feac6c 37 };
bcc6 2:afb035feac6c 38
bcc6 2:afb035feac6c 39 enum Mode {
bcc6 2:afb035feac6c 40 Mode_PowerDown = 0,
bcc6 2:afb035feac6c 41 Mode_Single,
bcc6 2:afb035feac6c 42 Mode_1_0p25Hz,
bcc6 2:afb035feac6c 43 Mode_2_0p5Hz = 4,
bcc6 2:afb035feac6c 44 Mode_3_1Hz = 6,
bcc6 2:afb035feac6c 45 Mode_4_10Hz = 8,
bcc6 2:afb035feac6c 46 Mode_5_20Hz = 10,
bcc6 2:afb035feac6c 47 Mode_6_50Hz = 12,
bcc6 2:afb035feac6c 48 Mode_7_100Hz = 14,
bcc6 2:afb035feac6c 49 };
bcc6 2:afb035feac6c 50
bcc6 0:4f87d5af61b1 51 struct Data {
bcc6 0:4f87d5af61b1 52 float x; // uT/LSB
bcc6 0:4f87d5af61b1 53 float y;
bcc6 0:4f87d5af61b1 54 float z;
bcc6 0:4f87d5af61b1 55 };
bcc6 0:4f87d5af61b1 56
bcc6 0:4f87d5af61b1 57 static const uint8_t DEVICE_ID = 0xC0;
bcc6 0:4f87d5af61b1 58
bcc6 0:4f87d5af61b1 59 AK09970(I2C &i2c, PinName int1 = NC);
bcc6 0:4f87d5af61b1 60
bcc6 2:afb035feac6c 61 void ConfigDevice(uint8_t mode = SMR_HighSens | SDR_LowNoise | Mode_1_0p25Hz);
bcc6 0:4f87d5af61b1 62 void GetDeviceID(uint8_t *id);
bcc6 0:4f87d5af61b1 63 void GetData(Data *data);
bcc6 0:4f87d5af61b1 64
bcc6 0:4f87d5af61b1 65 private:
bcc6 0:4f87d5af61b1 66 I2C &_i2c;
bcc6 0:4f87d5af61b1 67 InterruptIn _int1;
bcc6 2:afb035feac6c 68
bcc6 2:afb035feac6c 69 float _sensitivity;
bcc6 0:4f87d5af61b1 70
bcc6 0:4f87d5af61b1 71 float ConvertAdcToMagnetic(int16_t adc);
bcc6 0:4f87d5af61b1 72
bcc6 0:4f87d5af61b1 73 void RegWrite(char reg, char val);
bcc6 0:4f87d5af61b1 74 void RegWrite(char reg, char *val, int len);
bcc6 0:4f87d5af61b1 75 void RegRead (char reg, char *val, int len);
bcc6 0:4f87d5af61b1 76 void RegReadModifyWrite(char reg, char clr_mask, char set_mask);
bcc6 0:4f87d5af61b1 77 };
bcc6 0:4f87d5af61b1 78
bcc6 0:4f87d5af61b1 79 #endif