Combine AS7000 into BNO055
Fork of BNO055 by
Diff: BNO055.cpp
- Revision:
- 10:1914e07be563
- Parent:
- 9:f04b0a4c8057
diff -r f04b0a4c8057 -r 1914e07be563 BNO055.cpp --- a/BNO055.cpp Thu May 04 02:37:08 2017 +0000 +++ b/BNO055.cpp Mon May 22 08:03:56 2017 +0000 @@ -1,6 +1,9 @@ #include "BNO055.h" #include "mbed.h" +DigitalOut AS7000_GPIO8(p5); //NNN50-P5 map to GPIO-8 for AS7000 on/off +DigitalInOut AS7000_INT(p4); //NNN50-P4 GPIO-5 for AS7000 INT + BNO055::BNO055(PinName SDA, PinName SCL) : _i2c(SDA,SCL){ //Set I2C fast and bring reset line high _i2c.frequency(400000); @@ -9,6 +12,19 @@ rate_scale = 1.0f/16.0f; angle_scale = 1.0f/16.0f; temp_scale = 1; + + //Set I2C fast and bring reset line high + //_i2c.frequency(400000); + //address = AS7000Address; + + AS7000_INT.mode(PullNone); + + AS7000_INT.output(); + + AS7000_GPIO8.write(1); // Power OFF AS7000 + AS7000_INT.write(1); // AS7000 GPIO OUTPUT LOW + AS7000_INT.input(); + wait_ms(100); } void BNO055::reset(){ @@ -277,4 +293,42 @@ writechar(BNO055_AXIS_MAP_CONFIG_ADDR,0x24); writechar(BNO055_AXIS_MAP_SIGN_ADDR,0x00); } +} + +//AS7000::AS7000(PinName SDA, PinName SCL) : _i2c(SDA,SCL){ +// +//} + +void BNO055::enable(void){ + char cmd[2]; + + AS7000_GPIO8.write(0); //Power ON AS7000 + wait_ms(280); //Wait for > 250ms for booting + + cmd[0] = AS7000_STARTUP; //0x04; + cmd[1] = 0x02; + _i2c.write(AS7000Address, cmd, 2); + wait_ms(35); + +} + +void BNO055::update(void){ + +} + +void BNO055::hr_only(void){ + char cmd[2]; + cmd[0] = HR_ONLY; + if(AS7000_INT == 0) { + _i2c.write(AS7000Address, cmd, 1); + _i2c.read(AS7000Address, rawdata, 7, false); + wait_ms(10); + //update(); + hrm.transaction_id = rawdata[0]; + hrm.status = rawdata[1]; + hrm.hreat_rate = rawdata[2]; + hrm.signal_QA = rawdata[3]; + hrm.LED_current = ((rawdata[4]<<8)+rawdata[5]); + hrm.SYNC = rawdata[6]; + } } \ No newline at end of file