Steve Mylroie
/
BME280_Tests_5BM
MBed 5 version of BME280 test verify a BME280 can be reset via the I2C Bus
main.cpp@0:8ffd97155ff2, 2017-04-14 (annotated)
- Committer:
- Roietronics
- Date:
- Fri Apr 14 02:03:45 2017 +0000
- Revision:
- 0:8ffd97155ff2
Update to MBED OS 5.4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Roietronics | 0:8ffd97155ff2 | 1 | #include "mbed.h" |
Roietronics | 0:8ffd97155ff2 | 2 | |
Roietronics | 0:8ffd97155ff2 | 3 | I2C i2c(I2C_SDA , I2C_SCL ); |
Roietronics | 0:8ffd97155ff2 | 4 | Serial debug(USBTX, USBRX); |
Roietronics | 0:8ffd97155ff2 | 5 | |
Roietronics | 0:8ffd97155ff2 | 6 | int main() { |
Roietronics | 0:8ffd97155ff2 | 7 | char buffer[2]; |
Roietronics | 0:8ffd97155ff2 | 8 | buffer[1] = 0xE0; |
Roietronics | 0:8ffd97155ff2 | 9 | buffer[0] = 0x86; |
Roietronics | 0:8ffd97155ff2 | 10 | int count = 2; |
Roietronics | 0:8ffd97155ff2 | 11 | int address = 0x77; |
Roietronics | 0:8ffd97155ff2 | 12 | int error; |
Roietronics | 0:8ffd97155ff2 | 13 | // int i2c_frequency = 200 * 1000; |
Roietronics | 0:8ffd97155ff2 | 14 | int i2c_frequency = 100 * 1000; |
Roietronics | 0:8ffd97155ff2 | 15 | debug.printf("\nI2C BME280 Rest Test"); |
Roietronics | 0:8ffd97155ff2 | 16 | |
Roietronics | 0:8ffd97155ff2 | 17 | i2c.frequency(i2c_frequency); |
Roietronics | 0:8ffd97155ff2 | 18 | |
Roietronics | 0:8ffd97155ff2 | 19 | i2c.start(); |
Roietronics | 0:8ffd97155ff2 | 20 | error = i2c.write(address << 1); //We shift it left because mbed takes in 8 bit addreses |
Roietronics | 0:8ffd97155ff2 | 21 | i2c.stop(); |
Roietronics | 0:8ffd97155ff2 | 22 | if (error == 1) |
Roietronics | 0:8ffd97155ff2 | 23 | { |
Roietronics | 0:8ffd97155ff2 | 24 | debug.printf("\nI2C device found at address 0x%X", address); |
Roietronics | 0:8ffd97155ff2 | 25 | } |
Roietronics | 0:8ffd97155ff2 | 26 | else |
Roietronics | 0:8ffd97155ff2 | 27 | { |
Roietronics | 0:8ffd97155ff2 | 28 | debug.printf("\nDevice at IC address Ox%X, not responding", address); |
Roietronics | 0:8ffd97155ff2 | 29 | } |
Roietronics | 0:8ffd97155ff2 | 30 | |
Roietronics | 0:8ffd97155ff2 | 31 | i2c.start(); |
Roietronics | 0:8ffd97155ff2 | 32 | error = i2c.write(address << 1, buffer, count); //We shift it left because mbed takes in 8 bit addreses |
Roietronics | 0:8ffd97155ff2 | 33 | i2c.stop(); |
Roietronics | 0:8ffd97155ff2 | 34 | if (error == 1) |
Roietronics | 0:8ffd97155ff2 | 35 | { |
Roietronics | 0:8ffd97155ff2 | 36 | debug.printf("\nBME280 reset request send success"); |
Roietronics | 0:8ffd97155ff2 | 37 | } |
Roietronics | 0:8ffd97155ff2 | 38 | else |
Roietronics | 0:8ffd97155ff2 | 39 | { |
Roietronics | 0:8ffd97155ff2 | 40 | debug.printf("\nBME280 reset request send failed Error Code: %d", error); |
Roietronics | 0:8ffd97155ff2 | 41 | } |
Roietronics | 0:8ffd97155ff2 | 42 | debug.printf("\ndone\n"); |
Roietronics | 0:8ffd97155ff2 | 43 | } |