Andy Little
/
hmc5883_test
Detect a HMC5883 magnetometer by reading the id registers for NUCLEO-L432KC
main.cpp@0:10e9548cdb3d, 2018-08-30 (annotated)
- Committer:
- skyscraper
- Date:
- Thu Aug 30 13:36:05 2018 +0000
- Revision:
- 0:10e9548cdb3d
- Child:
- 1:8cd11758eff3
initial commit: read the 3 config bytes on a HMC5883 mag. Tested and working, though automatic drag and drop upload fails fro some reason
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
skyscraper | 0:10e9548cdb3d | 1 | |
skyscraper | 0:10e9548cdb3d | 2 | #include "mbed.h" |
skyscraper | 0:10e9548cdb3d | 3 | #include <I2C.h> |
skyscraper | 0:10e9548cdb3d | 4 | #include <Serial.h> |
skyscraper | 0:10e9548cdb3d | 5 | |
skyscraper | 0:10e9548cdb3d | 6 | namespace { |
skyscraper | 0:10e9548cdb3d | 7 | DigitalOut led1(LED1); |
skyscraper | 0:10e9548cdb3d | 8 | |
skyscraper | 0:10e9548cdb3d | 9 | Serial pc(USBTX, USBRX); // tx, rx |
skyscraper | 0:10e9548cdb3d | 10 | |
skyscraper | 0:10e9548cdb3d | 11 | I2C i2c(PA_10,PA_9); // I2C1 |
skyscraper | 0:10e9548cdb3d | 12 | |
skyscraper | 0:10e9548cdb3d | 13 | const uint8_t i2c_addr = 0x3D; |
skyscraper | 0:10e9548cdb3d | 14 | // idreg |
skyscraper | 0:10e9548cdb3d | 15 | const char id_regA = 10U; |
skyscraper | 0:10e9548cdb3d | 16 | const char id_regB = 11U; |
skyscraper | 0:10e9548cdb3d | 17 | const char id_regC = 12U; |
skyscraper | 0:10e9548cdb3d | 18 | } |
skyscraper | 0:10e9548cdb3d | 19 | |
skyscraper | 0:10e9548cdb3d | 20 | int main() |
skyscraper | 0:10e9548cdb3d | 21 | { |
skyscraper | 0:10e9548cdb3d | 22 | //wait for mag to init |
skyscraper | 0:10e9548cdb3d | 23 | Thread::wait(500); |
skyscraper | 0:10e9548cdb3d | 24 | // move pointer to loc |
skyscraper | 0:10e9548cdb3d | 25 | i2c.write(i2c_addr,&id_regA,1); |
skyscraper | 0:10e9548cdb3d | 26 | char id_input[4]; |
skyscraper | 0:10e9548cdb3d | 27 | i2c.read(i2c_addr,id_input,3); |
skyscraper | 0:10e9548cdb3d | 28 | id_input[3] = '\0'; |
skyscraper | 0:10e9548cdb3d | 29 | pc.printf("config got %s\n",id_input); |
skyscraper | 0:10e9548cdb3d | 30 | //check we are still running |
skyscraper | 0:10e9548cdb3d | 31 | for (;;){ |
skyscraper | 0:10e9548cdb3d | 32 | led1 = !led1; |
skyscraper | 0:10e9548cdb3d | 33 | Thread::wait(250); |
skyscraper | 0:10e9548cdb3d | 34 | } |
skyscraper | 0:10e9548cdb3d | 35 | } |