Detect a HMC5883 magnetometer by reading the id registers for NUCLEO-L432KC

main.cpp

Committer:
skyscraper
Date:
2018-08-30
Revision:
0:10e9548cdb3d
Child:
1:8cd11758eff3

File content as of revision 0:10e9548cdb3d:


#include "mbed.h"
#include <I2C.h>
#include <Serial.h>

namespace {
    DigitalOut led1(LED1);
    
    Serial pc(USBTX, USBRX); // tx, rx
    
    I2C i2c(PA_10,PA_9); // I2C1
    
    const uint8_t i2c_addr = 0x3D;
    // idreg
    const char id_regA = 10U;
    const char id_regB = 11U;
    const char id_regC = 12U;
}

int main()
{
    //wait for mag to init
    Thread::wait(500);
    // move pointer to loc
    i2c.write(i2c_addr,&id_regA,1);
    char id_input[4];
    i2c.read(i2c_addr,id_input,3);
    id_input[3] = '\0';
    pc.printf("config got %s\n",id_input);
    //check we are still running
    for (;;){
       led1 = !led1;
       Thread::wait(250);
    }
}