Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
AS7000.cpp@1:510ee396d140, 2017-05-06 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |