Sog Yang / AS7000
Committer:
sog_yang
Date:
Sat May 06 00:56:47 2017 +0000
Revision:
1:510ee396d140
Parent:
0:aa97de8e628a
Child:
2:447946334c29
Add API Documents.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sog_yang 0:aa97de8e628a 1 #include "AS7000.h"
sog_yang 0:aa97de8e628a 2 #include "mbed.h"
sog_yang 0:aa97de8e628a 3
sog_yang 0:aa97de8e628a 4 DigitalOut AS7000_GPIO8(p5); //NNN50-P5 map to GPIO-8 for AS7000 on/off
sog_yang 0:aa97de8e628a 5 DigitalInOut AS7000_INT(p4); //NNN50-P4 GPIO-5 for AS7000 INT
sog_yang 0:aa97de8e628a 6
sog_yang 0:aa97de8e628a 7
sog_yang 0:aa97de8e628a 8 AS7000::AS7000(PinName SDA, PinName SCL) : _i2c(SDA,SCL){
sog_yang 0:aa97de8e628a 9 //Set I2C fast and bring reset line high
sog_yang 1:510ee396d140 10 _i2c.frequency(400000);
sog_yang 0:aa97de8e628a 11 address = AS7000Address;
sog_yang 0:aa97de8e628a 12
sog_yang 0:aa97de8e628a 13 AS7000_INT.mode(PullNone);
sog_yang 0:aa97de8e628a 14
sog_yang 0:aa97de8e628a 15 AS7000_INT.output();
sog_yang 0:aa97de8e628a 16
sog_yang 0:aa97de8e628a 17 AS7000_GPIO8.write(1); // Power OFF AS7000
sog_yang 0:aa97de8e628a 18 AS7000_INT.write(1); // AS7000 GPIO OUTPUT LOW
sog_yang 0:aa97de8e628a 19 AS7000_INT.input();
sog_yang 0:aa97de8e628a 20 wait_ms(100);
sog_yang 0:aa97de8e628a 21 }
sog_yang 0:aa97de8e628a 22
sog_yang 0:aa97de8e628a 23 void AS7000::enable(void){
sog_yang 0:aa97de8e628a 24 char cmd[2];
sog_yang 0:aa97de8e628a 25
sog_yang 0:aa97de8e628a 26 AS7000_GPIO8.write(0); //Power ON AS7000
sog_yang 0:aa97de8e628a 27 wait_ms(280); //Wait for > 250ms for booting
sog_yang 0:aa97de8e628a 28
sog_yang 0:aa97de8e628a 29
sog_yang 0:aa97de8e628a 30 cmd[0] = AS7000_STARTUP; //0x04;
sog_yang 0:aa97de8e628a 31 cmd[1] = 0x02;
sog_yang 0:aa97de8e628a 32 _i2c.write(address, cmd, 2);
sog_yang 0:aa97de8e628a 33 wait_ms(35);
sog_yang 0:aa97de8e628a 34
sog_yang 0:aa97de8e628a 35 }
sog_yang 0:aa97de8e628a 36
sog_yang 0:aa97de8e628a 37 void AS7000::update(void){
sog_yang 0:aa97de8e628a 38 hrm.transaction_id = rawdata[0];
sog_yang 0:aa97de8e628a 39 hrm.status = rawdata[1];
sog_yang 0:aa97de8e628a 40 hrm.hreat_rate = rawdata[2];
sog_yang 0:aa97de8e628a 41 hrm.signal_QA = rawdata[3];
sog_yang 0:aa97de8e628a 42 hrm.LED_current = ((rawdata[4]<<8)+rawdata[5]);
sog_yang 0:aa97de8e628a 43 hrm.SYNC = rawdata[6];
sog_yang 0:aa97de8e628a 44 }
sog_yang 0:aa97de8e628a 45
sog_yang 0:aa97de8e628a 46 void AS7000::hr_only(void){
sog_yang 0:aa97de8e628a 47 char cmd[2];
sog_yang 0:aa97de8e628a 48 cmd[0] = HR_ONLY;
sog_yang 0:aa97de8e628a 49 if(AS7000_INT == 0) {
sog_yang 0:aa97de8e628a 50 _i2c.write(address, cmd, 1);
sog_yang 0:aa97de8e628a 51 _i2c.read(address, rawdata, 7, false);
sog_yang 0:aa97de8e628a 52 wait_ms(10);
sog_yang 0:aa97de8e628a 53 update();
sog_yang 0:aa97de8e628a 54 }
sog_yang 0:aa97de8e628a 55 }